1"""Fixer that changes input(...) into eval(input(...)).""" 2# Author: Andre Roberge 3 4# Local imports 5from .. import fixer_base 6from ..fixer_util import Call, Name 7from .. import patcomp 8 9 10context = patcomp.compile_pattern("power< 'eval' trailer< '(' any ')' > >") 11 12 13class FixInput(fixer_base.BaseFix): 14 BM_compatible = True 15 PATTERN = """ 16 power< 'input' args=trailer< '(' [any] ')' > > 17 """ 18 19 def transform(self, node, results): 20 # If we're already wrapped in a eval() call, we're done. 21 if context.match(node.parent.parent): 22 return 23 24 new = node.clone() 25 new.prefix = u"" 26 return Call(Name(u"eval"), [new], prefix=node.prefix) 27