33 lines
1.5 KiB
Diff
33 lines
1.5 KiB
Diff
diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py
|
|
index e8427fd84..492db8700 100644
|
|
--- a/sphinx/util/inspect.py
|
|
+++ b/sphinx/util/inspect.py
|
|
@@ -313,7 +313,10 @@ def __init__(self, subject, bound_method=False):
|
|
try:
|
|
self.signature = inspect.signature(subject)
|
|
except IndexError:
|
|
- if hasattr(subject, '_partialmethod'): # partialmethod with no argument
|
|
+ # Until python 3.6.4, cpython has been crashed on inspection for
|
|
+ # partialmethods not having any arguments.
|
|
+ # https://bugs.python.org/issue33009
|
|
+ if hasattr(subject, '_partialmethod'):
|
|
self.signature = None
|
|
self.partialmethod_with_noargs = True
|
|
else:
|
|
diff --git a/tests/test_autodoc.py b/tests/test_autodoc.py
|
|
index 9398edc34..ed6d050fa 100644
|
|
--- a/tests/test_autodoc.py
|
|
+++ b/tests/test_autodoc.py
|
|
@@ -952,7 +952,10 @@ def call_autodoc(objtype, name):
|
|
' Update state of cell to *state*.',
|
|
' ',
|
|
]
|
|
- if sys.version_info < (3, 5, 4):
|
|
+ if (sys.version_info < (3, 5, 4) or
|
|
+ (3, 6, 5) <= sys.version_info < (3, 7) or
|
|
+ (3, 7, 0, 'beta', 3) <= sys.version_info):
|
|
+ # TODO: this condition should be updated after 3.7-final release.
|
|
expected = '\n'.join(expected).replace(' -> None', '').split('\n')
|
|
|
|
assert call_autodoc('class', 'target.partialmethod.Cell') == expected
|