]> granicus.if.org Git - python/commitdiff
GUI mode now displays useful stuff for properties. This is usually better
authorTim Peters <tim.peters@gmail.com>
Tue, 25 Sep 2001 00:01:06 +0000 (00:01 +0000)
committerTim Peters <tim.peters@gmail.com>
Tue, 25 Sep 2001 00:01:06 +0000 (00:01 +0000)
than text mode, since here we can hyperlink from the getter etc methods
back to their definitions.

Lib/pydoc.py

index 4bf194068d1ebcec9532575cdc90ca8b625ddb5c..c3f33a094c509f010ba7c0fb1ab945bae3836c3a 100755 (executable)
@@ -636,16 +636,26 @@ TT { font-family: lucidatypewriter, lucida console, courier }
                     push('\n')
             return attrs
 
-        # pydoc can't make any reasonable sense of properties on its own,
-        # and it doesn't appear that the getter, setter and del'er methods
-        # are discoverable.  For now, just pump out their names.
         def spillproperties(msg, attrs, predicate):
             ok, attrs = _split_list(attrs, predicate)
             if ok:
                 hr.maybe()
                 push(msg)
                 for name, kind, homecls, value in ok:
-                    push('<dl><dt><strong>%s</strong></dl>\n' % name)
+                    push('<dl><dt><strong>%s</strong></dt>\n' % name)
+                    if value.__doc__ is not None:
+                        doc = self.markup(value.__doc__, self.preformat,
+                                          funcs, classes, mdict)
+                        push('<dd><small><tt>%s</tt></small></dd>\n' % doc)
+                    for attr, tag in [("fset", " setter"),
+                                      ("fget", " getter"),
+                                      ("fdel", " deleter")]:
+                        func = getattr(value, attr)
+                        if func is not None:
+                            base = self.document(func, name + tag, mod,
+                                                 funcs, classes, mdict, object)
+                            push('<dd>%s</dd>\n' % base)
+                    push('</dl>\n')
             return attrs
 
         def spilldata(msg, attrs, predicate):