Browse Source

If only .pyc exist, the extension API will be disabled

In some commercial production environments, generally will not expose the
source code, this means that only .pyc files exist in the environment.In
this case, the extension API cannot be loaded.

Closes-Bug:#1869148
Change-Id: Id5238e7efe5ff0b80197ac0afa9f5f7a73239f20
(cherry picked from commit 8c582d8791)
(cherry picked from commit 6b3daf4814)
(cherry picked from commit 3e68d6299a)
changes/46/715346/4
haixin 3 months ago
parent
commit
0070c6b28b
2 changed files with 14 additions and 3 deletions
  1. +7
    -3
      manila/api/extensions.py
  2. +7
    -0
      releasenotes/notes/bug-1869148-if-only-pyc-exist-the-extension-API-cannot-be-loaded-172cb9153ebd4b56.yaml

+ 7
- 3
manila/api/extensions.py View File

@@ -273,12 +273,16 @@ def load_standard_extensions(ext_mgr, logger, path, package, ext_list=None):
else:
relpkg = '.%s' % '.'.join(relpath.split(os.sep))

# Now, consider each file in turn, only considering .py files
# Now, consider each file in turn, only considering .py and .pyc files
for fname in filenames:
root, ext = os.path.splitext(fname)

# Skip __init__ and anything that's not .py
if ext != '.py' or root == '__init__':
# Skip __init__ and anything that's not .py and .pyc
if (ext not in ('.py', '.pyc')) or root == '__init__':
continue

# If .pyc and .py both exist, skip .pyc
if ext == '.pyc' and ((root + '.py') in filenames):
continue

# Try loading it


+ 7
- 0
releasenotes/notes/bug-1869148-if-only-pyc-exist-the-extension-API-cannot-be-loaded-172cb9153ebd4b56.yaml View File

@@ -0,0 +1,7 @@
---
fixes:
- |
`Launchpad bug 1869148 <https://launchpad.net/bugs/1869148>`_ has been
fixed. This bug could have affected environments where extension APIs were
provided in compiled files rather than source code.


Loading…
Cancel
Save