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