Changelog
=========

Versions follow `Semantic Versioning <https://semver.org/>`_ (``<major>.<minor>.<patch>``).

.. towncrier release notes start

v2.1.1 (2023-06-10)
-------------------

Bugfixes
^^^^^^^^

- Fix "document isn't included" warning when using autoapi_add_toctree_entry (#319)
- Types used in PEP-604 union syntax can be linked with intersphinx (#366)
- Fix class overrides not rendering correctly.
- Fix separated type comments for arguments not merging correctly in Python 3.7
- Fixed viewcode being unable to find the source code for imported objects


Improved Documentation
^^^^^^^^^^^^^^^^^^^^^^

- Made it clearer how to customise what objects AutoAPI will document. (#339)


Misc
^^^^

- #375, #382


v2.1.0 (2023-03-28)
-------------------

Deprecations and Removals
^^^^^^^^^^^^^^^^^^^^^^^^^

- Support for documenting languages other than Python is deprecated. (#248)
- Removed the option to have autoapi generate toctree entries for domain objects.
  Domain objects are now added to the toctree by Sphinx.
  Dropped support for sphinx < 5.2.0. (#369)


Misc
^^^^

- Added basic type checking.
- Integrated towncrier into the release workflow.


v2.0.1 (2023-01-16)
-------------------

Features
^^^^^^^^
- Can turn off the addition of documented objects to the TOC tree.
- Added support for Python 3.11.

Bug Fixes
^^^^^^^^^
- `#330 <https://github.com/readthedocs/sphinx-autoapi/issues/330>`: (Python)
  Render tuple values as tuples, not lists.
- `#341 <https://github.com/readthedocs/sphinx-autoapi/issues/341>`: (Python)
  Fix module level assignments to class attributes being documented as
  module level attributes.
- (Python) Fix "bysource" sort order showing items in alphabetical order.
- (Python) Use the correct directives for a variable type and value.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^
- Removed some autogenerated test data from the repository.


v2.0.0 (2022-09-27)
-------------------

Breaking Changes
^^^^^^^^^^^^^^^^

- Dropped support for Sphinx <4.
- `#352 <https://github.com/readthedocs/sphinx-autoapi/issues/352>`: (Python)
  Properties are rendered with the ``property`` directive,
  fixing support for Sphinx 5.2.
  A new ``PythonPythonMapper`` object (``PythonProperty``) has been created
  to support this change. This object can be passed to templates, filters,
  and hooks.
  A new ``property.rst`` template has also been created to support this change.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^
- Use https links where possible in documentation.
- Pass correct argument types to ``status_iterator``.


V1.9.0 (2022-07-25)
-------------------

Breaking Changes
^^^^^^^^^^^^^^^^

- Dropped support for Python 3.6.

Features
^^^^^^^^

- Added support for Python 3.10.
- `#222 <https://github.com/readthedocs/sphinx-autoapi/issues/222>`:
  Marked extension as parallel read safe.

Bug Fixes
^^^^^^^^^
- `#324 <https://github.com/readthedocs/sphinx-autoapi/issues/324>`: (Python)
  Fail elegantly when no source files are found.
- (Python) Stop calling ``autodoc-process-docstring`` when docstring is empty.
  Works around https://github.com/sphinx-doc/sphinx/issues/10701.
- `#318 <https://github.com/readthedocs/sphinx-autoapi/issues/318>`: (Python)
  Fixed misaligned argument types on methods/classmethods when using type comments.
- `#278 <https://github.com/readthedocs/sphinx-autoapi/issues/278>`: (Python)
  Limit signatures to 60 characters in summaries.
- Fix keyerror when using markdown sources.
- `#328 <https://github.com/readthedocs/sphinx-autoapi/issues/328>`: (Python)
  Fix kw-only marker getting ignored if first in the signature.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed tests in Sphinx 5.
- Fixed many typos throughout the documentation.


v1.8.4 (2021-08-16)
-------------------

Bug Fixes
^^^^^^^^^
- `#301 <https://github.com/readthedocs/sphinx-autoapi/issues/301>`: (Python)
  Fixed compatibility with astroid 2.7+.


v1.8.3 (2021-07-31)
-------------------

Bug Fixes
^^^^^^^^^
- `#299 <https://github.com/readthedocs/sphinx-autoapi/issues/299>`: (Python)
  Fixed incorrect indentation in generated documentation when a class with no
  constructor has a summary line spanning multiple lines.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^
- Fixed broken link to Jinja objects.inv.


v1.8.2 (2021-07-26)
-------------------

Bug Fixes
^^^^^^^^^

- Fixed error when parsing a class with no constructor.
- `#293 <https://github.com/readthedocs/sphinx-autoapi/issues/293>`:
  Fixed failure to build out of source conf.py files.
  Configuration values using relative values are now relative to the source directory
  instead of relative to the conf.py file.
- `#289 <https://github.com/readthedocs/sphinx-autoapi/issues/289>`: (Python)
  Fixed AttributeError using inheritance diagrams on a module with plain imports.
- `#292 <https://github.com/readthedocs/sphinx-autoapi/issues/292>`:
  Explicitly use the domain for generated directives.


v1.8.1 (2021-04-24)
-------------------

Bug Fixes
^^^^^^^^^

- `#273 <https://github.com/readthedocs/sphinx-autoapi/issues/273>`:
  Fixed type annotations being shown for only a single module.


v1.8.0 (2021-04-12)
-------------------

Features
^^^^^^^^

- Expandable value for multi-line string attributes.
- `#265 <https://github.com/readthedocs/sphinx-autoapi/issues/265>`:
  Can resolve the qualified paths of parameters to generics.
- `#275 <https://github.com/readthedocs/sphinx-autoapi/issues/275>`:
  Warnings have been categorised and can be suppressed through ``suppress_warnings``.
- `#280 <https://github.com/readthedocs/sphinx-autoapi/issues/280>`:
  Data attributes are documented in module summaries.

Bug Fixes
^^^^^^^^^

- `#273 <https://github.com/readthedocs/sphinx-autoapi/issues/273>`:
  Fixed setting ``autodoc_typehints`` to ``none`` or ``description``
  not turning off signature type hints.
  ``autodoc_typehints`` integration is considered experimental until
  the extension properly supports overload functions.
- `#261 <https://github.com/readthedocs/sphinx-autoapi/issues/261>`:
  Fixed data annotations causing pickle or deepcopy errors.
- Documentation can be generated when multiple source directories
  share a single ``conf.py`` file.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed ``DeprecationWarning`` for invalid escape sequence ``\s`` in tests.
- Fixed ``FutureWarning`` for ``Node.traverse()`` becoming an iterator instead of list.
- New example implementation of ``autoapi-skip-member`` Sphinx event.
- Can run tests with tox 4.
- Updated packaging to use PEP-517.
- All unittest style tests have been converted to pytest style tests.
- An exception raised by docfx is raised directly instead of wrapping it.
- Started using Github Actions for continuous integration.


V1.7.0 (2021-01-31)
-------------------

Features
^^^^^^^^

- The fully qualified path of objects are included type annotations
  so that Sphinx can link to them.
- Added support for Sphinx 3.3. and 3.4.
- `#240 <https://github.com/readthedocs/sphinx-autoapi/issues/240>`:
  The docstrings of ``object.__init__``, ``object.__new__``,
  ``type.__init__``, and ``type.__new__`` are not inherited.

Bug Fixes
^^^^^^^^^

- `#260 <https://github.com/readthedocs/sphinx-autoapi/issues/260>`:
  The overload signatures of ``__init__`` methods are documented.


V1.6.0 (2021-01-20)
-------------------

Breaking Changes
^^^^^^^^^^^^^^^^

- Dropped support for Python 2 and Sphinx 1.x/2.x.
  Python 2 source code can still be parsed.

Features
^^^^^^^^

- (Python) Added support for using type hints as parameter types and return types
  via the ``sphinx.ext.autodoc.typehints`` extension.
- `#191 <https://github.com/readthedocs/sphinx-autoapi/issues/191>`:
  Basic incremental build support is enabled ``autoapi_keep_files`` is enabled.
  Providing none of the source files have changed,
  AutoAPI will skip parsing the source code and regenerating the API documentation.
- `#200 <https://github.com/readthedocs/sphinx-autoapi/issues/200>`:
  Can pass a callback that edits the Jinja Environment object before
  template rendering begins.
  This allows custom filters, tests, and globals to be added to the environment.
- Added support for Python 3.9.

Bug Fixes
^^^^^^^^^

- `#246 <https://github.com/readthedocs/sphinx-autoapi/issues/246>`: (Python)
  Fixed TypeError when parsing a class that inherits from ``type``.
- `#244 <https://github.com/readthedocs/sphinx-autoapi/issues/244>`:
  Fixed an unnecessary deprecation warning being raised when running
  sphinx-build from the same directory as conf.py.
- (Python) Fixed properties documented by Autodoc directives getting documented as methods.


V1.5.1 (2020-10-01)
-------------------

Bug Fixes
^^^^^^^^^

- Fixed AttributeError when generating an inheritance diagram for a module.


V1.5.0 (2020-08-31)
-------------------

This will be the last minor version to support Python 2 and Sphinx 1.x/2.x.

Features
^^^^^^^^

- `#222 <https://github.com/readthedocs/sphinx-autoapi/issues/222>`:
  Declare the extension as parallel unsafe.
- `#217 <https://github.com/readthedocs/sphinx-autoapi/issues/217>`: (Python)
  All overload signatures are documented.
- `#243 <https://github.com/readthedocs/sphinx-autoapi/issues/243>`:
  Files are found in order of preference according to ``autoapi_file_patterns``.
- Added support for Sphinx 3.2.

Bug Fixes
^^^^^^^^^

- `#219 <https://github.com/readthedocs/sphinx-autoapi/issues/219>`: (Python)
  Fixed return types not showing for methods.
- (Python) Fixed incorrect formatting of properties on generated method directives.
- Fixed every toctree entry getting added as a new list.
- `#234 <https://github.com/readthedocs/sphinx-autoapi/issues/234>`:
  Fixed only some entries getting added to the toctree.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- autoapisummary directive inherits from autosummary for future stability.


v1.4.0 (2020-06-07)
-------------------

Features
^^^^^^^^

- `#197 <https://github.com/readthedocs/sphinx-autoapi/issues/197>`: Added
  ``autoapi.__version__`` and ``autoapi.__version_info__`` attributes
  for accessing version information.
- `#201 <https://github.com/readthedocs/sphinx-autoapi/issues/201>`: (Python)
  Added the ``autoapi_member_order`` option to allow the order that members
  are documented to be configurable.
- `#203 <https://github.com/readthedocs/sphinx-autoapi/issues/203>`: (Python)
  A class without a docstring inherits one from its parent.
  A methods without a docstring inherits one from the method that it overrides.
- `#204 <https://github.com/readthedocs/sphinx-autoapi/issues/204>`: (Python)
  Added the ``imported-members`` AutoAPI option to be able to enable or disable
  documenting objects imported from the same top-level package or module
  without needing to override templates.

Bug Fixes
^^^^^^^^^

- `#198 <https://github.com/readthedocs/sphinx-autoapi/issues/198>`:
  Documentation describes the required layout for template override directories.
- `#195 <https://github.com/readthedocs/sphinx-autoapi/issues/195>`: (Python)
  Fixed incorrect formatting when ``show-inheritance-diagram``
  and ``private-members`` are turned on.
- `#193 <https://github.com/readthedocs/sphinx-autoapi/issues/193>` and
  `#208 <https://github.com/readthedocs/sphinx-autoapi/issues/208>`: (Python)
  Inheritance diagrams can follow imports to find classes to document.
- `#213 <https://github.com/readthedocs/sphinx-autoapi/issues/213>`: (Python)
  Fixed module summary never showing.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- black shows diffs by default
- `#207 <https://github.com/readthedocs/sphinx-autoapi/issues/207>`:
  Fixed a typo in the code of the golang tutorial.


v1.3.0 (2020-04-05)
-------------------

Breaking Changes
^^^^^^^^^^^^^^^^

- Dropped support for Python 3.4 and 3.5.

Features
^^^^^^^^

- `#151 <https://github.com/readthedocs/sphinx-autoapi/issues/151>`: (Python)
  Added the ``autoapi_python_use_implicit_namespaces`` option to allow
  AutoAPI to search for implicit namespace packages.
- Added support for Sphinx 2.2 and 2.3.
- Added support for Python 3.8.
- `#140 <https://github.com/readthedocs/sphinx-autoapi/issues/140>`: (Python)
  Added the ``autoapi-inheritance-diagram`` directive to create
  inheritance diagrams without importing modules.
  Enable the ``show-inheritance-diagram`` AutoAPI option to
  turn the diagrams on in generated documentation.
- `#183 <https://github.com/readthedocs/sphinx-autoapi/issues/183>`: (Python)
  Added the ``show-inheritance`` AutoAPI option to be able to enable or disable
  the display of a list of base classes in generated documentation about a class.
  Added the ``inherited-members`` AutoAPI option to be able to enable or disable
  the display of members inherited from a base class
  in generated documentation about a class.
- The ``autoapi_include_summaries`` option has been replaced with the
  ``show-module-summary`` AutoAPI option.
  ``autoapi_include_summaries`` will stop working in the next major version.
- Added support for Sphinx 2.4 and 3.0

Bug Fixes
^^^^^^^^^

- `#186 <https://github.com/readthedocs/sphinx-autoapi/issues/186>`: (Python)
  Fixed an exception when there are too many argument type annotations
  in a type comment.
- (Python) args and kwargs type annotations can be read from
  the function type comment.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- Tests are now included in the sdist.


v1.2.1 (2019-10-09)
-------------------

Bug Fixes
^^^^^^^^^

- (Python) "Invalid desc node" warning no longer raised for autodoc-style
  directives.


v1.2.0 (2019-10-05)
-------------------

Features
^^^^^^^^

- (Python) Can read per argument type comments with astroid > 2.2.5.
- (Python) Added autoapidecorator directive with Sphinx >= 2.0.
- (Python) Can use autodoc_docstring_signature with Autodoc-style directives.
- (Python) Added autoapi-skip-member event.
- Made it more clear which file causes an error, when an error occurs.
- Sphinx language domains are now optional dependencies.

Bug Fixes
^^^^^^^^^

- (Python) Forward reference annotations are no longer rendered as strings.
- (Python) autoapifunction directive no longer documents async functions as
  a normal function.
- (Python) Fixed unicode decode errors in some Python 3 situations.
- Documentation more accurately describes what configuration accepts
  relative paths and where they are relative to.


v1.1.0 (2019-06-23)
-------------------

Features
^^^^^^^^

- (Python) Can override ignoring local imports in modules by using __all__.

Bug Fixes
^^^^^^^^^

- (Python) Fixed incorrect formatting of functions and methods.
- Added support for Sphinx 2.1.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- Fixed some dead links in the README.
- Fixed lint virtualenv.


v1.0.0 (2019-04-24)
-------------------

Features
^^^^^^^^

- `#100 <https://github.com/readthedocs/sphinx-autoapi/issues/100>`: (Python)
  Added support for documenting C extensions via ``.pyi`` stub files.
- Added support for Sphinx 2.0.
- Toned down the API reference index page.
- (Go) Patterns configured in ``autoapi_ignore`` are passed to godocjson.
- New and improved documentation.
- No longer need to set ``autoapi_add_toctree_entry`` to False when ``autoapi_generate_api_docs`` is False.
- `#139 <https://github.com/readthedocs/sphinx-autoapi/issues/139>`
  Added support for basic type annotations in documentation generation and autodoc-style directives.

Bug Fixes
^^^^^^^^^

- `#159 <https://github.com/readthedocs/sphinx-autoapi/issues/159>`: (Python)
  Fixed ``UnicodeDecodeError`` on Python 2 when a documenting an attribute that contains binary data.
- (Python) Fixed private submodules displaying when ``private-members`` is turned off.
- Templates no longer produce excessive whitespace.
- (Python) Fixed an error when giving an invalid object to an autodoc-style directive.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- No longer pin the version of black.
- Added missing test environments to travis.


v0.7.1 (2019-02-04)
-------------------

Bug Fixes
^^^^^^^^^

- (Python) Fixed a false warning when importing a local module.


v0.7.0 (2019-01-30)
-------------------

Breaking Changes
^^^^^^^^^^^^^^^^

- Dropped support for Sphinx<1.6.

Features
^^^^^^^^

- Added debug messages about what AutoAPI is doing.

Bug Fixes
^^^^^^^^^

- `#156 <https://github.com/readthedocs/sphinx-autoapi/issues/156>`: (Python) Made import resolution more stable.

    Also capable of giving more detailed warnings.


Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- Code is now formatted using black.
- Removed references to old css and js files.
- Replaced usage of deprecated Sphinx features.
- Reorganised tests to be more pytest-like.


v0.6.2 (2018-11-15)
-------------------

Bug Fixes
^^^^^^^^^

- (Python) Fixed some import chains failing to resolve depending on resolution order.


v0.6.1 (2018-11-14)
-------------------

Bug Fixes
^^^^^^^^^

- (Python) Fixed unicode decoding on Python 3.7.
- (Python) Fixed autodoc directives not documenting anything in submodules or subpackages.
- (Python) Fixed error parsing files with unicode docstrings.
- (Python) Fixed error when documenting something that's imported in more than one place.


Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- (Python) Added Python 3.7 testing.
- Started testing against stable version of Sphinx 1.8.
- Fixed all "no title" warnings during tests.


v0.6.0 (2018-08-20)
-------------------

Breaking Changes
^^^^^^^^^^^^^^^^

- `#152 <https://github.com/readthedocs/sphinx-autoapi/issues/152>`: Removed the ``autoapi_add_api_root_toctree`` option.

    This has been replaced with the ``autoapi_add_toctree_entry`` option.

- `#25 <https://github.com/readthedocs/sphinx-autoapi/issues/25>`: Removed distutils support.
- Removed redundant ``package_dir`` and ``package_data`` options.

Features
^^^^^^^^

- (Python) Added viewcode support for imported members.
- `#146 <https://github.com/readthedocs/sphinx-autoapi/issues/146>`: (Python) No longer documents ``__init__()`` attributes without a docstring.
- `#153 <https://github.com/readthedocs/sphinx-autoapi/issues/153>`: (Python) Can document a public python API.
- `#111 <https://github.com/readthedocs/sphinx-autoapi/issues/111>`: (Python) Can opt to write manual documentation through new autodoc-style directives.
- `#152 <https://github.com/readthedocs/sphinx-autoapi/issues/152>`: Made it easier to remove default index page.

    Also removed autoapi_add_api_root_toctree config option

- `#150 <https://github.com/readthedocs/sphinx-autoapi/issues/150>`: (Python) ``private-members`` also controls private subpackages and submodules.
- (Python) Added support for static and class methods.
- (Python) Methods include ``self`` in their arguments.

    This more closely matches autodoc behaviour.

- `#145 <https://github.com/readthedocs/sphinx-autoapi/issues/145>`: (Python) Added support for detecting Python exceptions.
- (Python) Can control how __init__ docstring is displayed.
- (Python) Added support for viewcode.
- (Python) Source files no longer need to be in ``sys.path``.

Bug Fixes
^^^^^^^^^

- (Python) Fixed linking to builtin bases.
- (Python) Fixed properties being documented more than once when set in ``__init__()``.
- (Python) Fixed nested classes not getting displayed.
- `#148 <https://github.com/readthedocs/sphinx-autoapi/issues/148>`: (Python) Fixed astroid 2.0 compatibility.
- (Python) Fixed filtered classes and attributes getting displayed.
- (Python) Fixed incorrect display of long lists.
- `#125 <https://github.com/readthedocs/sphinx-autoapi/issues/125>`: (Javascript) Fixed running incorrect jsdoc command on Windows.
- `#125 <https://github.com/readthedocs/sphinx-autoapi/issues/125>`: (Python) Support specifying package directories in ``autoapi_dirs``.

Trivial/Internal Changes
^^^^^^^^^^^^^^^^^^^^^^^^

- Added Sphinx 1.7 and 1.8.0b1 testing.
- `#120 <https://github.com/readthedocs/sphinx-autoapi/issues/120>`: Updated documentation to remove outdated references.
- Removed old testing dependencies.
- `#143 <https://github.com/readthedocs/sphinx-autoapi/issues/143>`: Removed unnecessary wheel dependency.
