Changelog

v0.3.7

  • Update packaging requirements (#204). Exhale will be less restrictive in its dependency requirements:

    • Python 3.8+ (3.7 is EOSL).

    • Breathe>=4.33.1.

    • Sphinx>=4.3.2.

    • See #191 for more information.

  • Miscellaneous packaging and CI fixes courtesy of @Rotzbua – thanks for poking me on this project!

v0.3.6

  • Enable the root document to be excluded, and additional manual indexing control (#176, #177).

v0.3.5

  • Fix a bug (#171) where some generated pages are missing a blank line (before the heading markup, after the backlink to the parent directory) resulting in warnings from sphinx (#172).

v0.3.4

  • Fix a regression introduced by #159. Nested template specializations need to have their name extracted to be documented correctly, but the implementation checked for node.name having the same number of < and >. This breaks operator overloading (#168). Skip asserting the same number of < and > when node.kind == "function" and operator is in node.name. See comments in graph.py (#169).

v0.3.3

  • Fix sphinx-bootstrap-theme styling, the introduction of the page hierarchies broke the bootstrap tree for any project that does not use page. Solution is to only select / apply the treeview functions if the id anchors are found (#167).

v0.3.2

  • Exhale requires python 3.7+ (#163).

  • Development (local and CI) now support doxygen 1.9.x. Additionally, fix parsing of function signatures where doxygen will erroneously create e.g., template <typenameC> rather than template <typename C> with a space needed. It does not happen with all typename, so the hack just replaces "typename" with "typename " and then replaces two spaces with one (#157).

  • Fix a bug where nested classes with specialized templates had the incorrect name being displayed (#156, fix: #159). Nodes with <> in their name (doxygen presents specialized templates in the name attribute) get tokenized and the various parameters extracted. As a result of fixing, exhale now has stronger capabilities to understand template parameters. Substantive testing framework overhaul was required, exhale may still not handle all templates correctly.

    Huge thanks to @florianhumblot for devising the strategy and spending time helping flesh this out.

v0.3.1

v0.3.0

  • Do not write source files for empty hierarchies (#134, #147).

  • Support specialized template functions (#117).

  • Prevent sphinx from processing files that are incorporated via a .. include:: directive by renaming them to .rst.include suffix (#136).

  • Add :project: {app.config.breathe_default_project} to every breathe directive to make the monkeypatch (#27) work (#139, #148).

  • Do not require containmentFolder to be a “direct” subdirectory of app.srcdir, allow any arbitrary subdirectory (#144).

  • Update how css and js are added using a dubious check into the sphinx internals before adding css / js to avoid duplicates (#144).

v0.2.4

  • Use the correct PyPI name beautifulsoup4 rather than bs4 (#120).

  • Fix deprecated MutableMapping import for python 3.10 support (#124).

  • Enable parallel builds (use the right setup function…) (#126).

  • Add support for .. doxygenpage:: (#114). Huge thanks to:
    • @hidmic for the initial implementiation, and

    • @2bndy5 and @clalancette for their efforts in improving the doxygen-breathe-exhale-sphinx ecosystem (and consequently, encouraging me to resume work on this project).

  • Escape * in template page titles (#118).

  • Fix titles / links for directories with underscores (#127).

v0.2.3

  • Allow unabridged API to exclude different kinds (#67). unabridgedOrphanKinds allows users to exclude a specific kind from getting dumped in the unabridged API beneath the hierarchies.

    By default, the unabridged API will exclude "file" and "dir", given that the file hierarchy already includes these.

v0.2.2

  • Make sure spaces in directory / filenames are quoted when sent to Doxygen (#60).

v0.2.1

  • Fix bug where a union child of a namespace does not link correctly in the class hierarchy (#40).

  • Do not force pygments lexer to unconditionally use cpp for <programlisting> pages. Doxygen encodes a language, which is parsed and converted to the appropriate pygments lexer (#42).

    • Added new configuration variable lexerMapping for additional control over pygments language to use.

    • This marks the beginning of mixed-language support, but much more needs to be done for this!

  • Most overloaded functions should now work. See #45 for more information, including function overloads that do not currently work.

    • For consistency, the full api listing includes fully qualified function names (previously: Function foo, now: Function namespace::foo(int)).

  • Stopped using deprecated sphinx API (#47).

  • Tree view hierarchies are minified by default (#48).

  • Parent directory links generated for directory and file pages (#49).

  • Tree view and namespace exclusion bypass configuration variable listingExclude added (#50).

    • Better logic for finding the file node that defined a given compound.

    • Doxygen produces inconsistencies with the paths, some are Windows paths and some are *nix paths. These should now all be corrected using os.path.normpath.

v0.2.0

  • Exhale no longer produces filenames that are longer than the operating system can handle (#35).

    • Internal links have changed, more heavily discouraged in docs. Ideally the internal link generation scheme will not need to change again, but they might.

    • Exhale can handle absurdly long file paths by using the \\?\ prefix on Windows. If you run into a situation where this affects you, Sphinx actually cannot handle this. So try and build in a higher directory, e.g. C:\your_project (paths greater than 260 characters cause this issue).

  • First mostly functional release for Windows (there were many locations where os.path.normpath needed to be used.

  • Bug: bug introduced where a union child of a namespace does not link correctly in the class hierarchy.

v0.1.8

  • Fix bug that prevents Customizing Breathe Output from working. Was checking isinstance(val_t, six.string_types), but should have been checking isinstance(val, six.string_types).

  • Fix / improve key guessing for when an invalid key is given in exhale_args.

v0.1.7

  • Colorized printing on Read The Docs is disabled, since their build logs online don’t display the color.

  • Doxygen stdout and stderr are directed to /dev/null on Read The Docs. See #14.

v0.1.6

  • First release with manual namespace documentation parsing (same as files).

  • Fixed bad error message when multiple potential file parents are found, which produced an exception preventing the rest of the build. Full description can be found in #12.

v0.1.5

  • Page level configuration metadata added to all pages (rather than just leaf-like pages).

  • Fixed textwrap.dedent inconsistencies when more than one nested type is enumerated.