]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Merged revisions 67376 via svnmerge from
authorGeorg Brandl <georg@python.org>
Fri, 5 Dec 2008 09:02:42 +0000 (09:02 +0000)
committerGeorg Brandl <georg@python.org>
Fri, 5 Dec 2008 09:02:42 +0000 (09:02 +0000)
svn+ssh://pythondev@svn.python.org/python/trunk

................
  r67376 | benjamin.peterson | 2008-11-25 05:07:45 +0100 (Tue, 25 Nov 2008) | 17 lines

  Merged revisions 67183,67191,67371 via svnmerge from
  svn+ssh://pythondev@svn.python.org/sandbox/trunk/2to3/lib2to3

  ........
    r67183 | benjamin.peterson | 2008-11-10 21:51:33 -0600 (Mon, 10 Nov 2008) | 1 line

    handle 'import x as y' in fix_imports; this still needs more work...
  ........
    r67191 | benjamin.peterson | 2008-11-11 17:24:51 -0600 (Tue, 11 Nov 2008) | 1 line

    super() is good
  ........
    r67371 | benjamin.peterson | 2008-11-24 16:02:00 -0600 (Mon, 24 Nov 2008) | 1 line

    don't blow up in the metaclass fixer when assignments in the class statement aren't simple
  ........
................

Lib/lib2to3/fixes/fix_import.py
Lib/lib2to3/fixes/fix_metaclass.py
Lib/lib2to3/tests/test_fixers.py

index 6951546896767e1b8a09c4a16a50d28b33615127..58e914913fd711a0eaaf3579fc943bd9a79da075 100644 (file)
@@ -13,7 +13,7 @@ Becomes:
 # Local imports
 from .. import fixer_base
 from os.path import dirname, join, exists, pathsep
-from ..fixer_util import FromImport
+from ..fixer_util import FromImport, syms
 
 class FixImport(fixer_base.BaseFix):
 
@@ -26,11 +26,14 @@ class FixImport(fixer_base.BaseFix):
     def transform(self, node, results):
         imp = results['imp']
 
-        if unicode(imp).startswith('.'):
+        mod_name = unicode(imp.children[0] if imp.type == syms.dotted_as_name \
+                               else imp)
+
+        if mod_name.startswith('.'):
             # Already a new-style import
             return
 
-        if not probably_a_local_import(unicode(imp), self.filename):
+        if not probably_a_local_import(mod_name, self.filename):
             # I guess this is a global import -- skip it!
             return
 
index c2f4b7f07ff28ff8e05a6adf96d805cf168eaef1..b508f5f3809f5a49018099fdb9de7a1f3b7d5460 100644 (file)
@@ -110,8 +110,11 @@ def find_metas(cls_node):
         if simple_node.type == syms.simple_stmt and simple_node.children:
             expr_node = simple_node.children[0]
             if expr_node.type == syms.expr_stmt and expr_node.children:
-                leaf_node = expr_node.children[0]
-                if leaf_node.value == '__metaclass__':
+                # Check if the expr_node is a simple assignment.
+                left_node = expr_node.children[0]
+                if isinstance(left_node, Leaf) and \
+                        left_node.value == '__metaclass__':
+                    # We found a assignment to __metaclass__.
                     fixup_simple_stmt(node, i, simple_node)
                     remove_trailing_newline(simple_node)
                     yield (node, i, simple_node)
index 1098d4c001b86da8e29f1e118d68c16a0eb73abe..209d5d765926f246e2540021d2a4613b5a22ff11 100755 (executable)
@@ -2656,7 +2656,7 @@ class Test_map(FixerTestCase):
 
     def check(self, b, a):
         self.unchanged("from future_builtins import map; " + b, a)
-        FixerTestCase.check(self, b, a)
+        super(Test_map, self).check(b, a)
 
     def test_prefix_preservation(self):
         b = """x =    map(   f,    'abc'   )"""
@@ -2763,7 +2763,7 @@ class Test_zip(FixerTestCase):
 
     def check(self, b, a):
         self.unchanged("from future_builtins import zip; " + b, a)
-        FixerTestCase.check(self, b, a)
+        super(Test_zip, self).check(b, a)
 
     def test_zip_basic(self):
         b = """x = zip(a, b, c)"""
@@ -3308,7 +3308,7 @@ class Test_import(FixerTestCase):
     fixer = "import"
 
     def setUp(self):
-        FixerTestCase.setUp(self)
+        super(Test_import, self).setUp()
         # Need to replace fix_import's exists method
         # so we can check that it's doing the right thing
         self.files_checked = []
@@ -3327,9 +3327,9 @@ class Test_import(FixerTestCase):
 
     def check_both(self, b, a):
         self.always_exists = True
-        FixerTestCase.check(self, b, a)
+        super(Test_import, self).check(b, a)
         self.always_exists = False
-        FixerTestCase.unchanged(self, b)
+        super(Test_import, self).unchanged(b)
 
     def test_files_checked(self):
         def p(path):
@@ -3406,6 +3406,11 @@ class Test_import(FixerTestCase):
         a = "from . import foo, bar"
         self.check_both(b, a)
 
+    def test_import_as(self):
+        b = "import foo as x"
+        a = "from . import foo as x"
+        self.check_both(b, a)
+
     def test_dotted_import(self):
         b = "import foo.bar"
         a = "from . import foo.bar"
@@ -3800,6 +3805,17 @@ class Test_metaclass(FixerTestCase):
         """
         self.check(b, a)
 
+        b = """
+        class X:
+            __metaclass__ = Meta
+            save.py = 23
+        """
+        a = """
+        class X(metaclass=Meta):
+            save.py = 23
+        """
+        self.check(b, a)
+
 
 class Test_getcwdu(FixerTestCase):