autodoc raises a parsing error if some extension generates a docstring
not having blank lines at the tail. This appends a blank line if
generated one does not contain it.
The HTML Builder crashes if error raised on copying html_static_files.
This handles the exception and show a better error message to let users
the reason of errors (ex. failed on extracting Jinja templates).
sphinx.util.inspect:isproperty() does not considers that
cached_property decorator that has been added since Python 3.8 is
a kind of properties. This fixes it.
`typing.get_type_hints()` raises NameError when the target object
contains unresolavable type annotation (ex. TYPE_CHECKING). This
handles the exception and use unresolved annotations for type hints.
Until Python 3.5.2, typing.get_type_hints() raises AttributeError if
given object does not have `__code__` attribute. This handles the
exception not to crash building documents.
Note: The AttributeError was fixed at 3.5.3
refs: 991d14fee1
``typing.get_type_hints()`` raises KeyError when a class having invalid
__module__ was given. This handles the exception not to crash on build
documents.
An annotated instance variable on super class is not documented when
derived class has also other annotated instance variables because
`obj.__annotations__` is overrided by derived class's type hints.
To get annotations of the target class correctly, this scans MRO to
get all of annotated instance variables.
So far, napoleon converts multiple paramaters declrarations to single
paramaeter fields (`:param:` and `:type:`) unexpectedly. As a result,
the output seems broken.
This converts it to multiple parameter fields (a pair of field for each
parameter declration) to build parameter successfully.
Note: The conversion rule is available only when napoleon_use_params=True.
To control trimming doctest flags manually, this adds new options
:trim-doctest-flags: and :no-trim-doctest-flags: to doctest
directives. It helps to describes doctest module itself in python
doc (see #6698).
Documenter.filter_members() have wrongly considered that an instance
variable not having a docstring should be skipped when
`:inherited-members:` option given.
This fixes the behavior when the instance variable has annotated.
Note: This doest not still detect well for not annotated instance
variables.