On 01/27/2014 04:56 AM, Steven D'Aprano wrote (rearranged slightly so I could make my points in order):
I'm confused... you seem to be saying that you are *against* changing
the behaviour of repeat so that:

     repeat(x, -1)

and

     repeat(x, times=-1)

behave the same. Is that actually what you mean, or have I
misunderstood?

I apologize for not making myself clear. But that's part of what I meant, yes: we should preserve the existing behavior of times=-1 when passed in by position or by keyword. However, we should *also* add a deprecation warning when passing times=-1 by keyword, suggesting that they use times=None instead. The idea is that we could eventually remove the PyTuple_Size check and make times=-1 always behave like times=0. In practice it'd be okay with me if we never did, or at least not until Python 4.


Are you rejecting the idea that the current behaviour is an out and out
buggy, and therefore fixing these things can and should occur in a
bug-fix release?

While it's a bug, it's a very minor bug. As Python 3.4 release manager, my position is: Python 3.4 is in beta, so let's not change semantics for purity's sakes now. I'm -0.5 on adding times=None right now, and until we do we can't deprecate the old behavior.


Are there any other functions in the standard library where the
behaviour differs depending on whether an argument is given positionally
or by keyword?

Not that I know of. This instance seems to be purely unintentional; see my latest message on the relevant issue, where I went back and figured out why itertools.repeat behaves like this in the first place:

   http://bugs.python.org/issue19145#msg209440


Cheers,


//arry/
_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
https://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to