diff options
author | Brett Cannon <brettcannon@users.noreply.github.com> | 2017-06-23 18:39:53 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-06-23 18:39:53 (GMT) |
commit | 599ff020b308113f3709fd4e623d9f0d08511706 (patch) | |
tree | 8b51b32b11b874c80d979352b6a4e0417eeec69c | |
parent | a7c0264735f46afab13771be4218d8eab0d7dc91 (diff) | |
download | cpython-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.py | 5 | ||||
-rw-r--r-- | Misc/ACKS | 1 | ||||
-rw-r--r-- | Misc/NEWS | 4 |
3 files changed, 8 insertions, 2 deletions
@@ -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)) @@ -56,6 +56,7 @@ Ankur Ankan Heidi Annexstad Ramchandra Apte Éric Araujo +Alexandru Ardelean Alicia Arlen Jeffrey Armstrong Jason Asbahr @@ -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. |