Registry / web-framework / exhale

exhale

JSON →
library0.3.7pypypi✓ verified 84d ago

Exhale is a Sphinx extension designed to automatically generate C++ library API documentation. It integrates Doxygen's XML output with Sphinx, providing features like class, file, and page hierarchies within Sphinx-generated websites. Currently at version 0.3.7, Exhale is actively maintained with releases focusing on bug fixes and dependency updates.

pip install exhale
INSTALL
IMPORT
SIG · EXHALE
E
exhale
web-frameworkpythonv0.3.7
Install
6.3s avg
Import
Disk
110MB
Pass rate
10/ 10
Env Coverage10 / 10
glibc
3.93.13
musl
3.93.13
Install & Compatibility
Where this runs
tested against v0.3.7 · pip install
no network on importno background threads
Install × environment matrix
Each cell = how many times install + import succeeded across repeated harness runs. Partial = flaky.
glibc = Debian/Ubuntu slim · musl = Alpine Linux
musl
py 3.103.940 runs
installs and imports cleanly · install 0.0s · import 0.000s · 107.3MB
glibc
py 3.103.940 runs
installs and imports cleanly · install 6.3s · import 0.000s · 108MB
110MB installed
● package 110MB
Code
Verified usage

Verified import paths — ran on the pinned version, not inferred.

setup
from exhale import setup
from exhale import generate
cleanup_files
from exhale import cleanup_files
environment_ready
from exhale import environment_ready

To quickly integrate Exhale, first run `sphinx-quickstart` in your documentation directory. Then, modify your `conf.py` to include `breathe` and `exhale` in your extensions. Configure `breathe_projects`, `breathe_default_project`, and the `exhale_args` dictionary. Ensure Doxygen XML output is correctly configured. Finally, link the generated API root file (`api/library_root.rst` by default) into your main `index.rst` using a `toctree` directive.

import os import sys # Add these to your conf.py after `extensions` list and other configurations # Assuming your Doxygen XML output is in `_build/doxyoutput/xml` relative to docs/conf.py # and your C++ source is in `../include` relative to docs/ extensions = [ 'sphinx.ext.autodoc', 'sphinx.ext.autosummary', 'sphinx.ext.doctest', 'sphinx.ext.intersphinx', 'sphinx.ext.viewcode', 'breathe', 'exhale' ] # Breathe configuration breathe_projects = {"My Project": "_build/doxyoutput/xml"} breathe_default_project = "My Project" # Exhale configuration exhale_args = { "doxygenIndexXMLPath": "_build/doxyoutput/xml/index.xml", "containmentFolder": "./api", "rootFileName": "library_root.rst", "rootFileTitle": "Library API", "doxygenStripFromPath": "..", "createTreeView": True, "exhaleExecutesDoxygen": True, "exhaleDoxygenStdin": "INPUT = ../../include" } # Tell sphinx what the primary language being documented is. primary_domain = 'cpp' # Tell sphinx what the pygments highlight language should be. highlight_language = 'cpp' # If you choose to execute Doxygen separately, remove 'exhaleExecutesDoxygen' and 'exhaleDoxygenStdin' # and ensure Doxygen output is generated before Sphinx build. # Add 'api/library_root' to a toctree directive in your index.rst, e.g.: # # .. toctree:: # :maxdepth: 2 # :caption: Contents: # # api/library_root
Debug
Known issues
breakingExhale dropped support for Python 2.7 in versions 0.3.x. Users must use Python 3.7+ (recommended 3.8+). Compatibility with specific Sphinx and Breathe versions is also critical.
fix
Upgrade to Python 3.8+ and ensure Sphinx (>=2.0) and Breathe (>=4.13.0) are installed for `exhale>=0.3.0`.
affects: >=0.3.0
breakingThe internal link generation scheme changed significantly in v0.2.0, potentially breaking existing internal links in documentation.
fix
Review and update internal links if upgrading from `exhale<0.2.0`. The current scheme is more stable but may still require adjustments if previous versions are heavily relied upon.
affects: 0.2.0-0.3.x
gotchaExhale's output heavily depends on valid Doxygen XML. Warnings or errors in your Doxygen build will likely result in unexpected, incorrect, or incomplete API documentation from Exhale.
fix
Always resolve all Doxygen warnings and errors in your C++ project before generating documentation with Exhale.
affects: All
gotchaWindows users may encounter issues with excessively long file paths generated by Doxygen/Sphinx, even if Exhale attempts to handle them.
fix
Build documentation in a higher-level directory (e.g., `C:\your_project`) to reduce path length issues, especially on Windows.
affects: All
gotchaThe `containmentFolder` for Exhale's generated reStructuredText files *must* be a subdirectory of your Sphinx source directory and cannot be the root (`.`) or the Sphinx build output directory (`_build`).
fix
Set `containmentFolder` to a dedicated subdirectory, e.g., `./api`, within your Sphinx source directory.
affects: All
Upgrade
Version history
0.3.7latest on PyPI · released Jan 21, 2024
Audit
Dependencies
sphinxrequiredRequired Python package; Exhale is a Sphinx extension.
breatherequiredRequired Python package for parsing Doxygen XML into Sphinx directives.
doxygenrequiredRequired external C++ documentation tool to generate XML input for Exhale.
beautifulsoup4requiredPython dependency for parsing generated Doxygen XML documentation.
lxmlrequiredPython dependency for parsing generated Doxygen XML documentation.
sixrequiredPython dependency, historically for Python 2/3 compatibility, though Exhale 0.3.x requires Python 3.8+.
Agent activity
7 hits · last 30 days
node
6
Amazon
1
Resources
exhale — pip install exhale · libregistry