summaryrefslogtreecommitdiff
path: root/sphinx/util/inspect.py
diff options
context:
space:
mode:
Diffstat (limited to 'sphinx/util/inspect.py')
-rw-r--r--sphinx/util/inspect.py28
1 files changed, 9 insertions, 19 deletions
diff --git a/sphinx/util/inspect.py b/sphinx/util/inspect.py
index 96f22ea73..76e3ca3ac 100644
--- a/sphinx/util/inspect.py
+++ b/sphinx/util/inspect.py
@@ -15,7 +15,7 @@ from io import StringIO
from types import MethodType, ModuleType
from typing import Any, Callable, Dict, Mapping, Optional, Sequence, Tuple, Type, cast
-from sphinx.pycode.ast import ast # for py36-37
+from sphinx.pycode.ast import ast # for py37
from sphinx.pycode.ast import unparse as ast_unparse
from sphinx.util import logging
from sphinx.util.typing import ForwardRef
@@ -294,7 +294,7 @@ def is_singledispatch_method(obj: Any) -> bool:
try:
from functools import singledispatchmethod # type: ignore
return isinstance(obj, singledispatchmethod)
- except ImportError: # py36-37
+ except ImportError: # py37
return False
@@ -565,25 +565,15 @@ def signature(subject: Callable, bound_method: bool = False, type_aliases: Dict
"""
try:
- try:
- if _should_unwrap(subject):
- signature = inspect.signature(subject)
- else:
- signature = inspect.signature(subject, follow_wrapped=True)
- except ValueError:
- # follow built-in wrappers up (ex. functools.lru_cache)
+ if _should_unwrap(subject):
signature = inspect.signature(subject)
- parameters = list(signature.parameters.values())
- return_annotation = signature.return_annotation
- except IndexError:
- # 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'):
- parameters = []
- return_annotation = Parameter.empty
else:
- raise
+ signature = inspect.signature(subject, follow_wrapped=True)
+ except ValueError:
+ # follow built-in wrappers up (ex. functools.lru_cache)
+ signature = inspect.signature(subject)
+ parameters = list(signature.parameters.values())
+ return_annotation = signature.return_annotation
try:
# Resolve annotations using ``get_type_hints()`` and type_aliases.