.. _doc: Documenting semver ================== Documenting the features of semver is very important. It gives our developers an overview what is possible with semver, how it "feels", and how it is used efficiently. .. note:: To build the documentation locally use the following command:: $ tox -e docs The built documentation is available in :file:`docs/_build/html`. A new feature is *not* complete if it isn't proberly documented. A good documentation includes: * **A docstring** Each docstring contains a summary line, a linebreak, an optional directive (see next item), the description of its arguments in `Sphinx style`_, and an optional doctest. The docstring is extracted and reused in the :ref:`api` section. An appropriate docstring should look like this:: def to_tuple(self) -> VersionTuple: """ Convert the Version object to a tuple. .. versionadded:: 2.10.0 Renamed ``VersionInfo._astuple`` to ``VersionInfo.to_tuple`` to make this function available in the public API. :return: a tuple with all the parts >>> semver.Version(5, 3, 1).to_tuple() (5, 3, 1, None, None) """ * **An optional directive** If you introduce a new feature, change a function/method, or remove something, it is a good practice to introduce Sphinx directives into the docstring. This gives the reader an idea what version is affected by this change. The first required argument, ``VERSION``, defines the version when this change was introduced. You can choose from: * ``.. versionadded:: VERSION`` Use this directive to describe a new feature. * ``.. versionchanged:: VERSION`` Use this directive to describe when something has changed, for example, new parameters were added, changed side effects, different return values, etc. * ``.. deprecated:: VERSION`` Use this directive when a feature is deprecated. Describe what should be used instead, if appropriate. Add such a directive *after* the summary line, as shown above. * **The documentation** A docstring is good, but in most cases it's too dense. API documentation cannot replace a good user documentation. Describe how to use your new feature in our documentation. Here you can give your readers more examples, describe it in a broader context or show edge cases. .. _Sphinx style: https://sphinx-rtd-tutorial.rtfd.io/en/latest/docstrings.html