Skip to main content

Library to automate the generation of docstrings.

What is it?

The aim of the project is to employ AI to evaluate documented (and undocumented) code to establish their accuracy, and improving said documentation automatically.

Requirements

genpydoc supports Python 3.11 and above.

Currently, we only support OpenAI models, so you must provide a valid OpenAI API key.

export OPENAI_API_KEY=<your-key>

Installation

genpydoc is available on Pypi and GitHub.

Usage

Run it on one of your projects:

genpydoc [PATH]

Configuration

You can specify the following parameters, either in the pyproject.toml or through command line.

pyproject.toml Configuration

[tool.genpydoc]
exclude = ["./tests", "./docs"]
ignore-magic = false
ignore-nested-classes = false
ignore-nested-functions = false
ignore-overloaded-functions = false
ignore-private = false
ignore-property-decorators = false
ignore-setters = false
ignore-semiprivate = false
include-only-covered = true
run-on-diff = false
run-staged = false
target-branch = "main"
use-llm-provider = "openai"
use-model = "gpt-5-nano"
style = "google"

Command line options

Usage: python -m genpydoc [OPTIONS] [PATHS]...

Options:
  -e, --exclude PATH              Exclude PATHs of files and/or directories.
                                  Multiple `-e/--exclude` invocations
                                  supported.
  -m, --ignore-magic              Ignore all magic methods of classes.
                                  [default: False]

                                  NOTE: This does not include the `__init__`
                                  method. To ignore `__init__` methods, use
                                  `--ignore-init-method`.
  -C, --ignore-nested-classes     Ignore nested classes.
  -n, --ignore-nested-functions   Ignore nested functions and methods.
  -O, --ignore-overloaded-functions
                                  Ignore `@typing.overload`-decorated
                                  functions.
  -p, --ignore-private            Ignore private classes, methods, and
                                  functions starting with two underscores.
                                  [default: False]

                                  NOTE: This does not include magic methods;
                                  use `--ignore-magic` and/or `--ignore-init-
                                  method` instead.
  -P, --ignore-property-decorators
                                  Ignore methods with property
                                  setter/getter/deleter decorators.
  -S, --ignore-setters            Ignore methods with property setter
                                  decorators.
  -s, --ignore-semiprivate        Ignore semiprivate classes, methods, and
                                  functions starting with a single underscore.
  -o, --include-only-covered      Only include Node that have a docstring in
                                  the processing.  [default: False]
  -D, --run-on-diff               Only run the evaluator on Git diffed Nodes.
  -d, --run-staged                Run on staged diff changes (good for running
                                  locally before a commit).
  --target-branch TEXT            Provide the target branch for running git
                                  comparison.  [default: main]
  --use-llm-provider [openai]     Select the LLM provider.  [default: openai]
  --use-model [gpt-5-nano]        Select which LLM model to use for
                                  documenting.  [default: gpt-5-nano]
  --style [google|numpy|epytext|reST]
                                  Docstring types allowed.  [default: google]
  -h, --help                      Show this message and exit.
  -c, --config FILE               Read configuration from ``pyproject.toml``.

include_only_covered

By default, the package will extract every node of a script, regardless if they already contain a docstring. To only evaluate nodes already covered by docstrings, set this tag to True, or use -o in the CLI.

run_on_diff

Use this flag when you want to run the tool and only cover nodes that have been diffed. Paired up with run_staged or target_branch.

run_staged

Use this flag if you want to run the tool only local diffed changes, for example, if running with a commit hook. The tool will use the local staged changes and compare it to the git index.

target_branch

Specify the target branch to run the git diff against. Nodes affected by the diff will be filtered and used for analysis when commenting.

use_llm_provider

Specify the LLM provider to use to generate documentation. Only OPENAI is currently accepted.

use_model

Specify the LLM to use to generate documentation. As only OPENAI is currently accepted as provider, we only accept gpt-5-nano.

Release files for genpydoc 1.0.9

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for genpydoc 1.0.9
File Size Uploaded
genpydoc-1.0.9.tar.gz 15.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for genpydoc 1.0.9
File Interpreter ABI Platform
genpydoc-1.0.9-py3-none-any.whl Python 3 none any Details

Total release size: 35.5 kB

Release files / genpydoc-1.0.9.tar.gz

Download URL genpydoc-1.0.9.tar.gz
Size 15.9 kB
Tags Source
SHA-256 checksum
How to use checksums
b105019c9c0f0df659216f55341dfdc4f65a0bfe5a7704491521502b2fa913a3
BLAKE2b-256 checksum
How to use checksums
a26cccae189bbab431de6f777b604e60624c549773b440a7543772f753ea47d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.

Transparency log

Release files / genpydoc-1.0.9-py3-none-any.whl

Download URL genpydoc-1.0.9-py3-none-any.whl
Size 19.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b6b656dc766695e10ffcac114d580993639857179073219b35b39c976b786522
BLAKE2b-256 checksum
How to use checksums
cbcbbfc0e2e9deeb6e6be95ac1d72f6065605f76a2a4fc6acab98c4c19009883
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Mar 9, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.0.9 This release

2 release files

1.0.8

2 release files

1.0.5

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page