mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
Merge pull request #5067 from tk0miya/5032_staticmethod_for_oldstyled_classes
Fix #5032: autodoc loses the first staticmethod parameter for old styled classes
This commit is contained in:
commit
85a901077e
1
CHANGES
1
CHANGES
@ -27,6 +27,7 @@ Bugs fixed
|
|||||||
* #4667: C++, fix assertion on missing references in global scope when using
|
* #4667: C++, fix assertion on missing references in global scope when using
|
||||||
intersphinx. Thanks to Alan M. Carroll.
|
intersphinx. Thanks to Alan M. Carroll.
|
||||||
* #5019: autodoc: crashed by Form Feed Character
|
* #5019: autodoc: crashed by Form Feed Character
|
||||||
|
* #5032: autodoc: loses the first staticmethod parameter for old styled classes
|
||||||
|
|
||||||
Testing
|
Testing
|
||||||
--------
|
--------
|
||||||
|
@ -176,8 +176,8 @@ def isstaticmethod(obj, cls=None, name=None):
|
|||||||
elif cls and name:
|
elif cls and name:
|
||||||
# trace __mro__ if the method is defined in parent class
|
# trace __mro__ if the method is defined in parent class
|
||||||
#
|
#
|
||||||
# .. note:: This only works with new style classes.
|
# .. note:: This only works well with new style classes.
|
||||||
for basecls in getattr(cls, '__mro__', []):
|
for basecls in getattr(cls, '__mro__', [cls]):
|
||||||
meth = basecls.__dict__.get(name)
|
meth = basecls.__dict__.get(name)
|
||||||
if meth:
|
if meth:
|
||||||
if isinstance(meth, staticmethod):
|
if isinstance(meth, staticmethod):
|
||||||
|
@ -362,3 +362,26 @@ def test_dict_customtype():
|
|||||||
description = inspect.object_description(dictionary)
|
description = inspect.object_description(dictionary)
|
||||||
# Type is unsortable, just check that it does not crash
|
# Type is unsortable, just check that it does not crash
|
||||||
assert "<CustomType(2)>: 2" in description
|
assert "<CustomType(2)>: 2" in description
|
||||||
|
|
||||||
|
|
||||||
|
def test_isstaticmethod():
|
||||||
|
class Foo():
|
||||||
|
@staticmethod
|
||||||
|
def method1():
|
||||||
|
pass
|
||||||
|
|
||||||
|
def method2(self):
|
||||||
|
pass
|
||||||
|
|
||||||
|
class Bar(Foo):
|
||||||
|
pass
|
||||||
|
|
||||||
|
assert inspect.isstaticmethod(Foo.method1, Foo, 'method1') is True
|
||||||
|
assert inspect.isstaticmethod(Foo.method2, Foo, 'method2') is False
|
||||||
|
|
||||||
|
if sys.version_info < (3, 0):
|
||||||
|
assert inspect.isstaticmethod(Bar.method1, Bar, 'method1') is False
|
||||||
|
assert inspect.isstaticmethod(Bar.method2, Bar, 'method2') is False
|
||||||
|
else:
|
||||||
|
assert inspect.isstaticmethod(Bar.method1, Bar, 'method1') is True
|
||||||
|
assert inspect.isstaticmethod(Bar.method2, Bar, 'method2') is False
|
||||||
|
Loading…
Reference in New Issue
Block a user