diff -r ddcf09a348ca Lib/lib2to3/fixer_util.py --- a/Lib/lib2to3/fixer_util.py Wed Nov 28 19:24:44 2012 +0200 +++ b/Lib/lib2to3/fixer_util.py Wed Nov 28 17:52:44 2012 -0600 @@ -165,7 +165,7 @@ consuming_calls = set(["sorted", "list", "set", "any", "all", "tuple", "sum", - "min", "max"]) + "min", "max", "enumerate"]) def attr_chain(obj, attr): """Follow an attribute chain. @@ -192,14 +192,14 @@ p1 = """ power< ( 'iter' | 'list' | 'tuple' | 'sorted' | 'set' | 'sum' | - 'any' | 'all' | (any* trailer< '.' 'join' >) ) + 'any' | 'all' | 'enumerate' | (any* trailer< '.' 'join' >) ) trailer< '(' node=any ')' > any* > """ p2 = """ power< - 'sorted' + ( 'sorted' | 'enumerate' ) trailer< '(' arglist ')' > any* > @@ -207,14 +207,14 @@ pats_built = False def in_special_context(node): """ Returns true if node is in an environment where all that is required - of it is being itterable (ie, it doesn't matter if it returns a list - or an itterator). + of it is being iterable (ie, it doesn't matter if it returns a list + or an iterator). See test_map_nochange in test_fixers.py for some examples and tests. """ global p0, p1, p2, pats_built if not pats_built: + p0 = patcomp.compile_pattern(p0) p1 = patcomp.compile_pattern(p1) - p0 = patcomp.compile_pattern(p0) p2 = patcomp.compile_pattern(p2) pats_built = True patterns = [p0, p1, p2] diff -r ddcf09a348ca Lib/lib2to3/tests/test_fixers.py --- a/Lib/lib2to3/tests/test_fixers.py Wed Nov 28 19:24:44 2012 +0200 +++ b/Lib/lib2to3/tests/test_fixers.py Wed Nov 28 17:52:44 2012 -0600 @@ -2981,6 +2981,10 @@ self.unchanged(a) a = """sorted(filter(f, 'abc'), key=blah)[0]""" self.unchanged(a) + a = """enumerate(filter(f, 'abc'))""" + self.unchanged(a) + a = """enumerate(filter(f, 'abc'), start=1)""" + self.unchanged(a) a = """for i in filter(f, 'abc'): pass""" self.unchanged(a) a = """[x for x in filter(f, 'abc')]""" @@ -3089,6 +3093,10 @@ self.unchanged(a) a = """sorted(map(f, 'abc'), key=blah)[0]""" self.unchanged(a) + a = """enumerate(map(f, 'abc'))""" + self.unchanged(a) + a = """enumerate(map(f, 'abc'), start=1)""" + self.unchanged(a) a = """for i in map(f, 'abc'): pass""" self.unchanged(a) a = """[x for x in map(f, 'abc')]""" @@ -3152,6 +3160,10 @@ self.unchanged(a) a = """sorted(zip(a, b), key=blah)[0]""" self.unchanged(a) + a = """enumerate(zip(a, b))""" + self.unchanged(a) + a = """enumerate(zip(a, b), start=1)""" + self.unchanged(a) a = """for i in zip(a, b): pass""" self.unchanged(a) a = """[x for x in zip(a, b)]"""