sphinx/tests/roots/test-ext-autodoc/target/singledispatch.py
Antony Lee f9048cf18e Handle singledispatch functions with rewritten signatures.
If a singledispatch function has its `__signature__` rewritten, autodoc
fails to annotate that signature because `func.__annotations__` is not
consulted.  Instead, directly assign to `__signature__` instead.
2020-03-14 22:52:45 +01:00

28 lines
520 B
Python

from functools import singledispatch
import inspect
def assign_signature(func):
# This is intended to cover more complex signature-rewriting decorators.
func.__signature__ = inspect.signature(func)
return func
@singledispatch
def func(arg, kwarg=None):
"""A function for general use."""
pass
@func.register(int)
def _func_int(arg, kwarg=None):
"""A function for int."""
pass
@func.register(str)
@assign_signature
def _func_str(arg, kwarg=None):
"""A function for str."""
pass