@@ -137,12 +137,6 @@ def stripid(text):
137
137
# The behaviour of %p is implementation-dependent in terms of case.
138
138
return _re_stripid .sub (r'\1' , text )
139
139
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
-
146
140
def _is_bound_method (fn ):
147
141
"""
148
142
Returns True if fn is a bound method, regardless of whether
@@ -158,7 +152,7 @@ def _is_bound_method(fn):
158
152
159
153
def allmethods (cl ):
160
154
methods = {}
161
- for key , value in inspect .getmembers (cl , _is_some_method ):
155
+ for key , value in inspect .getmembers (cl , inspect . isroutine ):
162
156
methods [key ] = 1
163
157
for base in cl .__bases__ :
164
158
methods .update (allmethods (base )) # all your base are belong to us
@@ -379,15 +373,13 @@ def document(self, object, name=None, *args):
379
373
# identifies something in a way that pydoc itself has issues handling;
380
374
# think 'super' and how it is a descriptor (which raises the exception
381
375
# 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 )
384
376
try :
385
377
if inspect .ismodule (object ): return self .docmodule (* args )
386
378
if inspect .isclass (object ): return self .docclass (* args )
387
379
if inspect .isroutine (object ): return self .docroutine (* args )
388
380
except AttributeError :
389
381
pass
390
- if isinstance (object , property ): return self .docproperty (* args )
382
+ if inspect . isdatadescriptor (object ): return self .docdata (* args )
391
383
return self .docother (* args )
392
384
393
385
def fail (self , object , name = None , * args ):
@@ -809,7 +801,7 @@ def spill(msg, attrs, predicate):
809
801
except Exception :
810
802
# Some descriptors may meet a failure in their __get__.
811
803
# (bug #1785)
812
- push (self ._docdescriptor ( name , value , mod ))
804
+ push (self .docdata ( value , name , mod ))
813
805
else :
814
806
push (self .document (value , name , mod ,
815
807
funcs , classes , mdict , object ))
@@ -822,7 +814,7 @@ def spilldescriptors(msg, attrs, predicate):
822
814
hr .maybe ()
823
815
push (msg )
824
816
for name , kind , homecls , value in ok :
825
- push (self ._docdescriptor ( name , value , mod ))
817
+ push (self .docdata ( value , name , mod ))
826
818
return attrs
827
819
828
820
def spilldata (msg , attrs , predicate ):
@@ -994,32 +986,27 @@ def docroutine(self, object, name=None, mod=None,
994
986
doc = doc and '<dd><tt>%s</tt></dd>' % doc
995
987
return '<dl><dt>%s</dt>%s</dl>\n ' % (decl , doc )
996
988
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."""
998
991
results = []
999
992
push = results .append
1000
993
1001
994
if name :
1002
995
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 )
1005
998
push ('<dd><tt>%s</tt></dd>\n ' % doc )
1006
999
push ('</dl>\n ' )
1007
1000
1008
1001
return '' .join (results )
1009
1002
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
1013
1004
1014
1005
def docother (self , object , name = None , mod = None , * ignored ):
1015
1006
"""Produce HTML documentation for a data object."""
1016
1007
lhs = name and '<strong>%s</strong> = ' % name or ''
1017
1008
return lhs + self .repr (object )
1018
1009
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
-
1023
1010
def index (self , dir , shadowed = None ):
1024
1011
"""Generate an HTML index for a directory of modules."""
1025
1012
modpkgs = []
@@ -1292,7 +1279,7 @@ def spill(msg, attrs, predicate):
1292
1279
except Exception :
1293
1280
# Some descriptors may meet a failure in their __get__.
1294
1281
# (bug #1785)
1295
- push (self ._docdescriptor ( name , value , mod ))
1282
+ push (self .docdata ( value , name , mod ))
1296
1283
else :
1297
1284
push (self .document (value ,
1298
1285
name , mod , object ))
@@ -1304,7 +1291,7 @@ def spilldescriptors(msg, attrs, predicate):
1304
1291
hr .maybe ()
1305
1292
push (msg )
1306
1293
for name , kind , homecls , value in ok :
1307
- push (self ._docdescriptor ( name , value , mod ))
1294
+ push (self .docdata ( value , name , mod ))
1308
1295
return attrs
1309
1296
1310
1297
def spilldata (msg , attrs , predicate ):
@@ -1420,26 +1407,21 @@ def docroutine(self, object, name=None, mod=None, cl=None):
1420
1407
doc = getdoc (object ) or ''
1421
1408
return decl + '\n ' + (doc and self .indent (doc ).rstrip () + '\n ' )
1422
1409
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."""
1424
1412
results = []
1425
1413
push = results .append
1426
1414
1427
1415
if name :
1428
1416
push (self .bold (name ))
1429
1417
push ('\n ' )
1430
- doc = getdoc (value ) or ''
1418
+ doc = getdoc (object ) or ''
1431
1419
if doc :
1432
1420
push (self .indent (doc ))
1433
1421
push ('\n ' )
1434
1422
return '' .join (results )
1435
1423
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
1443
1425
1444
1426
def docother (self , object , name = None , mod = None , parent = None , maxlen = None , doc = None ):
1445
1427
"""Produce text documentation for a data object."""
@@ -1673,9 +1655,7 @@ def render_doc(thing, title='Python Library Documentation: %s', forceload=0,
1673
1655
if not (inspect .ismodule (object ) or
1674
1656
inspect .isclass (object ) or
1675
1657
inspect .isroutine (object ) or
1676
- inspect .isgetsetdescriptor (object ) or
1677
- inspect .ismemberdescriptor (object ) or
1678
- isinstance (object , property )):
1658
+ inspect .isdatadescriptor (object )):
1679
1659
# If the passed object is a piece of data or an instance,
1680
1660
# document its available methods instead of its value.
1681
1661
object = type (object )
0 commit comments