From 3d548717f502b068a582f3f1de82084dbd100c7a Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Wed, 9 Jun 1999 15:49:09 +0000 Subject: [PATCH] Fix by Sjoerd for a package related bug: If you have a non-empy __init__.py it isn't read. (Sjoerd just came up with this, so it's not heavily tested.) Other (yet unsolved) package problems noted by Sjoerd: - If you have a package and a module inside that or another package with the same name, module caching doesn't work properly since the key is the base name of the module/package. - The only entry that is returned when you readmodule a package is a __path__ whose value is a list which confuses certain class browsers that I wrote. (Hm, this could be construed as a feature.) --- Lib/pyclbr.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/Lib/pyclbr.py b/Lib/pyclbr.py index 709a07bf366..3d5e0faefe7 100644 --- a/Lib/pyclbr.py +++ b/Lib/pyclbr.py @@ -123,6 +123,8 @@ def readmodule(module, path=[], inpackage=0): module and return a dictionary with one entry for each class found in the module.''' + dict = {} + i = string.rfind(module, '.') if i >= 0: # Dotted module name @@ -137,7 +139,6 @@ def readmodule(module, path=[], inpackage=0): return _modules[module] if module in sys.builtin_module_names: # this is a built-in module - dict = {} _modules[module] = dict return dict @@ -153,18 +154,17 @@ def readmodule(module, path=[], inpackage=0): fullpath = list(path) + sys.path f, file, (suff, mode, type) = imp.find_module(module, fullpath) if type == imp.PKG_DIRECTORY: - dict = {'__path__': [file]} + dict['__path__'] = [file] _modules[module] = dict - # XXX Should we recursively look for submodules? - return dict + path = [file] + path + f, file, (suff, mode, type) = \ + imp.find_module('__init__', [file]) if type != imp.PY_SOURCE: # not Python source, can't do anything with this module f.close() - dict = {} _modules[module] = dict return dict - dict = {} _modules[module] = dict imports = [] classstack = [] # stack of (class, indent) pairs