-
-
Notifications
You must be signed in to change notification settings - Fork 202
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
convert dot files' relative path to absolute #821
convert dot files' relative path to absolute #821
Conversation
breathe/renderer/sphinxrenderer.py
Outdated
# use self.project_info.project_path as the XML_OUTPUT path, | ||
# and make it absolute with consideration to the conf.py path | ||
dot_file_path = os.path.abspath( | ||
self.app.confdir + os.sep + self.project_info.project_path() + dot_file_path |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is it any more preferable to use os.path.join here? I'm guessing not but I'm not sure why :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
IDK. I didn't try it. I was more concerned with concatenating relative paths.
app.confdir
is an absolute path.project_info.project_path()
might be absolute or relative. This may differ depending on how users configurebreathe_projects
.dot_file_path
is clearly compensated for absolute or relative paths (the point of this PR).
After giving this more thought, I should probably add a conditional statement for if project_path()
yields an absolute path.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I also didn't check if project_path()
automatically ensures there is a trailing path delimiter (os.sep
).
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looking at the docs, I think os.path.abspath()
might be a better solution for cross-platform compatibility. os.path.join()
seems to have a different tactic when encountering absolute paths (specifically noted for Windows).
Additionally, os.path.abspath()
will reduce multiple consecutive path delimiters (//
) into 1 path delimiter (/
). So, there's no need to check if project_path()
has a trailing path delimiter when using os.path.abspath()
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I updated this to more intuitively handle user input in project_path()
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Looks good to me. Though happy to learn about the path thing.
Add generated dotfile.dot to gitignore since doxygen 1.9.3 copies the dotfile(s) to XML_OUTPUT Considering the path to conf.py, make a dot file's relative path absolute using the project's XML_OUTPUT.
Use users' input as root path component if breathe_projects (in conf.py) specifies an absolute path for the project's XML_OUTPUT (not recommended for hosting from a web server). Otherwise, concatenate the path to conf.py with subsequent relative paths to the dot file (resulting in a clean absolute path).
@2bndy5 Is this considered ready for merging? Seems fine to me also. |
Yeah, I can't foresee any other points of error. |
Bumps [breathe](https://github.com/michaeljones/breathe) from 4.34.0 to 4.35.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/breathe-doc/breathe/blob/main/CHANGELOG.rst">breathe's changelog</a>.</em></p> <blockquote> <h2>Change Log</h2> <p>Inspired by <code>Keepachangelog.com <http://keepachangelog.com/></code>__.</p> <ul> <li> <p>2023-02-28 - <strong>Breathe v4.35.0</strong></p> <ul> <li>Pull lone literal blocks in paragraphs up to produce correct doctree. <code>[#833](breathe-doc/breathe#833) <https://github.com/michaeljones/breathe/pull/833></code>__</li> <li>Fix tests for changes in Sphinx 5.3. <code>[#865](breathe-doc/breathe#865) <https://github.com/breathe-doc/breathe/pull/865></code>__</li> <li>Bump Python requirement to 3.7. <code>[#866](breathe-doc/breathe#866) <https://github.com/breathe-doc/breathe/pull/866></code>__</li> <li>Support Sphinx 6. <code>[#885](breathe-doc/breathe#885) <https://github.com/breathe-doc/breathe/pull/885></code>__</li> <li>Support <code>:sort:</code> option to sort sections by name. <code>[#879](breathe-doc/breathe#879) <https://github.com/breathe-doc/breathe/pull/879></code>__</li> </ul> </li> <li> <p>2022-06-20 - <strong>Breathe v4.34.0</strong></p> <ul> <li>Treat .unparsed as plain text. <code>[#806](breathe-doc/breathe#806) <https://github.com/michaeljones/breathe/pull/806></code>__</li> <li>Remove unneeded type: ignore annotations. <code>[#813](breathe-doc/breathe#813) <https://github.com/michaeljones/breathe/pull/813></code>__</li> <li>Fix internal <code>NodeFinder</code> visitor for when non-Docutils nodes are present in the content of a directive. <code>[#812](breathe-doc/breathe#812) <https://github.com/michaeljones/breathe/pull/812></code>__</li> <li>Rename lint workflow. <code>[#814](breathe-doc/breathe#814) <https://github.com/michaeljones/breathe/pull/814></code>__</li> <li>Type check pygments and limit docutils stub version. <code>[#819](breathe-doc/breathe#819) <https://github.com/michaeljones/breathe/pull/819></code>__</li> <li>Convert dot files' relative path to absolute. <code>[#821](breathe-doc/breathe#821) <https://github.com/michaeljones/breathe/pull/821></code>__</li> <li>CI, update Sphinx versions to test. <code>[#834](breathe-doc/breathe#834) <https://github.com/michaeljones/breathe/pull/834></code>__</li> <li>CI, update for Sphinx 5.0.1. <code>[#846](breathe-doc/breathe#846) <https://github.com/michaeljones/breathe/pull/846></code>__</li> <li>Fix inconsistency in example. <code>[#843](breathe-doc/breathe#843) <https://github.com/michaeljones/breathe/pull/843></code>__</li> <li>Fix C# enum rendering crash. <code>[#849](breathe-doc/breathe#849) <https://github.com/michaeljones/breathe/pull/849></code>__</li> <li>Drop Sphinx 3 support, add Sphinx 5 support. <code>[#850](breathe-doc/breathe#850) <https://github.com/michaeljones/breathe/pull/850></code>__</li> <li>CICD: Disable python 3.6 for Sphinx master tests. <code>[#853](breathe-doc/breathe#853) <https://github.com/michaeljones/breathe/pull/853></code>__</li> <li>Populate default include text-node's data field instead of raw-source. <code>[#828](breathe-doc/breathe#828) <https://github.com/michaeljones/breathe/pull/828></code>__</li> </ul> </li> <li> <p>2022-02-14 - <strong>Breathe v4.33.1</strong></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/breathe-doc/breathe/commit/4e9f55eadc91d96ac155a24c3634359b511a82cd"><code>4e9f55e</code></a> version: release v4.35.0</li> <li><a href="https://github.com/breathe-doc/breathe/commit/b4564e9b7f654cc23907f4e346ed79f1447a9cba"><code>b4564e9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/michaeljones/breathe/issues/885">#885</a> from breathe-doc/sphinx-6</li> <li><a href="https://github.com/breathe-doc/breathe/commit/42585399bf666b0c673b222291c4886700ec283e"><code>4258539</code></a> Remove <7 constraint from setup.py</li> <li><a href="https://github.com/breathe-doc/breathe/commit/86298ccf2fd8ead0867a2ac74ac894a9ef25bb67"><code>86298cc</code></a> Remove <7 constraint from requirement file</li> <li><a href="https://github.com/breathe-doc/breathe/commit/81a92d8ea06fe4dd43cea85282b1ad092e58c3c4"><code>81a92d8</code></a> Update changelog with latest changes</li> <li><a href="https://github.com/breathe-doc/breathe/commit/687a3278e894b461df3ea00d6c6b2da140757728"><code>687a327</code></a> Adjust constraint in production requirements.txt</li> <li><a href="https://github.com/breathe-doc/breathe/commit/00b29e83541c2f4b16b1c0bd4d1abfb0c2a31834"><code>00b29e8</code></a> Adjust constraint setup.py</li> <li><a href="https://github.com/breathe-doc/breathe/commit/ef4e245804759d44ae54fc832b4d5155837f0720"><code>ef4e245</code></a> Add Sphinx 6.1.3 to test matrix</li> <li><a href="https://github.com/breathe-doc/breathe/commit/c4013f49c1a99b70c12d45325d5f413a9c7f7960"><code>c4013f4</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/michaeljones/breathe/issues/879">#879</a> from schlatterbeck/sort-groups</li> <li><a href="https://github.com/breathe-doc/breathe/commit/d75073d73c9bec4954d691d50d30704fd09a4a14"><code>d75073d</code></a> Bump clang again</li> <li>Additional commits viewable in <a href="https://github.com/michaeljones/breathe/compare/v4.34.0...v4.35.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=breathe&package-manager=pip&previous-version=4.34.0&new-version=4.35.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
Bumps [breathe](https://github.com/michaeljones/breathe) from 4.34.0 to 4.35.0. <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/breathe-doc/breathe/blob/main/CHANGELOG.rst">breathe's changelog</a>.</em></p> <blockquote> <h2>Change Log</h2> <p>Inspired by <code>Keepachangelog.com <http://keepachangelog.com/></code>__.</p> <ul> <li> <p>2023-02-28 - <strong>Breathe v4.35.0</strong></p> <ul> <li>Pull lone literal blocks in paragraphs up to produce correct doctree. <code>[#833](breathe-doc/breathe#833) <https://github.com/michaeljones/breathe/pull/833></code>__</li> <li>Fix tests for changes in Sphinx 5.3. <code>[#865](breathe-doc/breathe#865) <https://github.com/breathe-doc/breathe/pull/865></code>__</li> <li>Bump Python requirement to 3.7. <code>[#866](breathe-doc/breathe#866) <https://github.com/breathe-doc/breathe/pull/866></code>__</li> <li>Support Sphinx 6. <code>[#885](breathe-doc/breathe#885) <https://github.com/breathe-doc/breathe/pull/885></code>__</li> <li>Support <code>:sort:</code> option to sort sections by name. <code>[#879](breathe-doc/breathe#879) <https://github.com/breathe-doc/breathe/pull/879></code>__</li> </ul> </li> <li> <p>2022-06-20 - <strong>Breathe v4.34.0</strong></p> <ul> <li>Treat .unparsed as plain text. <code>[#806](breathe-doc/breathe#806) <https://github.com/michaeljones/breathe/pull/806></code>__</li> <li>Remove unneeded type: ignore annotations. <code>[#813](breathe-doc/breathe#813) <https://github.com/michaeljones/breathe/pull/813></code>__</li> <li>Fix internal <code>NodeFinder</code> visitor for when non-Docutils nodes are present in the content of a directive. <code>[#812](breathe-doc/breathe#812) <https://github.com/michaeljones/breathe/pull/812></code>__</li> <li>Rename lint workflow. <code>[#814](breathe-doc/breathe#814) <https://github.com/michaeljones/breathe/pull/814></code>__</li> <li>Type check pygments and limit docutils stub version. <code>[#819](breathe-doc/breathe#819) <https://github.com/michaeljones/breathe/pull/819></code>__</li> <li>Convert dot files' relative path to absolute. <code>[#821](breathe-doc/breathe#821) <https://github.com/michaeljones/breathe/pull/821></code>__</li> <li>CI, update Sphinx versions to test. <code>[#834](breathe-doc/breathe#834) <https://github.com/michaeljones/breathe/pull/834></code>__</li> <li>CI, update for Sphinx 5.0.1. <code>[#846](breathe-doc/breathe#846) <https://github.com/michaeljones/breathe/pull/846></code>__</li> <li>Fix inconsistency in example. <code>[#843](breathe-doc/breathe#843) <https://github.com/michaeljones/breathe/pull/843></code>__</li> <li>Fix C# enum rendering crash. <code>[#849](breathe-doc/breathe#849) <https://github.com/michaeljones/breathe/pull/849></code>__</li> <li>Drop Sphinx 3 support, add Sphinx 5 support. <code>[#850](breathe-doc/breathe#850) <https://github.com/michaeljones/breathe/pull/850></code>__</li> <li>CICD: Disable python 3.6 for Sphinx master tests. <code>[#853](breathe-doc/breathe#853) <https://github.com/michaeljones/breathe/pull/853></code>__</li> <li>Populate default include text-node's data field instead of raw-source. <code>[#828](breathe-doc/breathe#828) <https://github.com/michaeljones/breathe/pull/828></code>__</li> </ul> </li> <li> <p>2022-02-14 - <strong>Breathe v4.33.1</strong></p> </li> </ul> <!-- raw HTML omitted --> </blockquote> <p>... (truncated)</p> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/breathe-doc/breathe/commit/4e9f55eadc91d96ac155a24c3634359b511a82cd"><code>4e9f55e</code></a> version: release v4.35.0</li> <li><a href="https://github.com/breathe-doc/breathe/commit/b4564e9b7f654cc23907f4e346ed79f1447a9cba"><code>b4564e9</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/michaeljones/breathe/issues/885">#885</a> from breathe-doc/sphinx-6</li> <li><a href="https://github.com/breathe-doc/breathe/commit/42585399bf666b0c673b222291c4886700ec283e"><code>4258539</code></a> Remove <7 constraint from setup.py</li> <li><a href="https://github.com/breathe-doc/breathe/commit/86298ccf2fd8ead0867a2ac74ac894a9ef25bb67"><code>86298cc</code></a> Remove <7 constraint from requirement file</li> <li><a href="https://github.com/breathe-doc/breathe/commit/81a92d8ea06fe4dd43cea85282b1ad092e58c3c4"><code>81a92d8</code></a> Update changelog with latest changes</li> <li><a href="https://github.com/breathe-doc/breathe/commit/687a3278e894b461df3ea00d6c6b2da140757728"><code>687a327</code></a> Adjust constraint in production requirements.txt</li> <li><a href="https://github.com/breathe-doc/breathe/commit/00b29e83541c2f4b16b1c0bd4d1abfb0c2a31834"><code>00b29e8</code></a> Adjust constraint setup.py</li> <li><a href="https://github.com/breathe-doc/breathe/commit/ef4e245804759d44ae54fc832b4d5155837f0720"><code>ef4e245</code></a> Add Sphinx 6.1.3 to test matrix</li> <li><a href="https://github.com/breathe-doc/breathe/commit/c4013f49c1a99b70c12d45325d5f413a9c7f7960"><code>c4013f4</code></a> Merge pull request <a href="https://github-redirect.dependabot.com/michaeljones/breathe/issues/879">#879</a> from schlatterbeck/sort-groups</li> <li><a href="https://github.com/breathe-doc/breathe/commit/d75073d73c9bec4954d691d50d30704fd09a4a14"><code>d75073d</code></a> Bump clang again</li> <li>Additional commits viewable in <a href="https://github.com/michaeljones/breathe/compare/v4.34.0...v4.35.0">compare view</a></li> </ul> </details> <br /> [![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=breathe&package-manager=pip&previous-version=4.34.0&new-version=4.35.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details>
This PR will resolve #818
Add generated examples/specific/dot_graphs/xml/dotfile.dot to gitignore since doxygen 1.9.3 now copies the dotfile(s) to XML_OUTPUT
Considering the path to conf.py, make a dot file's relative path absolute using the project's XML_OUTPUT.
Notes
This PR's CI is still using Doxygen v1.8.17 (which uses absolute paths for dot files), but I have locally tested these changes using Doxygen v1.9.3 (which introduced using relative paths for dot files). Therefore, backward compatibility is preserved.