summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>1999-06-09 15:49:09 (GMT)
committerGuido van Rossum <guido@python.org>1999-06-09 15:49:09 (GMT)
commit3d548717f502b068a582f3f1de82084dbd100c7a (patch)
tree3cf630313ead2a4b1cef281ea0b8452afa40de5a
parentc87f5f4f7a4a548346877c043c68b62649963e27 (diff)
downloadcpython-3d548717f502b068a582f3f1de82084dbd100c7a.zip
cpython-3d548717f502b068a582f3f1de82084dbd100c7a.tar.gz
cpython-3d548717f502b068a582f3f1de82084dbd100c7a.tar.bz2
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.)
-rw-r--r--Lib/pyclbr.py12
1 files changed, 6 insertions, 6 deletions
diff --git a/Lib/pyclbr.py b/Lib/pyclbr.py
index 709a07b..3d5e0fa 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