@@ -137,12 +137,6 @@ def stripid(text):
137137 # The behaviour of %p is implementation-dependent in terms of case.
138138 return _re_stripid .sub (r'\1' , text )
139139
140- def _is_some_method (obj ):
141- return (inspect .isfunction (obj ) or
142- inspect .ismethod (obj ) or
143- inspect .isbuiltin (obj ) or
144- inspect .ismethoddescriptor (obj ))
145-
146140def _is_bound_method (fn ):
147141 """
148142 Returns True if fn is a bound method, regardless of whether
@@ -158,7 +152,7 @@ def _is_bound_method(fn):
158152
159153def allmethods (cl ):
160154 methods = {}
161- for key , value in inspect .getmembers (cl , _is_some_method ):
155+ for key , value in inspect .getmembers (cl , inspect . isroutine ):
162156 methods [key ] = 1
163157 for base in cl .__bases__ :
164158 methods .update (allmethods (base )) # all your base are belong to us
@@ -379,15 +373,13 @@ def document(self, object, name=None, *args):
379373 # identifies something in a way that pydoc itself has issues handling;
380374 # think 'super' and how it is a descriptor (which raises the exception
381375 # by lacking a __name__ attribute) and an instance.
382- if inspect .isgetsetdescriptor (object ): return self .docdata (* args )
383- if inspect .ismemberdescriptor (object ): return self .docdata (* args )
384376 try :
385377 if inspect .ismodule (object ): return self .docmodule (* args )
386378 if inspect .isclass (object ): return self .docclass (* args )
387379 if inspect .isroutine (object ): return self .docroutine (* args )
388380 except AttributeError :
389381 pass
390- if isinstance (object , property ): return self .docproperty (* args )
382+ if inspect . isdatadescriptor (object ): return self .docdata (* args )
391383 return self .docother (* args )
392384
393385 def fail (self , object , name = None , * args ):
@@ -809,7 +801,7 @@ def spill(msg, attrs, predicate):
809801 except Exception :
810802 # Some descriptors may meet a failure in their __get__.
811803 # (bug #1785)
812- push (self ._docdescriptor ( name , value , mod ))
804+ push (self .docdata ( value , name , mod ))
813805 else :
814806 push (self .document (value , name , mod ,
815807 funcs , classes , mdict , object ))
@@ -822,7 +814,7 @@ def spilldescriptors(msg, attrs, predicate):
822814 hr .maybe ()
823815 push (msg )
824816 for name , kind , homecls , value in ok :
825- push (self ._docdescriptor ( name , value , mod ))
817+ push (self .docdata ( value , name , mod ))
826818 return attrs
827819
828820 def spilldata (msg , attrs , predicate ):
@@ -994,32 +986,27 @@ def docroutine(self, object, name=None, mod=None,
994986 doc = doc and '<dd><tt>%s</tt></dd>' % doc
995987 return '<dl><dt>%s</dt>%s</dl>\n ' % (decl , doc )
996988
997- def _docdescriptor (self , name , value , mod ):
989+ def docdata (self , object , name = None , mod = None , cl = None ):
990+ """Produce html documentation for a data descriptor."""
998991 results = []
999992 push = results .append
1000993
1001994 if name :
1002995 push ('<dl><dt><strong>%s</strong></dt>\n ' % name )
1003- if value .__doc__ is not None :
1004- doc = self .markup (getdoc (value ), self .preformat )
996+ if object .__doc__ is not None :
997+ doc = self .markup (getdoc (object ), self .preformat )
1005998 push ('<dd><tt>%s</tt></dd>\n ' % doc )
1006999 push ('</dl>\n ' )
10071000
10081001 return '' .join (results )
10091002
1010- def docproperty (self , object , name = None , mod = None , cl = None ):
1011- """Produce html documentation for a property."""
1012- return self ._docdescriptor (name , object , mod )
1003+ docproperty = docdata
10131004
10141005 def docother (self , object , name = None , mod = None , * ignored ):
10151006 """Produce HTML documentation for a data object."""
10161007 lhs = name and '<strong>%s</strong> = ' % name or ''
10171008 return lhs + self .repr (object )
10181009
1019- def docdata (self , object , name = None , mod = None , cl = None ):
1020- """Produce html documentation for a data descriptor."""
1021- return self ._docdescriptor (name , object , mod )
1022-
10231010 def index (self , dir , shadowed = None ):
10241011 """Generate an HTML index for a directory of modules."""
10251012 modpkgs = []
@@ -1292,7 +1279,7 @@ def spill(msg, attrs, predicate):
12921279 except Exception :
12931280 # Some descriptors may meet a failure in their __get__.
12941281 # (bug #1785)
1295- push (self ._docdescriptor ( name , value , mod ))
1282+ push (self .docdata ( value , name , mod ))
12961283 else :
12971284 push (self .document (value ,
12981285 name , mod , object ))
@@ -1304,7 +1291,7 @@ def spilldescriptors(msg, attrs, predicate):
13041291 hr .maybe ()
13051292 push (msg )
13061293 for name , kind , homecls , value in ok :
1307- push (self ._docdescriptor ( name , value , mod ))
1294+ push (self .docdata ( value , name , mod ))
13081295 return attrs
13091296
13101297 def spilldata (msg , attrs , predicate ):
@@ -1420,26 +1407,21 @@ def docroutine(self, object, name=None, mod=None, cl=None):
14201407 doc = getdoc (object ) or ''
14211408 return decl + '\n ' + (doc and self .indent (doc ).rstrip () + '\n ' )
14221409
1423- def _docdescriptor (self , name , value , mod ):
1410+ def docdata (self , object , name = None , mod = None , cl = None ):
1411+ """Produce text documentation for a data descriptor."""
14241412 results = []
14251413 push = results .append
14261414
14271415 if name :
14281416 push (self .bold (name ))
14291417 push ('\n ' )
1430- doc = getdoc (value ) or ''
1418+ doc = getdoc (object ) or ''
14311419 if doc :
14321420 push (self .indent (doc ))
14331421 push ('\n ' )
14341422 return '' .join (results )
14351423
1436- def docproperty (self , object , name = None , mod = None , cl = None ):
1437- """Produce text documentation for a property."""
1438- return self ._docdescriptor (name , object , mod )
1439-
1440- def docdata (self , object , name = None , mod = None , cl = None ):
1441- """Produce text documentation for a data descriptor."""
1442- return self ._docdescriptor (name , object , mod )
1424+ docproperty = docdata
14431425
14441426 def docother (self , object , name = None , mod = None , parent = None , maxlen = None , doc = None ):
14451427 """Produce text documentation for a data object."""
@@ -1673,9 +1655,7 @@ def render_doc(thing, title='Python Library Documentation: %s', forceload=0,
16731655 if not (inspect .ismodule (object ) or
16741656 inspect .isclass (object ) or
16751657 inspect .isroutine (object ) or
1676- inspect .isgetsetdescriptor (object ) or
1677- inspect .ismemberdescriptor (object ) or
1678- isinstance (object , property )):
1658+ inspect .isdatadescriptor (object )):
16791659 # If the passed object is a piece of data or an instance,
16801660 # document its available methods instead of its value.
16811661 object = type (object )
0 commit comments