Commit 21464a0c authored by Victor Stinner's avatar Victor Stinner

Fix pyclbr to support importing packages

Issue #26569: Fix pyclbr.readmodule() and pyclbr.readmodule_ex() to support
importing packages.
parent f8547d07
...@@ -142,10 +142,10 @@ def _readmodule(module, path, inpackage=None): ...@@ -142,10 +142,10 @@ def _readmodule(module, path, inpackage=None):
search_path = path + sys.path search_path = path + sys.path
# XXX This will change once issue19944 lands. # XXX This will change once issue19944 lands.
spec = importlib.util._find_spec_from_path(fullmodule, search_path) spec = importlib.util._find_spec_from_path(fullmodule, search_path)
fname = spec.loader.get_filename(fullmodule)
_modules[fullmodule] = dict _modules[fullmodule] = dict
if spec.loader.is_package(fullmodule): # is module a package?
dict['__path__'] = [os.path.dirname(fname)] if spec.submodule_search_locations is not None:
dict['__path__'] = spec.submodule_search_locations
try: try:
source = spec.loader.get_source(fullmodule) source = spec.loader.get_source(fullmodule)
if source is None: if source is None:
...@@ -154,6 +154,8 @@ def _readmodule(module, path, inpackage=None): ...@@ -154,6 +154,8 @@ def _readmodule(module, path, inpackage=None):
# not Python source, can't do anything with this module # not Python source, can't do anything with this module
return dict return dict
fname = spec.loader.get_filename(fullmodule)
f = io.StringIO(source) f = io.StringIO(source)
stack = [] # stack of (class, indent) pairs stack = [] # stack of (class, indent) pairs
......
...@@ -91,6 +91,9 @@ Core and Builtins ...@@ -91,6 +91,9 @@ Core and Builtins
Library Library
------- -------
- Issue #26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex`
to support importing packages.
- Issue #26499: Account for remaining Content-Length in - Issue #26499: Account for remaining Content-Length in
HTTPResponse.readline() and read1(). Based on patch by Silent Ghost. HTTPResponse.readline() and read1(). Based on patch by Silent Ghost.
Also document that HTTPResponse now supports these methods. Also document that HTTPResponse now supports these methods.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment