source: python/trunk/Lib/lib2to3/fixes/fix_paren.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: 1.2 KB
Line 
1"""Fixer that addes parentheses where they are required
2
3This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``."""
4
5# By Taek Joo Kim and Benjamin Peterson
6
7# Local imports
8from .. import fixer_base
9from ..fixer_util import LParen, RParen
10
11# XXX This doesn't support nested for loops like [x for x in 1, 2 for x in 1, 2]
12class FixParen(fixer_base.BaseFix):
13 BM_compatible = True
14
15 PATTERN = """
16 atom< ('[' | '(')
17 (listmaker< any
18 comp_for<
19 'for' NAME 'in'
20 target=testlist_safe< any (',' any)+ [',']
21 >
22 [any]
23 >
24 >
25 |
26 testlist_gexp< any
27 comp_for<
28 'for' NAME 'in'
29 target=testlist_safe< any (',' any)+ [',']
30 >
31 [any]
32 >
33 >)
34 (']' | ')') >
35 """
36
37 def transform(self, node, results):
38 target = results["target"]
39
40 lparen = LParen()
41 lparen.prefix = target.prefix
42 target.prefix = u"" # Make it hug the parentheses
43 target.insert_child(0, lparen)
44 target.append_child(RParen())
Note: See TracBrowser for help on using the repository browser.