summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTakeshi KOMIYA <i.tkomiya@gmail.com>2020-06-08 22:23:46 +0900
committerGitHub <noreply@github.com>2020-06-08 22:23:46 +0900
commit23a51a3a33f0003854e08424f8bf6dce2bcaf6b7 (patch)
tree1a4f37c534ab080ecfd58588dc7e1f1c4d7a178e
parentd0cdf073bd36aaa050858df510455b145bc2c4bd (diff)
parentf98987b24ecff3c5d30ecb34ce0c8515132cde87 (diff)
downloadsphinx-git-23a51a3a33f0003854e08424f8bf6dce2bcaf6b7.tar.gz
Merge pull request #7797 from tk0miya/7791_TypeError_for_singledispatchfunction
Fix #7791: autodoc: TypeError is raised on documenting singledispatch function
-rw-r--r--CHANGES1
-rw-r--r--sphinx/ext/autodoc/__init__.py19
2 files changed, 18 insertions, 2 deletions
diff --git a/CHANGES b/CHANGES
index d19822de1..aca79be5d 100644
--- a/CHANGES
+++ b/CHANGES
@@ -123,6 +123,7 @@ Bugs fixed
* #7668: autodoc: wrong retann value is passed to a handler of
autodoc-proccess-signature
* #7711: autodoc: fails with ValueError when processing numpy objects
+* #7791: autodoc: TypeError is raised on documenting singledispatch function
* #7551: autosummary: a nested class is indexed as non-nested class
* #7661: autosummary: autosummary directive emits warnings twices if failed to
import the target module
diff --git a/sphinx/ext/autodoc/__init__.py b/sphinx/ext/autodoc/__init__.py
index 09db26948..06961d1f8 100644
--- a/sphinx/ext/autodoc/__init__.py
+++ b/sphinx/ext/autodoc/__init__.py
@@ -1222,7 +1222,15 @@ class FunctionDocumenter(DocstringSignatureMixin, ModuleLevelDocumenter): # typ
def annotate_to_first_argument(self, func: Callable, typ: Type) -> None:
"""Annotate type hint to the first argument of function if needed."""
- sig = inspect.signature(func)
+ try:
+ sig = inspect.signature(func)
+ except TypeError as exc:
+ logger.warning(__("Failed to get a function signature for %s: %s"),
+ self.fullname, exc)
+ return
+ except ValueError:
+ return
+
if len(sig.parameters) == 0:
return
@@ -1811,7 +1819,14 @@ class MethodDocumenter(DocstringSignatureMixin, ClassLevelDocumenter): # type:
def annotate_to_first_argument(self, func: Callable, typ: Type) -> None:
"""Annotate type hint to the first argument of function if needed."""
- sig = inspect.signature(func)
+ try:
+ sig = inspect.signature(func)
+ except TypeError as exc:
+ logger.warning(__("Failed to get a method signature for %s: %s"),
+ self.fullname, exc)
+ return
+ except ValueError:
+ return
if len(sig.parameters) == 1:
return