[Python-checkins] cpython (2.7): enumerate only requires an iterable (closes #16573)

benjamin.peterson python-checkins at python.org
Thu Nov 29 16:59:02 CET 2012


http://hg.python.org/cpython/rev/2bb604a691de
changeset: 80656:2bb604a691de
branch: 2.7
parent: 80651:ea4bdf5a2e69
user: Benjamin Peterson <benjamin at python.org>
date: Thu Nov 29 10:55:22 2012 -0500
summary:
 enumerate only requires an iterable (closes #16573)
Patch by Jonathan Kotta.
files:
 Lib/lib2to3/fixer_util.py | 12 ++++++------
 Lib/lib2to3/tests/test_fixers.py | 12 ++++++++++++
 2 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/Lib/lib2to3/fixer_util.py b/Lib/lib2to3/fixer_util.py
--- a/Lib/lib2to3/fixer_util.py
+++ b/Lib/lib2to3/fixer_util.py
@@ -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<node=any any*> ')' >
 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 --git a/Lib/lib2to3/tests/test_fixers.py b/Lib/lib2to3/tests/test_fixers.py
--- a/Lib/lib2to3/tests/test_fixers.py
+++ b/Lib/lib2to3/tests/test_fixers.py
@@ -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)]"""
-- 
Repository URL: http://hg.python.org/cpython


More information about the Python-checkins mailing list

AltStyle によって変換されたページ (->オリジナル) /