Ah, and not ah :). First of all, the Wikipedia article edit which inserted that paragraph about it being biased seems simply incorrect, which is "good", since you are right and the defaults match, as numpy defaults to unbiased. "R" has two methods "unbiased" and "ML", where I guess "ML" is biased (did not try). They don't have a ddof.

Only thought it through 95%, but I think we *can* allow ddof usage for this case, since the whole squaring stuff does nothing more then estimating the *effective* `N` (If the weights are uniform the effective N is identical to the number of points, if weights are all 0 but M, then effective N is M). So, maybe it might even be an option to pass in an argument like "effective N", and if given we assume repeat type weights using the N passed in, and if it is `None`, we estimate it using the logic which leads to your formula.