Freedom251 › Documentation Generators
PyDoctor

What PyDoctor is
PyDoctor is a free, standalone API documentation generator for Python modules, packages, and C modules. It statically analyzes source code and creates HTML pages that can be served without additional server-side support, along with an Intersphinx inventory for linking documentation. It generates separate pages for classes, modules, and packages and organizes details in tables. Supported docstring styles include epytext, reStructuredText, Google, NumPy, and plaintext. PyDoctor resolves imports and calculates inheritance hierarchies, and it understands zope.interface declarations, showing relationships between classes and interfaces. Sphinx inventories can link PyDoctor output with Sphinx documentation. Configuration works through pydoctor.ini, pyproject.toml, or setup.cfg, while command-line options cover themes, custom templates, and selected API objects. Installation instructions use PyPI with pip or apt on Debian derivatives. It runs on Linux, macOS, and Windows and supports publishing through GitHub Pages or Read the Docs.
Who it suits
PyDoctor is suited to Python library maintainers, especially projects with some internal subclassing. It also fits teams publishing static API references and linking them with Sphinx documentation.
What it does well
- Free plan available
- Generates static HTML API pages
- Resolves imports and inheritance
- Supports several docstring formats
- Runs on Linux, macOS, and Windows
What to know first
- Computed values need type annotations
- Python 3.8 support was dropped
- Best suited to libraries with internal subclassing
Verdict
PyDoctor provides static, configurable API documentation for Python projects, with inheritance, interface, and Sphinx-linking support. Its type-inference limitation and dropped Python 3.8 support are important compatibility considerations.
Facts from PyDoctor's own pages
- API pages
- Pydoctor generates a page for each class, module, and package, and presents information using tables. · pydoctor.readthedocs.io, 5 Oct 2026
- Best fit
- The FAQ describes PyDoctor as probably best suited to documenting libraries with some degree of internal subclassing. · pydoctor.readthedocs.io, 5 Oct 2026
- Configuration
- Pydoctor supports configuration through pydoctor.ini, pyproject.toml, and setup.cfg files. · pydoctor.readthedocs.io, 5 Oct 2026
- Customization
- The CLI provides options for themes, custom HTML templates, and which API objects to document. · pydoctor.readthedocs.io, 5 Oct 2026
- Docstring formats
- Supported docstring formats include epytext, reStructuredText, Google style, NumPy style, and plaintext. · pydoctor.readthedocs.io, 5 Oct 2026
- Generated output
- PyDoctor generates static HTML pages that need no additional server-side support. · pydoctor.readthedocs.io, 5 Oct 2026
- Imports and inheritance
- It resolves imports and computes inheritance hierarchies. · github.com, 5 Oct 2026
- Inheritance and imports
- The tool works to resolve imports and calculate inheritance hierarchies. · pydoctor.readthedocs.io, 5 Oct 2026
- Installation
- The documentation gives installation instructions through PyPI with pip and on Debian derivatives with apt. · pydoctor.readthedocs.io, 5 Oct 2026
- Intended users
- The documentation says pydoctor is probably best suited to documenting libraries with some degree of internal subclassing. · pydoctor.readthedocs.io, 5 Oct 2026
- Interface support
- It supports zope.interface and can show which classes implement which interfaces, and vice versa. · github.com, 5 Oct 2026
- Maintainer context
- The FAQ says PyDoctor was written for the Twisted project, whose needs remain the main driving force for its development. · pydoctor.readthedocs.io, 5 Oct 2026
- Notable limitation
- Pydoctor cannot infer types for computed values, so those need annotations for the type to appear in the generated documentation. · pydoctor.readthedocs.io, 5 Oct 2026
- Notable Python version limit
- The project changelog says Python 3.8 support was dropped in version 25.4.0. · github.com, 5 Oct 2026
- Output
- It generates static HTML files that can be served without extra server-side support. · pydoctor.readthedocs.io, 5 Oct 2026
- Output organization
- PyDoctor generates one page per class, module, and package, and presents information using tables. · pydoctor.readthedocs.io, 5 Oct 2026
- Project background
- Pydoctor was written primarily to replace epydoc for the Twisted project, and Twisted remains a main driver of its development. · pydoctor.readthedocs.io, 5 Oct 2026
- Publishing
- The documentation gives examples for publishing generated API docs with GitHub Pages and Read the Docs. · pydoctor.readthedocs.io, 5 Oct 2026
- Purpose
- PyDoctor is a standalone API documentation generator that uses static analysis of Python source code. · github.com, 5 Oct 2026
- Security policy
- The project says it follows Twisted’s security policy and directs security reports to GitHub Security Advisories. · github.com, 5 Oct 2026
- Sphinx integration
- The FAQ says Sphinx narrative documentation can link to API documentation formatted by PyDoctor. · pydoctor.readthedocs.io, 5 Oct 2026
- Supported systems
- The project changelog says it runs on Windows without requiring administrator privileges and describes testing supported platform combinations including Linux, macOS, and Windows. · github.com, 5 Oct 2026
- Zope interfaces
- Pydoctor recognizes zope.interface declarations and can show which classes implement which interfaces, and vice versa. · pydoctor.readthedocs.io, 5 Oct 2026
Where PyDoctor stands on Freedom251
- Documentation Generators#19 of 37