| # Copyright 2008 Armin Ronacher. | |
| # Licensed to PSF under a Contributor Agreement. | |
| """Fixer for reduce(). | |
| Makes sure reduce() is imported from the functools module if reduce is | |
| used in that module. | |
| """ | |
| from lib2to3 import fixer_base | |
| from lib2to3.fixer_util import touch_import | |
| class FixReduce(fixer_base.BaseFix): | |
| BM_compatible = True | |
| order = "pre" | |
| PATTERN = """ | |
| power< 'reduce' | |
| trailer< '(' | |
| arglist< ( | |
| (not(argument<any '=' any>) any ',' | |
| not(argument<any '=' any>) any) | | |
| (not(argument<any '=' any>) any ',' | |
| not(argument<any '=' any>) any ',' | |
| not(argument<any '=' any>) any) | |
| ) > | |
| ')' > | |
| > | |
| """ | |
| def transform(self, node, results): | |
| touch_import(u'functools', u'reduce', node) |