Fix pyclbr to support importing packages

Issue #26569: Fix pyclbr.readmodule() and pyclbr.readmodule_ex() to support
importing packages.
This commit is contained in:
Victor Stinner 2016-03-17 09:06:41 +01:00
parent d887d1f365
commit 5c13aa1562
2 changed files with 8 additions and 3 deletions

View File

@ -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):
# 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

View File

@ -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.