mirror of https://github.com/python/cpython.git
List class attrs in MRO order of defining class instead of by alphabetic
order of defining class's name.
This commit is contained in:
parent
3ffeae130b
commit
351e362d89
31
Lib/pydoc.py
31
Lib/pydoc.py
|
@ -621,7 +621,7 @@ def maybe(self):
|
||||||
hr = HorizontalRule()
|
hr = HorizontalRule()
|
||||||
|
|
||||||
# List the mro, if non-trivial.
|
# List the mro, if non-trivial.
|
||||||
mro = inspect.getmro(object)
|
mro = list(inspect.getmro(object))
|
||||||
if len(mro) > 2:
|
if len(mro) > 2:
|
||||||
hr.maybe()
|
hr.maybe()
|
||||||
push('<dl><dt>Method resolution order:</dt>\n')
|
push('<dl><dt>Method resolution order:</dt>\n')
|
||||||
|
@ -693,11 +693,11 @@ def spilldata(msg, attrs, predicate):
|
||||||
except TypeError:
|
except TypeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
# Sort attrs by name of defining class.
|
|
||||||
attrs.sort(lambda t1, t2: cmp(t1[2].__name__, t2[2].__name__))
|
|
||||||
|
|
||||||
thisclass = object # list attrs defined here first
|
|
||||||
while attrs:
|
while attrs:
|
||||||
|
if mro:
|
||||||
|
thisclass = mro.pop(0)
|
||||||
|
else:
|
||||||
|
thisclass = attrs[0][2]
|
||||||
attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
|
attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
|
||||||
|
|
||||||
if thisclass is object:
|
if thisclass is object:
|
||||||
|
@ -722,12 +722,7 @@ def spilldata(msg, attrs, predicate):
|
||||||
attrs = spilldata("Data and non-method functions %s" % tag, attrs,
|
attrs = spilldata("Data and non-method functions %s" % tag, attrs,
|
||||||
lambda t: t[1] == 'data')
|
lambda t: t[1] == 'data')
|
||||||
assert attrs == []
|
assert attrs == []
|
||||||
|
|
||||||
# Split off the attributes inherited from the next class (note
|
|
||||||
# that inherited remains sorted by class name).
|
|
||||||
if inherited:
|
|
||||||
attrs = inherited
|
attrs = inherited
|
||||||
thisclass = attrs[0][2]
|
|
||||||
|
|
||||||
contents = ''.join(contents)
|
contents = ''.join(contents)
|
||||||
|
|
||||||
|
@ -1008,7 +1003,7 @@ def makename(c, m=object.__module__):
|
||||||
push = contents.append
|
push = contents.append
|
||||||
|
|
||||||
# List the mro, if non-trivial.
|
# List the mro, if non-trivial.
|
||||||
mro = inspect.getmro(object)
|
mro = list(inspect.getmro(object))
|
||||||
if len(mro) > 2:
|
if len(mro) > 2:
|
||||||
push("Method resolution order:")
|
push("Method resolution order:")
|
||||||
for base in mro:
|
for base in mro:
|
||||||
|
@ -1072,12 +1067,11 @@ def spilldata(msg, attrs, predicate):
|
||||||
return attrs
|
return attrs
|
||||||
|
|
||||||
attrs = inspect.classify_class_attrs(object)
|
attrs = inspect.classify_class_attrs(object)
|
||||||
|
|
||||||
# Sort attrs by name of defining class.
|
|
||||||
attrs.sort(lambda t1, t2: cmp(t1[2].__name__, t2[2].__name__))
|
|
||||||
|
|
||||||
thisclass = object # list attrs defined here first
|
|
||||||
while attrs:
|
while attrs:
|
||||||
|
if mro:
|
||||||
|
thisclass = mro.pop(0)
|
||||||
|
else:
|
||||||
|
thisclass = attrs[0][2]
|
||||||
attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
|
attrs, inherited = _split_list(attrs, lambda t: t[2] is thisclass)
|
||||||
|
|
||||||
if thisclass is object:
|
if thisclass is object:
|
||||||
|
@ -1101,12 +1095,7 @@ def spilldata(msg, attrs, predicate):
|
||||||
attrs = spilldata("Data and non-method functions %s:\n" % tag,
|
attrs = spilldata("Data and non-method functions %s:\n" % tag,
|
||||||
attrs, lambda t: t[1] == 'data')
|
attrs, lambda t: t[1] == 'data')
|
||||||
assert attrs == []
|
assert attrs == []
|
||||||
|
|
||||||
# Split off the attributes inherited from the next class (note
|
|
||||||
# that inherited remains sorted by class name).
|
|
||||||
if inherited:
|
|
||||||
attrs = inherited
|
attrs = inherited
|
||||||
thisclass = attrs[0][2]
|
|
||||||
|
|
||||||
contents = '\n'.join(contents)
|
contents = '\n'.join(contents)
|
||||||
if not contents:
|
if not contents:
|
||||||
|
|
Loading…
Reference in New Issue