PHP 8.2.30
Preview: fix_next.py Size: 3.11 KB
//opt/alt/python27/lib64/python2.7/lib2to3/fixes/fix_next.py

"""Fixer for it.next() -> next(it), per PEP 3114."""
# Author: Collin Winter

# Things that currently aren't covered:
#   - listcomp "next" names aren't warned
#   - "with" statement targets aren't checked

# Local imports
from ..pgen2 import token
from ..pygram import python_symbols as syms
from .. import fixer_base
from ..fixer_util import Name, Call, find_binding

bind_warning = "Calls to builtin next() possibly shadowed by global binding"


class FixNext(fixer_base.BaseFix):
    BM_compatible = True
    PATTERN = """
    power< base=any+ trailer< '.' attr='next' > trailer< '(' ')' > >
    |
    power< head=any+ trailer< '.' attr='next' > not trailer< '(' ')' > >
    |
    classdef< 'class' any+ ':'
              suite< any*
                     funcdef< 'def'
                              name='next'
                              parameters< '(' NAME ')' > any+ >
                     any* > >
    |
    global=global_stmt< 'global' any* 'next' any* >
    """

    order = "pre" # Pre-order tree traversal

    def start_tree(self, tree, filename):
        super(FixNext, self).start_tree(tree, filename)

        n = find_binding(u'next', tree)
        if n:
            self.warning(n, bind_warning)
            self.shadowed_next = True
        else:
            self.shadowed_next = False

    def transform(self, node, results):
        assert results

        base = results.get("base")
        attr = results.get("attr")
        name = results.get("name")

        if base:
            if self.shadowed_next:
                attr.replace(Name(u"__next__", prefix=attr.prefix))
            else:
                base = [n.clone() for n in base]
                base[0].prefix = u""
                node.replace(Call(Name(u"next", prefix=node.prefix), base))
        elif name:
            n = Name(u"__next__", prefix=name.prefix)
            name.replace(n)
        elif attr:
            # We don't do this transformation if we're assigning to "x.next".
            # Unfortunately, it doesn't seem possible to do this in PATTERN,
            #  so it's being done here.
            if is_assign_target(node):
                head = results["head"]
                if "".join([str(n) for n in head]).strip() == u'__builtin__':
                    self.warning(node, bind_warning)
                return
            attr.replace(Name(u"__next__"))
        elif "global" in results:
            self.warning(node, bind_warning)
            self.shadowed_next = True


### The following functions help test if node is part of an assignment
###  target.

def is_assign_target(node):
    assign = find_assign(node)
    if assign is None:
        return False

    for child in assign.children:
        if child.type == token.EQUAL:
            return False
        elif is_subtree(child, node):
            return True
    return False

def find_assign(node):
    if node.type == syms.expr_stmt:
        return node
    if node.type == syms.simple_stmt or node.parent is None:
        return None
    return find_assign(node.parent)

def is_subtree(root, node):
    if root == node:
        return True
    return any(is_subtree(c, node) for c in root.children)

Directory Contents

Dirs: 0 × Files: 156

Name Size Perms Modified Actions
2.38 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.07 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
2.04 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
984 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
1.56 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.56 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
321 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
846 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
846 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
591 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
1003 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1003 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.73 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.73 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.61 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.27 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.99 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.99 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1002 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.44 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.40 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.01 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.10 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.06 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.44 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.76 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.76 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.06 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.25 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.25 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
645 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.14 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.14 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
547 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
972 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
972 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
452 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
979 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
979 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.15 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
3.16 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.13 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
4.77 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
4.52 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
4.42 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.18 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.25 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
3.25 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
5.56 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
5.38 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
5.38 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
289 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
660 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
660 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
710 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.16 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.16 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.82 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.79 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.79 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.57 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.85 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.85 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.51 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.80 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.80 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.04 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
2.02 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.98 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
477 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
894 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
894 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
2.99 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.02 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.02 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
8.02 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
6.56 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
6.52 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
615 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.16 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.16 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
573 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.03 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.03 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.11 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.57 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.54 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
598 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.11 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.11 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
773 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.29 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.29 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.39 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
5.22 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
5.22 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.20 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.56 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.56 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.80 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.73 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.63 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.87 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
2.49 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.49 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
455 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
989 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
989 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
839 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.28 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.28 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.17 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.50 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
2.50 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
614 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.04 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
1.04 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
1.66 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
2.01 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.01 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
450 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
906 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
906 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.01 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.73 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.73 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.55 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.00 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.00 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
5.45 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
5.46 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
5.46 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.77 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
2.20 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.20 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.24 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.74 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.74 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
8.19 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
7.11 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
7.11 KB lrw-r--r-- 2025-01-08 10:43:35
Edit Download
1.07 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.40 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.40 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
2.64 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.12 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
3.12 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
690 B lrw-r--r-- 2025-01-08 10:43:35
Edit Download
1.18 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.18 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
904 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.37 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
1.37 KB lrw-r--r-- 2025-01-08 10:43:36
Edit Download
47 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
146 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download
146 B lrw-r--r-- 2025-01-08 10:43:36
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).