diff options
author | Victor Stinner <victor.stinner@gmail.com> | 2016-03-17 08:06:41 (GMT) |
---|---|---|
committer | Victor Stinner <victor.stinner@gmail.com> | 2016-03-17 08:06:41 (GMT) |
commit | 5c13aa156255d672aeee4d32bc0965e20c7d6c51 (patch) | |
tree | 4721e29af26d0384caf90e601288c720e424f326 /Lib | |
parent | d887d1f365595c05c0598225f8b893693fecd57c (diff) | |
download | cpython-5c13aa156255d672aeee4d32bc0965e20c7d6c51.zip cpython-5c13aa156255d672aeee4d32bc0965e20c7d6c51.tar.gz cpython-5c13aa156255d672aeee4d32bc0965e20c7d6c51.tar.bz2 |
Fix pyclbr to support importing packages
Issue #26569: Fix pyclbr.readmodule() and pyclbr.readmodule_ex() to support
importing packages.
Diffstat (limited to 'Lib')
-rw-r--r-- | Lib/pyclbr.py | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/Lib/pyclbr.py b/Lib/pyclbr.py index dd58ada..4d40b87 100644 --- a/Lib/pyclbr.py +++ b/Lib/pyclbr.py @@ -142,10 +142,10 @@ def _readmodule(module, path, inpackage=None): search_path = path + sys.path # XXX This will change once issue19944 lands. spec = importlib.util._find_spec_from_path(fullmodule, search_path) - fname = spec.loader.get_filename(fullmodule) _modules[fullmodule] = dict - if spec.loader.is_package(fullmodule): - dict['__path__'] = [os.path.dirname(fname)] + # is module a package? + if spec.submodule_search_locations is not None: + dict['__path__'] = spec.submodule_search_locations try: source = spec.loader.get_source(fullmodule) if source is None: @@ -154,6 +154,8 @@ def _readmodule(module, path, inpackage=None): # not Python source, can't do anything with this module return dict + fname = spec.loader.get_filename(fullmodule) + f = io.StringIO(source) stack = [] # stack of (class, indent) pairs |