pydoctor
API doc generator.
What it is and what it does
pydoctor is a standalone API documentation generator that builds reference docs by parsing Python source code without executing it. It was created to replace epydoc for the Twisted project, particularly to handle zope.interface declarations that epydoc struggled with. The tool performs static analysis to resolve imports, compute inheritance hierarchies, and understand interface implementations.
It supports five docstring markup formats—epytext (the default), reStructuredText, Google style, Numpy style, and plaintext—letting you choose the format that fits your project. pydoctor can generate HTML output with multiple theme options, integrates with Sphinx via intersphinx for cross-linking to external docs, and handles modern Python features including namespace packages (PEP 420) and generic types. Recent versions added support for doc-comments (Sphinx-style `#:` comments) and improved C-module introspection.
Use it for:
- Generate API docs for Twisted-like projects that use zope.interface heavily
- Migrate from epydoc to a Python 3-native documentation tool without rewriting docstrings
- Build searchable HTML API reference for a library with multiple docstring styles across modules
- Integrate API docs into a Sphinx project using intersphinx for unified cross-linking
- Document namespace packages and modern Python code structures that older tools don't handle
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
pydoctor generates API documentation from Python source code through static analysis, supporting multiple docstring formats including epytext, reStructuredText, Google, and Numpy styles.
Yes. pydoctor is mature, actively maintained, has no known vulnerabilities, and installs cleanly. It solves a real problem (epydoc replacement with zope.interface support) and is the right choice if you need static API doc generation, especially for Twisted-adjacent projects or if you're migrating from epydoc. The broad docstring format support and modern Python compatibility make it suitable for most new projects.
Install
pydoctor on PyPI
pip
pip install pydoctoruv
uv add pydoctorpoetry
poetry add pydoctorInstalling pydoctor
Before you install
Low install friction with a pure-wheel distribution. Actively maintained with recent commits and no known vulnerabilities. Supports Python 3.9 through 3.14 and PyPy, with mature status and over a decade of development history.
License in practice
MIT/X11 permissive license allows use in both open-source and proprietary projects with minimal restrictions.
Quickstart
pip install pydoctor
pydoctor --html-output=docs/api src/mylib
Requires Python 3.9 or later; project source must be discoverable via static analysis.
Verify before relying
- Whether the package handles all zope.interface patterns correctly in practice
- Performance characteristics on very large codebases
- Completeness of C-module introspection support beyond data descriptors
Package facts
| License | MIT/X11 (permissive) |
| Python support | supports the current Python release (>=3.9) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 10 — platformdirs, CacheControl, Twisted, urllib3, requests, attrs, docutils, lunr, configargparse, tomli |
| Maintenance | actively maintained — 319 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 110,549/month — #12,453 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: pydoctor-25.10.1-py3-none-any.whl
Tags
More Documentation packages
Docutils converts plaintext documentation in…
unclear · top 1,000 on PyPI
SphinxSphinx generates professional documentation…
permissive · top 1,000 on PyPI
griffeGriffe extracts the complete structure and…
permissive · top 1,000 on PyPI
sphinxcontrib-serializinghtmlA Sphinx extension that outputs documentation…
permissive · top 1,000 on PyPI
alabasterAlabaster is a clean, responsive Sphinx theme…
permissive · top 1,000 on PyPI
sphinxcontrib-htmlhelpA Sphinx extension that generates HTML help…
permissive · top 1,000 on PyPI
docstring-parserParses Python docstrings in ReST, Google,…
permissive · top 1,000 on PyPI
numpydocA Sphinx extension that parses and renders…
permissive · top 5,000 on PyPI
docstring-parser-forkParses Python docstrings in ReST, Google,…
permissive · top 5,000 on PyPI
pdoc3Generates API documentation for Python 3+…
agpl · top 15,000 on PyPI
pytkdocsExtracts and serializes Python object…
permissive · top 15,000 on PyPI
docstring-to-markdownConverts Python docstrings from…
copyleft · top 5,000 on PyPI
mkdocstrings-pythonGenerates API documentation for Python projects…
permissive · top 5,000 on PyPI
haystack-pydoc-toolsGenerates Docusaurus-compatible Markdown API…
permissive · top 15,000 on PyPI