How it works ============ It works by hooking into 3 `sphinx.ext.autodoc` events autodoc-before-process-signature -------------------------------- This is the only place it is declared if we are looking at a bound method or not, so sphinx-apischema just keeps a record of whether the object to be documented is a bound method or not autodoc-process-signature ------------------------- Autodoc currently formats ``Annotated[str, schema(...)]`` as ``str[str]``, so sphinx-apischema reformats the signature to remove the types. For instance what autodoc would show as ``(arg1: float[float], arg2: str[str] = "default")`` it will produce ``(arg1, arg2="default")`` autodoc-process-docstring ------------------------- This takes the docstring and ``:param:`` information into it after the first blank line. For instance it will take a docstring that looks like:: """An introductory paragraph More paragraphs """ And produce:: """An introductory paragraph :param arg1 float: The decription for arg1 :param arg2 str: The description for arg2 More paragraphs """ It will format any of the arguments to ``apischema.schema`` like ``minimum`` and add to the description