|
|
|
|
|
|
|
|
|
|
|
"""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('functools', 'reduce', node) |
|
|
|