From f2dae0e14a79df11135fea05c20f66bcada51c06 Mon Sep 17 00:00:00 2001 From: Georg Brandl Date: Mon, 21 Jan 2008 21:05:49 +0000 Subject: #1715: include sub-extension modules in pydoc text output. --- Lib/pydoc.py | 14 +++++++++++++- Lib/test/pydocfodder.py | 6 ++++++ Misc/NEWS | 2 ++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/Lib/pydoc.py b/Lib/pydoc.py index c2b2088..26cd55d 100755 --- a/Lib/pydoc.py +++ b/Lib/pydoc.py @@ -1051,9 +1051,11 @@ class TextDoc(Doc): if visiblename(key, all): data.append((key, value)) + modpkgs = [] + modpkgs_names = set() if hasattr(object, '__path__'): - modpkgs = [] for importer, modname, ispkg in pkgutil.iter_modules(object.__path__): + modpkgs_names.add(modname) if ispkg: modpkgs.append(modname + ' (package)') else: @@ -1063,6 +1065,16 @@ class TextDoc(Doc): result = result + self.section( 'PACKAGE CONTENTS', join(modpkgs, '\n')) + # Detect submodules as sometimes created by C extensions + submodules = [] + for key, value in inspect.getmembers(object, inspect.ismodule): + if value.__name__.startswith(name + '.') and key not in modpkgs_names: + submodules.append(key) + if submodules: + submodules.sort() + result = result + self.section( + 'SUBMODULES', join(submodules, '\n')) + if classes: classlist = map(lambda (key, value): value, classes) contents = [self.formattree( diff --git a/Lib/test/pydocfodder.py b/Lib/test/pydocfodder.py index becdf22..2cf1cbd 100644 --- a/Lib/test/pydocfodder.py +++ b/Lib/test/pydocfodder.py @@ -1,5 +1,7 @@ """Something just to look at via pydoc.""" +import types + class A_classic: "A classic class." def A_method(self): @@ -208,3 +210,7 @@ class FunkyProperties(object): del inst.desc[self.attr] x = property(get_desc('x'), set_desc('x'), del_desc('x'), 'prop x') + + +submodule = types.ModuleType(__name__ + '.submodule', + """A submodule, which should appear in its parent's summary""") diff --git a/Misc/NEWS b/Misc/NEWS index 3235111..b0a28b1 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -372,6 +372,8 @@ Core and builtins Library ------- +- #1715: include sub-extension modules in pydoc's text output. + - #1836: fix an off-by-one bug in TimedRotatingHandler's rollover time calculation. -- cgit v0.12