1# Copyright 2008 Armin Ronacher. 2# Licensed to PSF under a Contributor Agreement. 3 4"""Fixer for reduce(). 5 6Makes sure reduce() is imported from the functools module if reduce is 7used in that module. 8""" 9 10from lib2to3 import fixer_base 11from lib2to3.fixer_util import touch_import 12 13 14 15class FixReduce(fixer_base.BaseFix): 16 17 BM_compatible = True 18 order = "pre" 19 20 PATTERN = """ 21 power< 'reduce' 22 trailer< '(' 23 arglist< ( 24 (not(argument<any '=' any>) any ',' 25 not(argument<any '=' any>) any) | 26 (not(argument<any '=' any>) any ',' 27 not(argument<any '=' any>) any ',' 28 not(argument<any '=' any>) any) 29 ) > 30 ')' > 31 > 32 """ 33 34 def transform(self, node, results): 35 touch_import(u'functools', u'reduce', node) 36