Skip to main content

Documentation Status Latest Version Code Coverage Report License BSD-3 Clause

Automatic C++ library API documentation generator using Doxygen, Sphinx, and Breathe. Exhale revives Doxygen’s class, file, and page hierarchies in reStructuredText documents to make these hierarchies available in Sphinx documented projects.

Is it For Me?

Exhale might not be the tool you are looking for! It was designed to be as intuitive and flexible as possible, but it does require more machinery to get everything started.

Why use it?

You would use Exhale if you want to have beautiful Sphinx generated websites, but also see the value of the Class, File, and Page hierarchies provided by Doxygen. From running Doxygen for you, to organizing your full API every time, you won’t need to worry about your documentation getting out of sync with the code — it’s regenerated on the fly every time.

Why not use it?

It may be more involved than you need. Check out the breathe-apidoc tool that comes with your installation of breathe. It is quite similar to the Sphinx API doc tool, and that may be all you are looking for to get your documentation displayed.

If you are working with a small enough framework, you may also be satisfied with just using the .. autodoxygenindex:: directive from breathe. It works very well!

The Main Difference

The Class, File, and Page hierarchies are only available in Sphinx via Exhale 😊

Depending on the size and complexity of your project, breathe-apidoc or autodoxygenindex may be more appropriate.

Important Consideration

Exhale is known to work well on small to medium sized projects. Supporting larger projects in Sphinx is a much more involved process that may or may not be resolved over time – this has to do with a lot more than just Exhale, but the nature of Exhale (generation of a large number of .rst files) definitely does not help.

Please see the full documentation for more information on how to get started.

See it in Action

The ExhaleCompanion repository has three builds to demonstrate the different options with respect to creating a Tree View, as well as details of specific HTML Theme choices:

HTML Theme Choice

TreeView Created

ExhaleCompanion Docs

RTD Theme

Yes

rtd-docs

Bootstrap Theme

Yes

bootstrap-docs

Alabaster

No

alabaster-docs

Installation

Exhale is a Sphinx Extension that depends on Breathe for access to the Doxygen reStructuredText directives, and both BeautifulSoup and lxml for parsing the generated Doxygen XML documentation. Exhale is hosted on PyPI, meaning you can install it through the normal mechanisms, e.g.,

$ python -m pip install exhale

This will install Exhale, as well as all of its dependencies.

Exhale Version Compatibility with Python, Sphinx, and Breathe

Exhale Version

Python Version

Sphinx Version

Breathe Version

0.3.7

>=3.8

>=4.3.2

>=4.33.1

0.3.2 – 0.3.6

>=3.7

>=3.0,<5

>=4.32.0

0.3.0

>=3.6

>=3.0,<5

>=4.32.0

0.2.1 – 0.2.4

2.7, 3.3+

>=1.6.1

“Any”

<=0.2.0

2.7, 3.3+

>=1.0

“Any”

For your project’s documentation requirements, adopting exhale@0.3.0 means you just need to specify directly that your docs/requirements.txt or similar express:

exhale>=0.3.0

The exhale@0.3.0 release uses the same dependencies required by breathe@4.32.0. If you need python 3.5 support, pin your documentation requirements to:

sphinx>=2.0
breathe>=4.13.0
exhale<0.3.0

For Python 2.7, you should pin your documentation requirements to:

sphinx==1.8.5
breathe==4.12.0
exhale<0.3.0

Order matters, namely that sphinx and breathe appear / are installed before exhale. Exhale 0.2.* releases support Python 2.7, but users need to be aware of the dependencies between Python, Sphinx, and Breathe versions.

Credit

This project could not exist without the already excellent tools available: Doxygen, Sphinx, Breathe, and many others. In particular, though, for the Tree View hierarchies to be successful, I vendor copies of two excellent libraries that I make no claims to. They are vendored with your installation of Exhale, in accordance with each project’s license:

  1. For non-bootstrap, I used Kate Morley’s excellent and lightweight collapsibleLists including the sample CSS / images on that post. She includes a generous CC0 1.0 license for these files, as well as the rest of her website.

    For every HTML Theme I have tried, except for ones using bootstrap, this library works reliably and consistently. It matches the Sphinx RTD theme quite well, too!

  2. For bootstrap, I used Jon Miles’ comprehensive bootstrap-treeview library. Jon Miles hosts this library using the Apache v2 license.

    This library is exceptionally well thought out and enables an impressive amount of customization. At this time, Exhale does not expose any of the available customizations. If there is a specific one you’d like to see, please join the discussion here.

Both of these libraries and copies of their licenses can be found in the data folder of the source code.

License

This project uses a BSD 3-clause license, in hopes that it will be accessible to most projects. If you require a different license, please raise an issue and I will consider a dual license.

The full license is available here.

Release files for exhale 0.3.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for exhale 0.3.7
File Size Uploaded
exhale-0.3.7.tar.gz 104.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for exhale 0.3.7
File Interpreter ABI Platform
exhale-0.3.7-py3-none-any.whl Python 3 none any Details

Total release size: 212.8 kB

Release files / exhale-0.3.7.tar.gz

Download URL exhale-0.3.7.tar.gz
Size 104.6 kB
Tags Source
SHA-256 checksum
How to use checksums
752a96d0a59456511d933311d4a81f642cd668296eacd2561905727d5ed6b0d8
BLAKE2b-256 checksum
How to use checksums
2f2bc5c665e743415c894d49c60e7b1338fb86d05c9ec8909a38e700e55626f0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release files / exhale-0.3.7-py3-none-any.whl

Download URL exhale-0.3.7-py3-none-any.whl
Size 108.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
698fe5612bdfb4955ce780ea2441d085fe30c6174b12ef29839dd232c7363504
BLAKE2b-256 checksum
How to use checksums
ea789a8a174011682d71cb4922f4014ebbeb9d3067922678e7059351fd9207cf
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.2 CPython/3.8.10

Release history Release notifications | RSS feed

This release

0.3.7 This release

2 release files

0.3.6

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.4

2 release files

0.2.3

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.8

2 release files

0.1.7

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

0.1.2

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page