source: python/trunk/Lib/lib2to3/fixes/fix_zip.py

Last change on this file was 391, checked in by dmik, 11 years ago

python: Merge vendor 2.7.6 to trunk.

  • Property svn:eol-style set to native
File size: 904 bytes
Line 
1"""
2Fixer that changes zip(seq0, seq1, ...) into list(zip(seq0, seq1, ...)
3unless there exists a 'from future_builtins import zip' statement in the
4top-level namespace.
5
6We avoid the transformation if the zip() call is directly contained in
7iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:.
8"""
9
10# Local imports
11from .. import fixer_base
12from ..fixer_util import Name, Call, in_special_context
13
14class FixZip(fixer_base.ConditionalFix):
15
16 BM_compatible = True
17 PATTERN = """
18 power< 'zip' args=trailer< '(' [any] ')' >
19 >
20 """
21
22 skip_on = "future_builtins.zip"
23
24 def transform(self, node, results):
25 if self.should_skip(node):
26 return
27
28 if in_special_context(node):
29 return None
30
31 new = node.clone()
32 new.prefix = u""
33 new = Call(Name(u"list"), [new])
34 new.prefix = node.prefix
35 return new
Note: See TracBrowser for help on using the repository browser.