home *** CD-ROM | disk | FTP | other *** search
- """Fixer that addes parentheses where they are required
-
- This converts ``[x for x in 1, 2]`` to ``[x for x in (1, 2)]``."""
-
- # By Taek Joo Kim and Benjamin Peterson
-
- # Local imports
- from .. import fixer_base
- from ..fixer_util import LParen, RParen
-
- # XXX This doesn't support nested for loops like [x for x in 1, 2 for x in 1, 2]
- class FixParen(fixer_base.BaseFix):
- PATTERN = """
- atom< ('[' | '(')
- (listmaker< any
- comp_for<
- 'for' NAME 'in'
- target=testlist_safe< any (',' any)+ [',']
- >
- [any]
- >
- >
- |
- testlist_gexp< any
- comp_for<
- 'for' NAME 'in'
- target=testlist_safe< any (',' any)+ [',']
- >
- [any]
- >
- >)
- (']' | ')') >
- """
-
- def transform(self, node, results):
- target = results["target"]
-
- lparen = LParen()
- lparen.set_prefix(target.get_prefix())
- target.set_prefix("") # Make it hug the parentheses
- target.insert_child(0, lparen)
- target.append_child(RParen())
-