docsig icon indicating copy to clipboard operation
docsig copied to clipboard

Check signature params for proper documentation

|

.. image:: https://raw.githubusercontent.com/jshwi/docsig/master/docs/static/docsig.svg :alt: docsig logo :width: 50% :align: center

|

|License| |PyPI| |CI| |CodeQL| |pre-commit.ci status| |codecov.io| |readthedocs.org| |python3.8| |Black| |isort| |docformatter| |pylint| |Security Status| |Known Vulnerabilities| |docsig|

.. |License| image:: https://img.shields.io/badge/License-MIT-yellow.svg :target: https://opensource.org/licenses/MIT :alt: License .. |PyPI| image:: https://img.shields.io/pypi/v/docsig :target: https://pypi.org/project/docsig/ :alt: PyPI .. |CI| image:: https://github.com/jshwi/docsig/actions/workflows/build.yaml/badge.svg :target: https://github.com/jshwi/docsig/actions/workflows/build.yaml :alt: CI .. |CodeQL| image:: https://github.com/jshwi/docsig/actions/workflows/codeql-analysis.yml/badge.svg :target: https://github.com/jshwi/docsig/actions/workflows/codeql-analysis.yml :alt: CodeQL .. |pre-commit.ci status| image:: https://results.pre-commit.ci/badge/github/jshwi/docsig/master.svg :target: https://results.pre-commit.ci/latest/github/jshwi/docsig/master :alt: pre-commit.ci status .. |codecov.io| image:: https://codecov.io/gh/jshwi/docsig/branch/master/graph/badge.svg :target: https://codecov.io/gh/jshwi/docsig :alt: codecov.io .. |readthedocs.org| image:: https://readthedocs.org/projects/docsig/badge/?version=latest :target: https://docsig.readthedocs.io/en/latest/?badge=latest :alt: readthedocs.org .. |python3.8| image:: https://img.shields.io/badge/python-3.8-blue.svg :target: https://www.python.org/downloads/release/python-380 :alt: python3.8 .. |Black| image:: https://img.shields.io/badge/code%20style-black-000000.svg :target: https://github.com/psf/black :alt: Black .. |isort| image:: https://img.shields.io/badge/%20imports-isort-%231674b1?style=flat&labelColor=ef8336 :target: https://pycqa.github.io/isort/ :alt: isort .. |docformatter| image:: https://img.shields.io/badge/%20formatter-docformatter-fedcba.svg :target: https://github.com/PyCQA/docformatter :alt: docformatter .. |pylint| image:: https://img.shields.io/badge/linting-pylint-yellowgreen :target: https://github.com/PyCQA/pylint :alt: pylint .. |Security Status| image:: https://img.shields.io/badge/security-bandit-yellow.svg :target: https://github.com/PyCQA/bandit :alt: Security Status .. |Known Vulnerabilities| image:: https://snyk.io/test/github/jshwi/docsig/badge.svg :target: https://snyk.io/test/github/jshwi/docsig/badge.svg :alt: Known Vulnerabilities .. |docsig| image:: https://snyk.io/advisor/python/docsig/badge.svg :target: https://snyk.io/advisor/python/docsig :alt: docsig

Check signature params for proper documentation

Supports reStructuredText (Sphinx), NumPy, and Google

Contributing

If you are interested in contributing to docsig please read about contributing here <https://docsig.readthedocs.io/en/latest/development/contributing.html>__

Installation

.. code-block:: console

$ pip install docsig

Usage

Commandline


.. code-block:: console

usage: docsig [-h] [-V] [-l] [-c | -C] [-D] [-m] [-N] [-o] [-p] [-P] [-i] [-a] [-k] [-T]
              [-I] [-n] [-v] [-s STR] [-d LIST] [-t LIST] [-e PATTERN]
              [path [path ...]]

Check signature params for proper documentation

positional arguments:
  path                                 directories or files to check

optional arguments:
  -h, --help                           show this help message and exit
  -V, --version                        show program's version number and exit
  -l, --list-checks                    display a list of all checks and their messages
  -c, --check-class                    check class docstrings
  -C, --check-class-constructor        check __init__ methods. Note: mutually incompatible
                                       with -c
  -D, --check-dunders                  check dunder methods
  -m, --check-protected-class-methods  check public methods belonging to protected classes
  -N, --check-nested                   check nested functions and classes
  -o, --check-overridden               check overridden methods
  -p, --check-protected                check protected functions and classes
  -P, --check-property-returns         check property return values
  -i, --ignore-no-params               ignore docstrings where parameters are not
                                       documented
  -a, --ignore-args                    ignore args prefixed with an asterisk
  -k, --ignore-kwargs                  ignore kwargs prefixed with two asterisks
  -T, --ignore-typechecker             ignore checking return values
  -I, --include-ignored                check files even if they match a gitignore pattern
  -n, --no-ansi                        disable ansi output
  -v, --verbose                        increase output verbosity
  -s STR, --string STR                 string to parse instead of files
  -d LIST, --disable LIST              comma separated list of rules to disable
  -t LIST, --target LIST               comma separated list of rules to target
  -e PATTERN, --exclude PATTERN        regular expression of files or dirs to exclude from
                                       checks

Options can also be configured with the pyproject.toml file

.. code-block:: toml

[tool.docsig]
check-dunders = false
check-overridden = false
check-protected = false
disable = [
    "E101",
    "E102",
    "E103",
]
target = [
    "E102",
    "E103",
    "E104",
]

API


.. code-block:: python

>>> from docsig import docsig

.. code-block:: python

>>> string = """
... def function(param1, param2, param3) -> None:
...     '''
...
...     :param param1: About param1.
...     :param param2: About param2.
...     :param param3: About param3.
...     '''
...     """
>>> docsig(string=string, no_ansi=True)
0

.. code-block:: python

>>> string = """
... def function(param1, param2) -> None:
...     '''
...
...     :param param1: About param1.
...     :param param2: About param2.
...     :param param3: About param3.
...     '''
... """
>>> docsig(string=string, no_ansi=True)
2 in function
    E102: includes parameters that do not exist (params-do-not-exist)
1

A full list of checks can be found here <https://docsig.readthedocs.io/en/latest/usage/messages.html>__

Message Control


Documentation on message control <https://docsig.readthedocs.io/en/latest/usage/message-control.html>_

Classes


Documenting classes <https://docsig.readthedocs.io/en/latest/usage/configuration.html#classes>_

pre-commit


docsig can be used as a pre-commit <https://pre-commit.com>_ hook

It can be added to your .pre-commit-config.yaml as follows:

.. code-block:: yaml

repos:
  - repo: https://github.com/jshwi/docsig
    rev: v0.53.3
    hooks:
      - id: docsig
        args:
          - "--check-class"
          - "--check-dunders"
          - "--check-overridden"
          - "--check-protected"