]> granicus.if.org Git - python/commitdiff
Use getdoc(object) instead of object.__doc__ to fix indentation problems.
authorKa-Ping Yee <ping@zesty.ca>
Sat, 19 Feb 2005 22:58:26 +0000 (22:58 +0000)
committerKa-Ping Yee <ping@zesty.ca>
Sat, 19 Feb 2005 22:58:26 +0000 (22:58 +0000)
Thanks to Robert Dick <dickrp@ece.northwestern.edu> for reporting this bug
and submitting a patch.

Adjust doc(object) to display useful documentation for plain values (e.g.
help([]) now shows the methods on the list instead of just printing "[]").

(This change has been tested interactively, by generating docs for the
standard library, and by running the module documentation webserver.)

Lib/pydoc.py

index 94548e296930825399f3742bd4d74842c8a9eb26..e0add862525c8a054ea1e4f0b64772bd3ae2f57f 100755 (executable)
@@ -886,7 +886,7 @@ class HTMLDoc(Doc):
         if name:
             push('<dl><dt><strong>%s</strong></dt>\n' % name)
         if value.__doc__ is not None:
-            doc = self.markup(value.__doc__, self.preformat)
+            doc = self.markup(getdoc(value), self.preformat)
             push('<dd><tt>%s</tt></dd>\n' % doc)
         push('</dl>\n')
 
@@ -1160,7 +1160,7 @@ class TextDoc(Doc):
                 push(msg)
                 for name, kind, homecls, value in ok:
                     if callable(value) or inspect.isdatadescriptor(value):
-                        doc = getattr(value, "__doc__", None)
+                        doc = getdoc(value)
                     else:
                         doc = None
                     push(self.docother(getattr(object, name),
@@ -1454,6 +1454,14 @@ def doc(thing, title='Python Library Documentation: %s', forceload=0):
             desc += ' in ' + name[:name.rfind('.')]
         elif module and module is not object:
             desc += ' in module ' + module.__name__
+        if not (inspect.ismodule(object) or
+                inspect.isclass(object) or
+                inspect.isroutine(object) or
+                isinstance(object, property)):
+            # If the passed object is a piece of data or an instance,
+            # document its available methods instead of its value.
+            object = type(object)
+            desc += ' object'
         pager(title % desc + '\n\n' + text.document(object, name))
     except (ImportError, ErrorDuringImport), value:
         print value