1 """Fixer that changes input(...) into eval(input(...)).""" 2 # Author: Andre Roberge 3 4 # Local imports 5 from .. import fixer_base 6 from ..fixer_util import Call, Name 7 from .. import patcomp 8 9 10 context = patcomp.compile_pattern("power< 'eval' trailer< '(' any ')' > >") 11 12 13 class 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