summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrett Cannon <brettcannon@users.noreply.github.com>2017-06-23 18:39:53 (GMT)
committerGitHub <noreply@github.com>2017-06-23 18:39:53 (GMT)
commit599ff020b308113f3709fd4e623d9f0d08511706 (patch)
tree8b51b32b11b874c80d979352b6a4e0417eeec69c
parenta7c0264735f46afab13771be4218d8eab0d7dc91 (diff)
downloadcpython-599ff020b308113f3709fd4e623d9f0d08511706.zip
cpython-599ff020b308113f3709fd4e623d9f0d08511706.tar.gz
cpython-599ff020b308113f3709fd4e623d9f0d08511706.tar.bz2
[3.5] bpo-30645: don't append to an inner loop path in imp.load_package() (GH-2268) (GH-2365)
Bug didn't manifest itself when importing a module with source as .py files are always the first on the search path. The issue only showed up in bytecode-only packages where the calculated file path would be ``__init__.py/__init__.pyc``. Patch by Alexandru Ardelean. (cherry picked from commit c38e32a10061a7c6d54e7e53ffabf7af7998f045)
-rw-r--r--Lib/imp.py5
-rw-r--r--Misc/ACKS1
-rw-r--r--Misc/NEWS4
3 files changed, 8 insertions, 2 deletions
diff --git a/Lib/imp.py b/Lib/imp.py
index e264391..af0790f 100644
--- a/Lib/imp.py
+++ b/Lib/imp.py
@@ -203,8 +203,9 @@ def load_package(name, path):
extensions = (machinery.SOURCE_SUFFIXES[:] +
machinery.BYTECODE_SUFFIXES[:])
for extension in extensions:
- path = os.path.join(path, '__init__'+extension)
- if os.path.exists(path):
+ init_path = os.path.join(path, '__init__' + extension)
+ if os.path.exists(init_path):
+ path = init_path
break
else:
raise ValueError('{!r} is not a package'.format(path))
diff --git a/Misc/ACKS b/Misc/ACKS
index 45358e7..7f9044a 100644
--- a/Misc/ACKS
+++ b/Misc/ACKS
@@ -56,6 +56,7 @@ Ankur Ankan
Heidi Annexstad
Ramchandra Apte
Éric Araujo
+Alexandru Ardelean
Alicia Arlen
Jeffrey Armstrong
Jason Asbahr
diff --git a/Misc/NEWS b/Misc/NEWS
index b2bbd5d..b731792 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -79,6 +79,10 @@ Library
correctly returns the ``127.0.0.1`` host, instead of treating ``@evil.com``
as the host in an authentification (``login@host``).
+- bpo-30645: Fix path calculation in imp.load_package(), fixing it for
+ cases when a package is only shipped with bytecodes. Patch by
+ Alexandru Ardelean.
+
- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a reference
cycle to not keep objects alive longer than expected.