Generate MDX API documentation from Python modules
Project description
mdxify
Generate MDX API documentation from Python modules with automatic navigation structure.
Installation
pip install mdxify
Usage
Generate documentation for all modules in a package:
mdxify --all --root-module mypackage --output-dir docs/python-sdk
Generate documentation for specific modules:
mdxify mypackage.core mypackage.utils --output-dir docs/python-sdk
Exclude internal modules from documentation:
mdxify --all --root-module mypackage --exclude mypackage.internal --exclude mypackage.tests
Options
modules: Specific modules to document--all: Generate documentation for all modules under the root module--root-module: Root module to generate docs for (required when using --all)--output-dir: Output directory for generated MDX files (default: docs/python-sdk)--update-nav/--no-update-nav: Update docs.json navigation (default: True)--skip-empty-parents: Skip parent modules that only contain boilerplate (default: False)--anchor-name/--navigation-key: Name of the navigation anchor or group to update (default: 'SDK Reference')--exclude: Module to exclude from documentation (can be specified multiple times). Excludes the module and all its submodules.--repo-url: GitHub repository URL for source code links (e.g., https://github.com/owner/repo). If not provided, will attempt to detect from git remote.--branch: Git branch name for source code links (default: main)
Navigation Updates
mdxify can automatically update your docs.json navigation by finding either anchors or groups:
- First run: Add a placeholder in your
docs.jsonusing either format:
Anchor format (e.g., FastMCP):
{
"navigation": [
{
"anchor": "SDK Reference",
"pages": [
{"$mdxify": "generated"}
]
}
]
}
Group format (e.g., Prefect):
{
"navigation": [
{
"group": "SDK Reference",
"pages": [
{"$mdxify": "generated"}
]
}
]
}
- Subsequent runs: mdxify will find and update the existing anchor or group directly - no placeholder needed!
The --anchor-name parameter (or its alias --navigation-key) identifies which anchor or group to update.
Source Code Links
mdxify can automatically add links to source code on GitHub for all functions, classes, and methods:
# Auto-detect repository from git remote
mdxify --all --root-module mypackage
# Or specify repository explicitly
mdxify --all --root-module mypackage --repo-url https://github.com/owner/repo --branch develop
This adds source links next to each function/class/method that link directly to the code on GitHub.
Customizing Source Link Text
You can customize the link text/symbol using the MDXIFY_SOURCE_LINK_TEXT environment variable:
# Use custom text
export MDXIFY_SOURCE_LINK_TEXT="[src]"
mdxify --all --root-module mypackage
# Use emoji
export MDXIFY_SOURCE_LINK_TEXT="🔗"
mdxify --all --root-module mypackage
# Use different Unicode symbol (default is "view on GitHub ↗")
export MDXIFY_SOURCE_LINK_TEXT="⧉"
mdxify --all --root-module mypackage
Features
- Fast AST-based parsing - No module imports required
- MDX output - Compatible with modern documentation frameworks
- Automatic navigation - Generates hierarchical navigation structure
- Google-style docstrings - Formats docstrings using Griffe
- Smart filtering - Excludes private modules and known test patterns
Development
# Install development dependencies
uv sync
# Run tests
uv run pytest
# Run type checking
uv run ty check
# Run linting
uv run ruff check src/ tests/
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mdxify-0.2.18.tar.gz.
File metadata
- Download URL: mdxify-0.2.18.tar.gz
- Upload date:
- Size: 48.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9373a85d2588e1876c45612b0b5d21084421f0519b7d85a72ebfe0fc7f91f95
|
|
| MD5 |
0f3b7d6ce8a507e95962fd6fe1a0c2cb
|
|
| BLAKE2b-256 |
bed2a0cbbb3cd642b61aeaf72c90589ed8785b66e4e9693511309316a57b1d6b
|
File details
Details for the file mdxify-0.2.18-py3-none-any.whl.
File metadata
- Download URL: mdxify-0.2.18-py3-none-any.whl
- Upload date:
- Size: 18.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
12b49e319b69eb3731d7fbaf24b6ecfadd4ce8aa10c7fc9e9ffc09b05a17a82e
|
|
| MD5 |
27bbbcb4aef3bee90cb4626b330d02dd
|
|
| BLAKE2b-256 |
eb29db5937d66b311456e0a1310cd8ddc580ff109ce3259bdaaa4175cf26dabd
|