summaryrefslogtreecommitdiffstats
path: root/Lib/importlib/_bootstrap.py
diff options
context:
space:
mode:
authorEric V. Smith <eric@trueblade.com>2012-06-24 23:13:55 (GMT)
committerEric V. Smith <eric@trueblade.com>2012-06-24 23:13:55 (GMT)
commite51a36922ffcce8c5e45cc88dc95a9d33ead0f11 (patch)
tree77a4d11d13469e4aed6530c841252d98819ef198 /Lib/importlib/_bootstrap.py
parente6bdc8f2dd0d8cb495e61d08f1db9e0e19c03b1d (diff)
downloadcpython-e51a36922ffcce8c5e45cc88dc95a9d33ead0f11.zip
cpython-e51a36922ffcce8c5e45cc88dc95a9d33ead0f11.tar.gz
cpython-e51a36922ffcce8c5e45cc88dc95a9d33ead0f11.tar.bz2
Fixes issue 15039: namespace packages are no longer imported in preference to modules of the same name.
Diffstat (limited to 'Lib/importlib/_bootstrap.py')
-rw-r--r--Lib/importlib/_bootstrap.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/Lib/importlib/_bootstrap.py b/Lib/importlib/_bootstrap.py
index 40d500a..36c0e88 100644
--- a/Lib/importlib/_bootstrap.py
+++ b/Lib/importlib/_bootstrap.py
@@ -1090,6 +1090,7 @@ class FileFinder:
def find_loader(self, fullname):
"""Try to find a loader for the specified module, or the namespace
package portions. Returns (loader, list-of-portions)."""
+ is_namespace = False
tail_module = fullname.rpartition('.')[2]
try:
mtime = _os.stat(self.path).st_mtime
@@ -1115,14 +1116,17 @@ class FileFinder:
if _path_isfile(full_path):
return (loader(fullname, full_path), [base_path])
else:
- # A namespace package, return the path
- return (None, [base_path])
+ # A namespace package, return the path if we don't also
+ # find a module in the next section.
+ is_namespace = True
# Check for a file w/ a proper suffix exists.
for suffix, loader in self.modules:
if cache_module + suffix in cache:
full_path = _path_join(self.path, tail_module + suffix)
if _path_isfile(full_path):
return (loader(fullname, full_path), [])
+ if is_namespace:
+ return (None, [base_path])
return (None, [])
def _fill_cache(self):