Skip to content

Commit c3cd373

Browse files
committed
Merge pull request #77 from brettcannon/future_import
Use absolute import
2 parents 638cba8 + c4405e6 commit c3cd373

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

42 files changed

+158
-28
lines changed

__main__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import absolute_import
2+
13
from libmodernize import main
24

35
if __name__ == '__main__':

libmodernize/__init__.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
from lib2to3.fixer_util import FromImport, Newline, find_root
1+
from __future__ import absolute_import
2+
3+
from lib2to3 import fixer_util
24
from lib2to3.pytree import Leaf, Node
35
from lib2to3.pygram import python_symbols as syms
46
from lib2to3.pgen2 import token
@@ -41,7 +43,7 @@ def check_future_import(node):
4143

4244
def add_future(node, symbol):
4345

44-
root = find_root(node)
46+
root = fixer_util.find_root(node)
4547

4648
for idx, node in enumerate(root.children):
4749
if node.type == syms.simple_stmt and \
@@ -56,6 +58,12 @@ def add_future(node, symbol):
5658
# already imported
5759
return
5860

59-
import_ = FromImport('__future__', [Leaf(token.NAME, symbol, prefix=" ")])
60-
children = [import_, Newline()]
61+
import_ = fixer_util.FromImport('__future__',
62+
[Leaf(token.NAME, symbol, prefix=" ")])
63+
children = [import_, fixer_util.Newline()]
6164
root.insert_child(idx, Node(syms.simple_stmt, children))
65+
66+
67+
def touch_import(package, name, node):
68+
add_future(node, 'absolute_import')
69+
fixer_util.touch_import(package, name, node)

libmodernize/fixes/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88
'lib2to3.fixes.fix_funcattrs',
99
'lib2to3.fixes.fix_has_key',
1010
'lib2to3.fixes.fix_idioms',
11-
'lib2to3.fixes.fix_import',
1211
'lib2to3.fixes.fix_methodattrs',
1312
'lib2to3.fixes.fix_ne',
1413
'lib2to3.fixes.fix_numliterals',

libmodernize/fixes/fix_basestring.py

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1+
from __future__ import absolute_import
2+
13
from lib2to3 import fixer_base
2-
from lib2to3.fixer_util import touch_import, Name
4+
from lib2to3 import fixer_util
5+
import libmodernize
36

47

58
class FixBasestring(fixer_base.BaseFix):
69
BM_compatible = True
710
PATTERN = """'basestring'"""
811

912
def transform(self, node, results):
10-
touch_import(None, u'six', node)
11-
return Name(u'six.string_types', prefix=node.prefix)
13+
libmodernize.touch_import(None, u'six', node)
14+
return fixer_util.Name(u'six.string_types', prefix=node.prefix)

libmodernize/fixes/fix_dict_six.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
"""Fixer for iterkeys() -> six.iterkeys(), and similarly for iteritems and itervalues."""
2+
from __future__ import absolute_import
23

34
# Local imports
45
from lib2to3 import fixer_base
56
from lib2to3 import fixer_util
67
from lib2to3 import patcomp
78
from lib2to3.fixes import fix_dict
9+
import libmodernize
810

911

1012
class FixDictSix(fix_dict.FixDict):
@@ -13,7 +15,7 @@ def transform_iter(self, method_name, node, base):
1315
"""Call six.iteritems() and friends."""
1416
if method_name.startswith(u'view'):
1517
method_name = u'iter' + method_name[4:]
16-
fixer_util.touch_import(None, u'six', node)
18+
libmodernize.touch_import(None, u'six', node)
1719
new_node = [n.clone() for n in base]
1820
new_node[0].prefix = u''
1921
name = fixer_util.Name(u'six.' + method_name, prefix=node.prefix)

libmodernize/fixes/fix_file.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
from __future__ import absolute_import
2+
13
from lib2to3 import fixer_base
24
from lib2to3.fixer_util import Name
35

@@ -6,7 +8,7 @@ class FixFile(fixer_base.BaseFix):
68

79
BM_compatible = True
810
order = 'pre'
9-
11+
1012
PATTERN = """
1113
power< name='file'
1214
trailer<

libmodernize/fixes/fix_filter.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# Copyright 2008 Armin Ronacher.
22
# Licensed to PSF under a Contributor Agreement.
3+
from __future__ import absolute_import
34

45
from lib2to3 import fixer_base
5-
from lib2to3.fixer_util import Call, Name, touch_import, in_special_context
6+
from lib2to3.fixer_util import Call, Name, in_special_context
7+
from libmodernize import touch_import
68

79

810
class FixFilter(fixer_base.ConditionalFix):

libmodernize/fixes/fix_import.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
from __future__ import absolute_import
2+
3+
from lib2to3.fixes import fix_import
4+
import libmodernize
5+
6+
7+
class FixImport(fix_import.FixImport):
8+
9+
# Make sure this runs before any other fixer to guarantee that any other
10+
# added absolute_import doesn't block this fixer's execution.
11+
run_order = 1
12+
13+
def transform(self, node, results):
14+
results = super(FixImport, self).transform(node, results)
15+
if results is None:
16+
return
17+
libmodernize.add_future(node, 'absolute_import')
18+
return results

libmodernize/fixes/fix_input_six.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,11 @@
77
#
88
# Copyright (c) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
99
# 2011, 2012, 2013, 2014 Python Software Foundation. All rights reserved.
10+
from __future__ import absolute_import
1011

1112
from lib2to3 import fixer_base
12-
from lib2to3.fixer_util import Call, Name, touch_import
13+
from lib2to3.fixer_util import Call, Name
14+
from libmodernize import touch_import
1315

1416

1517
class FixInputSix(fixer_base.ConditionalFix):

libmodernize/fixes/fix_map.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
# Copyright 2008 Armin Ronacher.
22
# Licensed to PSF under a Contributor Agreement.
3+
from __future__ import absolute_import
34

45
from lib2to3 import fixer_base
5-
from lib2to3.fixer_util import Call, Name, touch_import, in_special_context
6+
from lib2to3.fixer_util import Call, Name, in_special_context
7+
from libmodernize import touch_import
68

79

810
class FixMap(fixer_base.ConditionalFix):

0 commit comments

Comments
 (0)