pystdoc: Python Structural & Topological Documentation Engine
pystdoc (Python Structural & Topological Documentation Engine) is an enterprise-grade, high-precision codebase and architectural documentation generator powered by LLMs, AST parsing, and libclang.
It analyzes codebases in bottom-up + top-down topological passes, constructs hierarchical execution/data models, and synthesizes clean, human-centric Markdown and Mermaid diagrams within a 16K context window.
📁 Output Directory: .docgen/
When pystdoc finishes, you can explore the complete documentation suite starting from .docgen/README.md:
your_project/
├── .docgen/ # <-- Centralized output directory
│ ├── README.md # Executive summary: "What does this project actually do?"
│ ├── design/ # System architecture and design documentation
│ │ ├── overview.md # Architecture overview & inter-module Mermaid diagram
│ │ ├── data_models.md # Data structure design, models, lifecycle & integrity
│ │ ├── execution_model.md # Runtime execution model, paradigms, & control flow
│ │ └── modules/ # Module-by-module detailed design documents
│ │ ├── module_a.md
│ │ └── ...
│ ├── documents/ # Granular symbol & source code documentation
│ │ ├── src/main.c.md # File-level overview and symbol list
│ │ ├── src/main.c.fn.main.md # Individual symbol document (with call graph & context)
│ │ └── ...
│ ├── files.txt # List of scanned source files
│ └── index.db # SQLite WAL database for instantaneous incremental caching
├── src/
└── ...
🌟 Key Features
- Topological & Structural Ordering (Tarjan SCC + Kahn DAG):
- Evaluates call graphs in $O(V+E)$ linear time.
- Automatically breaks cyclic mutual recursions and organizes code symbols into dependency-safe execution levels.
- Level-by-level parallel LLM execution guarantees context-rich bottom-up summaries without race conditions.
- 3-in-1 Unified Documentation Pipeline:
docgen: Bottom-up & top-down symbol-level documentation with SHA-256 and SQLite caching (.docgen/documents/).designgen: Map-Reduce architectural synthesis (.docgen/design/).reportgen/pystdoc: Executive summary README (.docgen/README.md) answering "What does this project actually do?"
- C/C++, Python & Shell Deep Understanding:
compile_commands.jsonIntegration: Full include path resolution and macro expansion vialibclang.- Fully Qualified Domain Names (FQDN): Disambiguates identical symbol names across large monorepos.
- Standard LLM Options & Multi-Language Support:
- Works with Ollama, LiteRT-LM, vLLM, and OpenAI API.
- Supports
--host,--model,--token/--api-key,--context-size, and--language(e.g.English,Japanese,日本語).
🚀 Quick Start
Installation
pip install pystdoc
Basic Usage
1. Generate Full Documentation & README (One Command)
pystdoc --dir ./my_project/
Output will be created at ./my_project/.docgen/README.md.
2. Generate in Japanese
pystdoc --dir ./my_project/ --language 日本語
3. Run Individual Steps
# Generate symbol-level docs into .docgen/documents/
docgen --dir ./my_project/ -j 4
# Synthesize architecture design docs into .docgen/design/
designgen --dir ./my_project/
4. Practical Real-World Example (Dedicated Remote LLM Server)
pystdoc --dir ./target_project/ --host 192.168.0.123:11434 --model gemma4-26b-a4b --language 日本語
⚙️ CLI Options
| Option | Alias / Env | Default | Description |
|---|---|---|---|
--dir |
./ |
Target project directory path | |
--language |
-l |
English |
Output documentation language (English, Japanese, 日本語) |
--host |
-H, --base-url |
http://127.0.0.1:11434 |
LLM server host endpoint URL |
--model |
-m, LLM_MODEL |
gemma4-26b-a4b |
LLM model identifier |
--token |
--api-key, OPENAI_API_KEY |
None |
API Bearer token |
--context-size |
--ctx-size |
16384 |
Context window size |
--concurrency |
-j |
1 |
Number of parallel LLM workers |
--force |
-f |
false |
Force regenerate all documents ignoring cache |
--compile-commands |
None |
Path to compile_commands.json |
📄 License
MIT License. Author: tab4moji.
Metadata
Release files for pystdoc 0.5.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| pystdoc-0.5.5.tar.gz | 59.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| pystdoc-0.5.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 104.2 kB
Release files / pystdoc-0.5.5.tar.gz
| Download URL | pystdoc-0.5.5.tar.gz |
|---|---|
| Size | 59.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
81114d26a493c0c3cb025d96c87018c4ae3789be2c1d7c6d58ac02a79e5b522a
|
|
BLAKE2b-256 checksum How to use checksums |
d57c0f9b4f0d4b54e2585965cc6bf4438e4e9213b3dde27290857c989f793b6f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|
Release files / pystdoc-0.5.5-py3-none-any.whl
| Download URL | pystdoc-0.5.5-py3-none-any.whl |
|---|---|
| Size | 44.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
fb6e8f09dbb7d3a7a20de4278a55de5737589744c89a481fa850c068724869c4
|
|
BLAKE2b-256 checksum How to use checksums |
f7ed4895f47afe741c0a05f665fb3acd164c866538083ac1641fd96358f454dd
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.6
|