Add Sphinx/Doxygen/Breathe documentation framework for phlex and phlex::experimental API#323
Conversation
|
@copilot I think for maximum clarity, it would be better to reset this branch to upstream/main and then re-do the work following the current philosophy, functions/class structure, etc. |
Done. In commit The PR now shows only 13 files changed (135 additions, 0 deletions from main): the |
0712ae9 to
2095c80
Compare
There was a problem hiding this comment.
Pull request overview
Adds a Sphinx + Doxygen + Breathe documentation scaffold under docs/ to generate API reference documentation for key phlex::experimental types, along with dependency requirements and gitignore entries for generated outputs.
Changes:
- Add Sphinx project entrypoint (
index.rst) and minimalconf.pywired to Breathe. - Add API reference
.rstpages for severalphlex::experimentalclasses. - Add Doxygen configuration + Python requirements, and ignore generated docs artifacts in
.gitignore.
Reviewed changes
Copilot reviewed 12 out of 13 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| docs/source/index.rst | Adds top-level Sphinx landing page and toctree for API pages. |
| docs/source/conf.py | Adds Sphinx configuration with Breathe integration. |
| docs/source/api/graph_proxy.rst | Adds API page for phlex::experimental::graph_proxy. |
| docs/source/api/framework_graph.rst | Adds API page for framework_graph and layer_sentry. |
| docs/source/api/registrar.rst | Adds API page for phlex::experimental::registrar. |
| docs/source/api/declared_transform.rst | Adds API page for declared_transform. |
| docs/source/api/declared_fold.rst | Adds API page for declared_fold. |
| docs/source/api/declared_unfold.rst | Adds API page for declared_unfold. |
| docs/source/api/product_store.rst | Adds API page for product_store. |
| docs/source/api/products.rst | Adds API page for products. |
| docs/requirements.txt | Adds Python dependencies for building docs. |
| docs/Doxyfile | Adds Doxygen configuration to emit XML for Breathe. |
| .gitignore | Ignores generated Doxygen/Sphinx build output directories. |
Comments suppressed due to low confidence (1)
docs/requirements.txt:4
- The PR description says dependencies are “pinned”, but
requirements.txtuses version ranges (e.g.,>=9.1,<10) which will allow new releases and can change doc build output over time. Either pin exact versions (e.g.,==...) to match the description, or update the description to reflect that these are minimum/compatible ranges. Also remove the trailing blank line at EOF to avoid generating a 4th empty requirement line.
sphinx>=9.1,<10
breathe>=4.36,<5
sphinx-rtd-theme>=3.1,<4
|
@phlexbot python-fix |
|
Automatic ruff fixes pushed (commit af87c94). |
Codecov Report✅ All modified and coverable lines are covered by tests. @@ Coverage Diff @@
## main #323 +/- ##
==========================================
+ Coverage 85.49% 85.58% +0.08%
==========================================
Files 142 142
Lines 3586 3586
Branches 615 615
==========================================
+ Hits 3066 3069 +3
Misses 310 310
+ Partials 210 207 -3
Flags with carried forward coverage won't be shown. Click here to find out more.
... and 2 files with indirect coverage changes Continue to review full report in Codecov by Sentry.
🚀 New features to boost your workflow:
|
824f679 to
a7a5bf2
Compare
dcbc52d to
e416cbc
Compare
e416cbc to
85a095f
Compare
85a095f to
a62c7df
Compare
Re-evaluated after rebase. The only needed fix was removing the |
Verified with Added a |
6ac7499 to
149dfe8
Compare
|
Can we add an action to build the documentation? |
|
@greenc-FNAL Unfortunately I hit an unexpected error while processing your comment. I've automatically reported this to GitHub. You can ask me to try again later by mentioning me in a new comment. If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: Sorry for the inconvenience! |
2 similar comments
|
@greenc-FNAL Unfortunately I hit an unexpected error while processing your comment. I've automatically reported this to GitHub. You can ask me to try again later by mentioning me in a new comment. If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: Sorry for the inconvenience! |
|
@greenc-FNAL Unfortunately I hit an unexpected error while processing your comment. I've automatically reported this to GitHub. You can ask me to try again later by mentioning me in a new comment. If you want to contact GitHub about this error, please mention the following identifier so they can better serve you: Sorry for the inconvenience! |
Absolutely, but I'd prefer to do it as a separate PR. |
knoepfel
left a comment
There was a problem hiding this comment.
@greenc-FNAL, thanks for this. There are several things here that are not intended to be user-facing (phlex::experimental::declared_*, phlex::experimental::registrar, phlex::experimental::product*). The *_proxy classes are user-facing, but their types are somewhat implementation-defined (the user never needs to know the type, but they do need to know the user interface).
I guess I would remove the declared_* files, and maybe we can go from there?
What about |
We do use |
…work This commit introduces the foundational infrastructure for documenting the C++ codebase using a Sphinx, Doxygen, and Breathe toolchain. Key changes include: - A new `docs/` directory to house all documentation-related files. - Configuration files for Sphinx (`conf.py`) and Doxygen (`Doxyfile`). - A `requirements.txt` file listing the necessary Python dependencies for building the documentation. - The `phlex/core/graph_proxy.hpp` header has been fully documented with Doxygen comments to serve as a style guide and working example. - An initial Sphinx structure in `docs/source/` that integrates the Doxygen XML output via Breathe, making the `graph_proxy` documentation available on the documentation website. Initial plan Update docs: pin latest deps, fix version, expand API coverage, add .gitignore entries Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com> Reset branch to main and re-apply docs-only changes Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com> Fix docs for current codebase: correct version, class names, macros, and .gitignore Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com> Add module docstring to docs/source/conf.py for ruff D100 compliance Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com> Apply ruff fixes Ignore `mypy` errors
Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
…ing entry points) Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
…docs (configuration, handle, concurrency) Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com> Agent-Logs-Url: https://github.com/Framework-R-D/phlex/sessions/c907fe9c-6f80-4160-ac32-440e2909ef30
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…cursor; update version and macros Agent-Logs-Url: https://github.com/Framework-R-D/phlex/sessions/7b217a64-eda8-43cd-be76-88d86b4999b1 Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
…automated reviewer claims Agent-Logs-Url: https://github.com/Framework-R-D/phlex/sessions/c61425d6-bc90-479f-8763-b8b5a137466d Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
…| od -c Agent-Logs-Url: https://github.com/Framework-R-D/phlex/sessions/55219cfc-ede6-42c8-bcdd-9a093622b30a Co-authored-by: greenc-FNAL <2372949+greenc-FNAL@users.noreply.github.com>
PR #322 (merged to main) added phlex_*_EXPORT macros to all public headers. These macros are generated at build time and unavailable when running doxygen from a clean source tree. Without PREDEFINED entries, Doxygen silently fails to parse class/struct definitions that contain the macro token. Add all five export macros as empty definitions. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…only Remove RST pages for framework_graph, registrar, product_store, and products — these are not user-facing per project lead review in #323 (review). For declared_fold, declared_transform, and declared_unfold, drop ':undoc-members:' so that internal/opaque members are no longer surfaced. In declared_unfold.rst, add the generator class, which is the one user-facing type in these headers (user unfold functions receive a generator& and call make_child_for). Add Doxygen comments to generator and generator::make_child_for() in declared_unfold.hpp so they appear in the rendered docs. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
561e601 to
6944c5f
Compare
Per #323 (review): declared_fold, declared_transform, and declared_unfold are not user-facing. Remove their RST pages, toctree section, and the Doxygen comments added to declared_unfold.hpp in the prior commit that were only intended to support those pages. The *_proxy pages (already present) are the user-facing entry points. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Docs: add Doxygen comments to *_proxy classes; drop :undoc-members: Add /// Doxygen comments to user-facing public methods in graph_proxy, module_graph_proxy, source_graph_proxy, driver_proxy, and driver_bundle. Remove :undoc-members: from all four RST pages so only documented members are rendered, keeping private/internal members out of the published API reference. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Adds a Sphinx + Doxygen + Breathe documentation scaffold under
docs/coveringphlexandphlex::experimentalnamespaces (user-facing API only).Doxyfile
INPUT = phlex form,OUTPUT_DIRECTORY = docs/doxygen(repo-root-relative)PREDEFINED:BOOST_DLL_ALIAS,PHLEX_DETAIL_REGISTER_PLUGIN,PHLEX_DETAIL_REGISTER_DRIVER_PLUGIN; symbol-visibility export macrosPHLEX_EXPORT,PHLEX_CORE_EXPORT,PHLEX_MODEL_EXPORT,PHLEX_CONFIGURATION_INTERNAL_EXPORT,PHLEX_UTILITIES_EXPORT(all defined as empty so Doxygen can parse annotated class/struct declarations from a clean source tree)phlexnamespace pagesphlex::configuration,phlex::handle,phlex::concurrencyphlex::fixed_hierarchy,phlex::data_cell_cursorphlex::experimentalnamespace pagesmodule_graph_proxy,source_graph_proxy,driver_proxy,driver_bundle,graph_proxyindex.rst: single toctree section — Plugin entry pointsOther
docs/requirements.txt:sphinx>=9.1,<10,breathe>=4.36,<5,sphinx-rtd-theme>=3.1,<4.gitignore:docs/doxygen/,docs/build/conf.py: module docstring (ruff D100),templates_path = [], version0.2.0.github/copilot-instructions.md:#### Verifying File Endings— usetail -c 2 | od -c(notod -a | tail -3, which has a false-negative when two consecutive\nstraddle an address-line boundary)