diff options
author | Martin v. Löwis <martin@v.loewis.de> | 2008-03-24 00:50:58 (GMT) |
---|---|---|
committer | Martin v. Löwis <martin@v.loewis.de> | 2008-03-24 00:50:58 (GMT) |
commit | a675ef1141e2533bd5596222d0a64b6a3f74d2d0 (patch) | |
tree | 3f26e263209e15f5c885538eed005e9aaa736351 /Lib/lib2to3/fixes/fix_import.py | |
parent | fe337bfd0d89c62917e3625111c65f4aa187c6b4 (diff) | |
download | cpython-a675ef1141e2533bd5596222d0a64b6a3f74d2d0.zip cpython-a675ef1141e2533bd5596222d0a64b6a3f74d2d0.tar.gz cpython-a675ef1141e2533bd5596222d0a64b6a3f74d2d0.tar.bz2 |
Merged revisions 61825 via svnmerge from
svn+ssh://pythondev@svn.python.org/python/trunk
................
r61825 | martin.v.loewis | 2008-03-24 01:46:53 +0100 (Mo, 24 Mär 2008) | 17 lines
Merged revisions 61724-61824 via svnmerge from
svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3
........
r61730 | martin.v.loewis | 2008-03-22 02:20:58 +0100 (Sa, 22 Mär 2008) | 2 lines
More explicit relative imports.
........
r61755 | david.wolever | 2008-03-22 21:33:52 +0100 (Sa, 22 Mär 2008) | 1 line
Fixing #2446 -- 2to3 now translates 'import foo' to 'from . import foo'
........
r61824 | david.wolever | 2008-03-24 01:30:24 +0100 (Mo, 24 Mär 2008) | 3 lines
Fixed a bug where 'from itertools import izip' would return 'from itertools import'
........
................
Diffstat (limited to 'Lib/lib2to3/fixes/fix_import.py')
-rw-r--r-- | Lib/lib2to3/fixes/fix_import.py | 29 |
1 files changed, 17 insertions, 12 deletions
diff --git a/Lib/lib2to3/fixes/fix_import.py b/Lib/lib2to3/fixes/fix_import.py index 52e8408..c188fce 100644 --- a/Lib/lib2to3/fixes/fix_import.py +++ b/Lib/lib2to3/fixes/fix_import.py @@ -7,19 +7,20 @@ Becomes: And this import: import spam Becomes: - import .spam + from . import spam """ # Local imports from . import basefix from os.path import dirname, join, exists, pathsep +from .util import FromImport class FixImport(basefix.BaseFix): PATTERN = """ - import_from< 'from' imp=any 'import' any > + import_from< type='from' imp=any 'import' any > | - import_name< 'import' imp=any > + import_name< type='import' imp=any > """ def transform(self, node, results): @@ -33,15 +34,19 @@ class FixImport(basefix.BaseFix): # I guess this is a global import -- skip it! return - # Some imps are top-level (eg: 'import ham') - # some are first level (eg: 'import ham.eggs') - # some are third level (eg: 'import ham.eggs as spam') - # Hence, the loop - while not hasattr(imp, 'value'): - imp = imp.children[0] - - imp.value = "." + imp.value - node.changed() + if results['type'].value == 'from': + # Some imps are top-level (eg: 'import ham') + # some are first level (eg: 'import ham.eggs') + # some are third level (eg: 'import ham.eggs as spam') + # Hence, the loop + while not hasattr(imp, 'value'): + imp = imp.children[0] + imp.value = "." + imp.value + node.changed() + else: + new = FromImport('.', getattr(imp, 'content', None) or [imp]) + new.prefix = node.get_prefix() + node = new return node def probably_a_local_import(imp_name, file_path): |