Skip to main content

Use AI agent to analyze if a method's documentation is correct and sufficient.

Project description

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.

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

genpydoc-1.0.9.tar.gz (15.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

genpydoc-1.0.9-py3-none-any.whl (19.6 kB view details)

Uploaded Python 3

File details

Details for the file genpydoc-1.0.9.tar.gz.

File metadata

  • Download URL: genpydoc-1.0.9.tar.gz
  • Upload date:
  • Size: 15.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for genpydoc-1.0.9.tar.gz
Algorithm Hash digest
SHA256 b105019c9c0f0df659216f55341dfdc4f65a0bfe5a7704491521502b2fa913a3
MD5 96283e14c01e66dc546b7b106d70ab7c
BLAKE2b-256 a26cccae189bbab431de6f777b604e60624c549773b440a7543772f753ea47d5

See more details on using hashes here.

Provenance

The following attestation bundles were made for genpydoc-1.0.9.tar.gz:

Publisher: publish.yml on ernestvmo/genpydoc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file genpydoc-1.0.9-py3-none-any.whl.

File metadata

  • Download URL: genpydoc-1.0.9-py3-none-any.whl
  • Upload date:
  • Size: 19.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for genpydoc-1.0.9-py3-none-any.whl
Algorithm Hash digest
SHA256 b6b656dc766695e10ffcac114d580993639857179073219b35b39c976b786522
MD5 bed5300e5b1800c8fc1e3b0e8d2cc962
BLAKE2b-256 cbcbbfc0e2e9deeb6e6be95ac1d72f6065605f76a2a4fc6acab98c4c19009883

See more details on using hashes here.

Provenance

The following attestation bundles were made for genpydoc-1.0.9-py3-none-any.whl:

Publisher: publish.yml on ernestvmo/genpydoc

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

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