Postgkeyll Documentation Integration Plan

We have a documentation website. https://github.com/gkeyllorg/gkyl-doc also found at /home/maxwell-rosen/Documents/gkyl-doc. Add a section to the website for postgkeyll. This⠂section should include documentation for this codebase. The ⠈ documentation should be generated from the postgkeyll⠈repo directly⡀so that there is one source of truth. The documentation to postgkyl repository, but it's hosted on that website. Use good⢀examples from the data inside⠐postgkeyll.⢀If you need ⢀to generate more interesting data for figures,⠄add it to the testing data folder, preffering to use the data generator.⡀Construct a plan for integrating the ⠠ documentation with postgkeyll. The examples on the⢀website should be clear and realistic use cases.
I’ll inspect both repositories and the website build, then develop an integration plan that keeps the documentation in postgkyl and uses its example data.
The website uses Sphinx, and its old Postgkyl pages are in the archive rather than the active navigation. Postgkyl already has executable tutorials and tests that check API/CLI documentation consistency, so the plan can build on those. I also found a build mismatch to address: the website’s Read the Docs configuration selects Python 3.8.
I recommend keeping the guides, reference generation, and figure scripts in postgkyl, with the website building from a pinned postgkyl revision. The initial tutorials can use the existing TCV distribution and R–Z data, plus generated profile comparisons. The plan will distinguish simulation output from synthetic examples and specify how examples and figures are checked before publication.
Created the integration plan.
It covers:
- Postgkyl-owned documentation, published through a pinned website dependency.
- API/CLI reference generated from existing code.
- Executable tutorials and figures using repository data.
- Website navigation, build changes, CI, and publication milestones.
Validated the existing examples and documentation checks: 30 tests passed. Website implementation remains the next step.
Implement Docs should be generated from postgkeyll on main, not a fixed revision. Upgrade the python version of the docs to python 3.12 Employ CI and github actions to ensure testing of the documentation
I’ll implement the documentation section using Postgkyl’s main branch, upgrade the website build to Python 3.12, and add GitHub Actions checks for the examples and documentation builds in both repositories.
The build will fetch Postgkyl main each time and generate the guides, command reference, figures, and example downloads from that checkout. I’m keeping explicit local-checkout support so pull requests can test documentation changes before they reach main.
The tutorials now run from repository data, including two generated fixtures for pressure recovery and energy-growth fitting. I also corrected the gyrokinetic example: it no longer assigns an arbitrary species mass or describes M1 as velocity. Next I’m checking the Sphinx output and wiring the Python 3.12 CI builds.
The standalone build exposed an API coverage gap, which I’ve fixed so the reference includes the fluid, kinetic, PKPM, and gyrokinetic diagnostic families. The full website also has existing Sphinx warnings from duplicate links, stale references, and unused theme options. I’m fixing those so CI can reject warnings across the whole site.
The host tests now verify that a second build picks up a new commit on main, while preserving a dirty local checkout. Figure review also caught an unlabeled distribution plot and a clipped temperature peak; both are fixed. I’m running the final documentation tests and full-site build on Python 3.12.
The checks are passing: 34 documentation/example tests, 36 architecture tests, and 3 host integration tests. The complete website also builds on Python 3.12 with warnings treated as errors. The local preview is ready; hosted publication will require merging Postgkyl’s changes first, then the website integration.
Implemented in both repositories.
- Website builds from Postgkyl main using Python 3.12.
- Added generated API/CLI references, tested tutorials, figures, and downloadable examples.
- Added GitHub Actions for PR checks and daily upstream testing.
- 73 tests passed; full website builds without warnings.
Not published yet. Merge Postgkyl first, then gkyl-doc. Configure READTHEDOCS_TOKEN in gkyl-doc for automatic scheduled publication.
Add some animations to the generated data and the examples using the animate function to show how to load multiple data files and make figures using collect and animate. Show some examples using plotly for 3D and 2D surface plotting, as well as pyvista. Provide some examples of how to get the grid and values of the data directly out of the loaded objects so that users can manipulate the data manually if they would like.
All the examples on the website should have both a script version to generate the figures as well as a CLI command that generates the same figure. Show that both version generate the same figures
Break the python API section of the docs into different pages for each of the different commands, similar to how the command reference is laid out.
I’ll add time-dependent fixtures and examples for collect/animate, Plotly, PyVista, and direct grid/value access. I’ll also pair each website figure with a tested Python script and CLI command, and split the Python API reference into individual pages.
I’ll compare the outputs from the two interfaces in the same build: pixels and timing for images/GIFs, and trace data plus layout for Plotly. A few existing figures use custom Python-only plotting steps, so I’ll adapt those to equivalent pgkyl pipelines while keeping the scientific examples clear.
The comparison caught a real CLI mistake in the growth example: fit appends its result, so f1 selects the fitted curve while f0 still selects the input. That’s corrected. The new pages will show both generated outputs and their comparison results, including interactive Plotly views.
All 19 figure pairs now match, including both GIF animations, the Plotly specifications, and both PyVista screenshots. I’m checking that the interactive embeds work in both website layouts and that every Python command has its own reference page with a CLI link.
The examples and API pages pass the documentation tests. I’m refining the PyVista figures for readability, then rebuilding the full website to verify the animations and interactive embeds in their hosted layout.
Both animations match frame for frame between Python and the CLI, including playback timing. The docs now also show matching Plotly data and layouts, PyVista screenshots, and a NumPy example that copies and modifies grid/value arrays. The full website build is finishing.
Implemented in both repositories:
- Generated time-series data,
collectexamples, and two animations. - Plotly 2D surfaces/3D isosurfaces and PyVista examples.
- Direct grid/value access and manual NumPy manipulation.
- Paired Python scripts and CLI commands for all 19 published figures, with automated equivalence checks.
- 171 individual Python API reference pages linked to CLI commands.
- Python 3.12 documentation CI, with website builds sourcing Postgkyl
main.
Validation: 41 documentation/example tests and 3 website integration tests passed. The complete website builds with warnings treated as errors.
Open the local preview. Changes are local; nothing has been published.