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