OLD | NEW |
(Empty) | |
| 1 # coding: utf-8 |
| 2 """ |
| 3 Fixer for the execfile() function on Py2, which was removed in Py3. |
| 4 |
| 5 The Lib/lib2to3/fixes/fix_execfile.py module has some problems: see |
| 6 python-future issue #37. This fixer merely imports execfile() from |
| 7 past.builtins and leaves the code alone. |
| 8 |
| 9 Adds this import line:: |
| 10 |
| 11 from past.builtins import execfile |
| 12 |
| 13 for the function execfile() that was removed from Py3. |
| 14 """ |
| 15 |
| 16 from __future__ import unicode_literals |
| 17 from lib2to3 import fixer_base |
| 18 |
| 19 from libfuturize.fixer_util import touch_import_top |
| 20 |
| 21 |
| 22 expression = "name='execfile'" |
| 23 |
| 24 |
| 25 class FixExecfile(fixer_base.BaseFix): |
| 26 BM_compatible = True |
| 27 run_order = 9 |
| 28 |
| 29 PATTERN = """ |
| 30 power< |
| 31 ({0}) trailer< '(' args=[any] ')' > |
| 32 rest=any* > |
| 33 """.format(expression) |
| 34 |
| 35 def transform(self, node, results): |
| 36 name = results["name"] |
| 37 touch_import_top(u'past.builtins', name.value, node) |
| 38 |
OLD | NEW |