equal
deleted
inserted
replaced
|
1 """ |
|
2 Fixer that changes zip(seq0, seq1, ...) into list(zip(seq0, seq1, ...) |
|
3 unless there exists a 'from future_builtins import zip' statement in the |
|
4 top-level namespace. |
|
5 |
|
6 We avoid the transformation if the zip() call is directly contained in |
|
7 iter(<>), list(<>), tuple(<>), sorted(<>), ...join(<>), or for V in <>:. |
|
8 """ |
|
9 |
|
10 # Local imports |
|
11 from .. import fixer_base |
|
12 from ..fixer_util import Name, Call, in_special_context |
|
13 |
|
14 class FixZip(fixer_base.ConditionalFix): |
|
15 |
|
16 PATTERN = """ |
|
17 power< 'zip' args=trailer< '(' [any] ')' > |
|
18 > |
|
19 """ |
|
20 |
|
21 skip_on = "future_builtins.zip" |
|
22 |
|
23 def transform(self, node, results): |
|
24 if self.should_skip(node): |
|
25 return |
|
26 |
|
27 if in_special_context(node): |
|
28 return None |
|
29 |
|
30 new = node.clone() |
|
31 new.set_prefix("") |
|
32 new = Call(Name("list"), [new]) |
|
33 new.set_prefix(node.get_prefix()) |
|
34 return new |