[Python-checkins] r81381 - in python/branches/release26-maint: Lib/test/test_import.py Misc/NEWS Python/import.c

brett.cannon python-checkins at python.org
Thu May 20 20:41:08 CEST 2010


Author: brett.cannon
Date: Thu May 20 20:41:08 2010
New Revision: 81381

Log:
Merged revisions 81380 via svnmerge from 
svn+ssh://pythondev@svn.python.org/python/trunk

........
  r81380 | brett.cannon | 2010-05-20 11:37:55 -0700 (Thu, 20 May 2010) | 8 lines
  
  Turned out that if you used explicit relative import syntax
  (e.g. from .os import sep) and it failed, import would still try the implicit
  relative import semantics of an absolute import (from os import sep). That's
  not right, so when level is negative, only do explicit relative import
  semantics.
  
  Fixes issue #7902. Thanks to Meador Inge for the patch.
........


Modified:
   python/branches/release26-maint/   (props changed)
   python/branches/release26-maint/Lib/test/test_import.py
   python/branches/release26-maint/Misc/NEWS
   python/branches/release26-maint/Python/import.c

Modified: python/branches/release26-maint/Lib/test/test_import.py
==============================================================================
--- python/branches/release26-maint/Lib/test/test_import.py	(original)
+++ python/branches/release26-maint/Lib/test/test_import.py	Thu May 20 20:41:08 2010
@@ -417,6 +417,19 @@
         self.assertRaises(ValueError, check_absolute)
         self.assertRaises(ValueError, check_relative)
 
+    def test_absolute_import_without_future(self):
+        # If absolute import syntax is used, then do not try to perform
+        # a relative import in the face of failure.
+        # Issue #7902.
+        try:
+            from .os import sep
+        except ImportError:
+            pass
+        else:
+            self.fail("explicit relative import triggered an "
+                      "implicit relative import")
+
+
 def test_main(verbose=None):
     run_unittest(ImportTest, TestPycRewriting, PathsTests, RelativeImport)
 

Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS	(original)
+++ python/branches/release26-maint/Misc/NEWS	Thu May 20 20:41:08 2010
@@ -12,6 +12,9 @@
 Core and Builtins
 -----------------
 
+- Issue #7902: When using explicit relative import syntax, don't try
+  implicit relative import semantics.
+
 - Issue #7079: Fix a possible crash when closing a file object while using
   it from another thread.  Patch by Daniel Stutzbach.
 

Modified: python/branches/release26-maint/Python/import.c
==============================================================================
--- python/branches/release26-maint/Python/import.c	(original)
+++ python/branches/release26-maint/Python/import.c	Thu May 20 20:41:08 2010
@@ -2130,7 +2130,8 @@
     if (parent == NULL)
         return NULL;
 
-    head = load_next(parent, Py_None, &name, buf, &buflen);
+    head = load_next(parent, level < 0 ? Py_None : parent, &name, buf,
+                        &buflen);
     if (head == NULL)
         return NULL;
 


More information about the Python-checkins mailing list