Skip to main content

A Python docstring linter that checks arguments, returns, yields, and raises sections

Project description

pydoclint

Pydoclint is a Python docstring linter to check whether a docstring's sections (arguments, returns, raises, ...) match the function signature or function implementation.

It runs really fast. In fact, it can be thousands of times faster than darglint (or its maintained fork darglint2).

Here is a comparison of linting time on some famous Python projects:

pydoclint darglint
numpy 2.0 sec 49 min 9 sec (1,475x slower)
scikit-learn 2.4 sec 3 hr 5 min 33 sec (4,639x slower)

Additionally, pydoclint can detect some quite a few style violations that darglint cannot.

Currently, pydoclint supports three docstring styles: numpy, Google, and Sphinx.

Another note: this linter and pydocstyle serves complementary purposes. It is recommended that you use both together.

The full documentation of pydoclint (including this README) can be found here: https://jsh9.github.io/pydoclint

The corresponding Github repository of pydoclint is: https://github.com/jsh9/pydoclint


Table of Contents

1. Installation

To install only the native pydoclint tooling, run this command:

pip install pydoclint

To use pydoclint as a flake8 plugin, please run this command, which will also install flake8 to the current Python environment:

pip install pydoclint[flake8]

Note that pydoclint currently only supports Python 3.8 and above. (Python 3.7 support may be added if there are interests and requests.)

2. Usage

2.1. As a native command line tool

pydoclint <FILE_OR_FOLDER>

Replace <FILE_OR_FOLDER> with the file/folder names you want, such as ..

2.2. As a flake8 plugin

Once you install pydoclint you will have also installed flake8. Then you can run:

flake8 --select=DOC <FILE_OR_FOLDER>

If you don't include --select=DOC in your command, flake8 will also run other built-in flake8 linters on your code.

2.3. As a pre-commit hook

pydoclint is configured for pre-commit and can be set up as a hook with the following .pre-commit-config.yaml configuration:

- repo: https://github.com/jsh9/pydoclint
  rev: <latest_tag>
  hooks:
    - id: pydoclint
      args: [--style=google, --check-return-types=False]

You will need to install pre-commit and run pre-commit install.

2.4. Native vs flake8

Should I use pydoclint as a native command line tool or a flake8 plugin? Here's comparison:

Pros Cons
Native tool Slightly faster; supports "baseline" [*] No inline or project-wide omission support right now [**]
flake8 plugin Supports inline or project-wide omission Slightly slower because other flake8 plugins are run together

*) "Baseline" allows you to log the current violation state of your existing project, making adoption of pydoclint much easier.

**) This feature may be added in the near future

2.5. How to configure pydoclint

pydoclint offers many configuration options for you to tune it according to your team's style convention and preference.

Please read this page for instructions on configuring pydoclint: How to configure pydoclint

2.6. How to ignore certain violations in flake8 mode

Please read this page: How to ignore certain violations

3. Style violation codes

pydoclint currently has 7 categories of style violation codes:

  • DOC0xx: Docstring parsing issues
  • DOC1xx: Violations about input arguments
  • DOC2xx: Violations about return argument(s)
  • DOC3xx: Violations about class docstring and class constructor
  • DOC4xx: Violations about "yield" statements
  • DOC5xx: Violations about "raise" statements
  • DOC6xx: Violations about class attributes

For detailed explanations of each violation code, please read this page: pydoclint style violation codes.

4. Notes for users

If you'd like to use pydoclint for your project, it is recommended that you read these additional notes here.

Specifically, there is a section in the additional notes on how to easily adopt pydoclint for existing legacy projects.

5. Notes for developers

If you'd like to contribute to the code base of pydoclint, thank you!

This guide can hopefully help you get familiar with the code base faster.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pydoclint-0.5.5.tar.gz (46.7 kB view details)

Uploaded Source

Built Distribution

pydoclint-0.5.5-py2.py3-none-any.whl (44.8 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file pydoclint-0.5.5.tar.gz.

File metadata

  • Download URL: pydoclint-0.5.5.tar.gz
  • Upload date:
  • Size: 46.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for pydoclint-0.5.5.tar.gz
Algorithm Hash digest
SHA256 38eaed27c32eaa8d7e8136857aba87e5bc8f626c850e41eacf7665eeceb8d6a2
MD5 3dba6a258cf2e24b44f6633cc4a1270b
BLAKE2b-256 660c75277815245f1d7cb6db224073df74b93b84f420456ce1cdb37255d62095

See more details on using hashes here.

File details

Details for the file pydoclint-0.5.5-py2.py3-none-any.whl.

File metadata

  • Download URL: pydoclint-0.5.5-py2.py3-none-any.whl
  • Upload date:
  • Size: 44.8 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.9.19

File hashes

Hashes for pydoclint-0.5.5-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 4c65be3b7321691d509a4b8f9ca6932b5f800619ed32c935f7dee145fc9e3dc8
MD5 4470bfe951fc7614f93e77d37594922f
BLAKE2b-256 b26dd0fa5f98512a078c306a914e4ca5c779176b6432eab41a57e8c3fb2bb217

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page