summaryrefslogtreecommitdiffstats
path: root/Lib/imputil.py
diff options
context:
space:
mode:
authorMartin v. Löwis <martin@v.loewis.de>2001-07-28 20:33:41 (GMT)
committerMartin v. Löwis <martin@v.loewis.de>2001-07-28 20:33:41 (GMT)
commit70195da3ff1cae7f4c6e76b0f2a19c3fe04bc1e4 (patch)
tree370a7a1b3b670059e407d34b2786d10468c09325 /Lib/imputil.py
parentd3011cd1d32699c3307f612af5990204e4027f12 (diff)
downloadcpython-70195da3ff1cae7f4c6e76b0f2a19c3fe04bc1e4.zip
cpython-70195da3ff1cae7f4c6e76b0f2a19c3fe04bc1e4.tar.gz
cpython-70195da3ff1cae7f4c6e76b0f2a19c3fe04bc1e4.tar.bz2
Patch #443337: Fix incompatibilities in imputil's behavior.
Diffstat (limited to 'Lib/imputil.py')
-rw-r--r--Lib/imputil.py10
1 files changed, 9 insertions, 1 deletions
diff --git a/Lib/imputil.py b/Lib/imputil.py
index 6017f6c..eb53e07 100644
--- a/Lib/imputil.py
+++ b/Lib/imputil.py
@@ -125,6 +125,10 @@ class ImportManager:
if importer:
return importer._finish_import(top_module, parts[1:], fromlist)
+ # Grrr, some people "import os.path"
+ if len(parts) == 2 and hasattr(top_module, parts[1]):
+ return top_module
+
# If the importer does not exist, then we have to bail. A missing
# importer means that something else imported the module, and we have
# no knowledge of how to get sub-modules out of the thing.
@@ -290,7 +294,11 @@ class Importer:
exec code in module.__dict__
# fetch from sys.modules instead of returning module directly.
- return sys.modules[fqname]
+ # also make module's __name__ agree with fqname, in case
+ # the "exec code in module.__dict__" played games on us.
+ module = sys.modules[fqname]
+ module.__name__ = fqname
+ return module
def _load_tail(self, m, parts):
"""Import the rest of the modules, down from the top-level module.