[Python-3000] PEP: rename it.next() to it.__next__(), add a next() built-in

Collin Winter collinw at gmail.com
Mon Mar 5 17:28:44 CET 2007


On 3/5/07, Ka-Ping Yee <python-dev at zesty.ca> wrote:
[snip]
> Transition Plan
> ===============
>
> Two additional transformations will be added to the 2to3 translation
> tool [2]_:
>
> *   Method definitions named ``next`` will be renamed to ``__next__``.
>
> *   Explicit calls to the ``next`` method will be replaced with calls
>     to the built-in ``next`` function.  For example, ``x.next()`` will
>     become ``next(x)``.
>
> If the module being processed already contains a top-level function
> definition named ``next``, the second transformation will not be done;
> instead, calls to ``x.next()`` will be replaced with ``x.__next__()``
> and a warning will be emitted.

The basic transformations for this are (relatively) easy to implement.
Basing the second transformation on the absence of a top-level
function definition (don't forget assignments and imports!) for
"next", though, is going to require some surgery to 2to3's internals.
I'll see what I can do.

Collin Winter


More information about the Python-3000 mailing list