Skip to content

docs: migrate documentation styling with astro - #207

Open
mcllerena wants to merge 7 commits into
mainfrom
docs/migrate-docs
Open

mcllerena wants to merge 7 commits into
mainfrom
docs/migrate-docs

Conversation

@mcllerena

Copy link
Copy Markdown
Contributor

This PR migrates the PLEXOSDB documentation from Sphinx to Astro with Starlight, following the layout used by the r2x environment packages.

  • Moves documentation into docs and removes the Sphinx source tree and build configuration.
  • Adds an AST-based generator for Python API pages, module references, and sidebar data.
  • Preserves legacy documentation routes and API bookmarks with static redirects and fragment mappings.
  • Updates the docs workflow and project configuration for the Astro build and deployment.
  • Adds redirect tests and a built-site validator for internal links and API bookmarks.

@mcllerena
mcllerena requested review from pesap and a balanced review from Copilot October 29, 2026 16:57

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Copilot review overview

2 open issues
What changed in this PR

Migrates the project documentation from Sphinx to Astro + Starlight, adds a Python AST-based API docs generator, and preserves legacy routes/bookmarks via static redirects plus build-time validation and tests.

Changes:

  • Replaces the Sphinx docs toolchain with an Astro/Starlight site (Node-based build + new styling/config).
  • Adds a Python AST generator to produce API reference pages, sidebar JSON, and legacy fragment mappings.
  • Adds redirect tests and a post-build validator to ensure internal links and legacy API member bookmarks resolve.
File Description
pyproject.toml Removes Sphinx-era docs dependency group to reflect Astro-based docs build.
docs/​validate_build.py Adds post-build HTML/link/bookmark validation for the generated site and legacy redirects.
docs/​tsconfig.json Adds strict TS config for Astro/Starlight workspace.
docs/​test_redirects.mjs Adds Node test to verify legacy redirect JS behavior and fragment mapping.
docs/​src/​styles/​brand.css Adds Starlight theme tokens and site title styling.
docs/​src/​content/​docs/​reference/​python-api.md Adds top-level “API Reference” landing page for generated Python API docs.
docs/​src/​content/​docs/​reference/​python-api/​classenum.md Generated Python API page for ClassEnum.
docs/​src/​content/​docs/​reference/​python-api/​collectionenum.md Generated Python API page for CollectionEnum.
docs/​src/​content/​docs/​reference/​python-api/​databasevalidationcategory.md Generated Python API page for DatabaseValidationCategory.
docs/​src/​content/​docs/​reference/​python-api/​databasevalidationerror.md Generated Python API page for DatabaseValidationError.
docs/​src/​content/​docs/​reference/​python-api/​databasevalidationfinding.md Generated Python API page for DatabaseValidationFinding.
docs/​src/​content/​docs/​reference/​python-api/​duckdbresult.md Generated Python API page for DuckDBResult.
docs/​src/​content/​docs/​reference/​python-api/​duckdbschema.md Generated Python API page for DuckDBSchema.
docs/​src/​content/​docs/​reference/​python-api/​duckdbsolutioninfo.md Generated Python API page for DuckDBSolutionInfo.
docs/​src/​content/​docs/​reference/​python-api/​ifexists.md Generated Python API page for IfExists.
docs/​src/​content/​docs/​reference/​python-api/​periodenum.md Generated Python API page for PeriodEnum.
docs/​src/​content/​docs/​reference/​python-api/​phaseenum.md Generated Python API page for PhaseEnum.
docs/​src/​content/​docs/​reference/​python-api/​plexosdb.md Generated Python API page for PlexosDB.
docs/​src/​content/​docs/​reference/​python-api/​plexossolution.md Generated Python API page for PlexosSolution.
docs/​src/​content/​docs/​reference/​python-api/​propertyrecord.md Generated Python API page for PropertyRecord.
docs/​src/​content/​docs/​reference/​python-api/​resulttable.md Generated Python API page for ResultTable.
docs/​src/​content/​docs/​reference/​python-api/​resultschema.md Generated Python API page for ResultSchema.
docs/​src/​content/​docs/​reference/​python-api/​sqliterecord.md Generated Python API page for SQLiteRecord.
docs/​src/​content/​docs/​reference/​python-api/​sqlitevalue.md Generated Python API page for SQLiteValue.
docs/​src/​content/​docs/​reference/​python-api/​tableinfo.md Generated Python API page for TableInfo.
docs/​src/​content/​docs/​reference/​python-api/​tabletypeenum.md Generated Python API page for TableTypeEnum.
docs/​src/​content/​docs/​reference/​python-api/​validationresult.md Generated Python API page for ValidationResult.
docs/​src/​content/​docs/​reference/​python-api/​xmlhandler.md Generated Python API page for XMLHandler.
docs/​src/​content/​docs/​reference/​python-api/​xmlrecord.md Generated Python API page for XMLRecord.
docs/​src/​content/​docs/​reference/​python-api/​xmlvalue.md Generated Python API page for XMLValue.
docs/​src/​content/​docs/​reference/​api/​modules/​checks.md Adds/updates generated module guide for plexosdb.checks.
docs/​src/​content/​docs/​reference/​api/​modules/​db_solution.md Adds/updates generated module guide for plexosdb.db_solution*.
docs/​src/​content/​docs/​reference/​api/​modules/​enums.md Adds/updates generated module guide for plexosdb.enums.
docs/​src/​content/​docs/​reference/​api/​modules/​exceptions.md Adds/updates generated module guide for plexosdb.exceptions.
docs/​src/​content/​docs/​reference/​api/​modules/​plexosdb.md Adds/updates generated module guide for plexosdb.db API surface.
docs/​src/​content/​docs/​reference/​api/​modules/​solution_reader.md Adds/updates generated module guide for the SQLite solution reader modules.
docs/​src/​content/​docs/​reference/​api/​modules/​sqlite_manager.md Adds/updates generated module guide for plexosdb.db_manager.
docs/​src/​content/​docs/​reference/​api/​modules/​utils.md Adds/updates generated module guide for plexosdb.utils.
docs/​src/​content/​docs/​reference/​api/​modules/​xml_handler.md Adds/updates generated module guide for plexosdb.xml_handler.
docs/​src/​content/​docs/​how-to/​index.md Adds a “How-to guides” index page in the new Starlight content tree.
docs/​src/​content.config.ts Configures Starlight docs collection loader/schema.
docs/​source/​index.md Converts Sphinx-era markdown into Starlight frontmatter + updated routes.
docs/​source/​installation.md Converts Sphinx-era markdown into Starlight frontmatter + updated routes.
docs/​source/​tutorial.md Converts Sphinx-era markdown into Starlight frontmatter + updated routes.
docs/​source/​CHANGELOG.md Converts Sphinx-era changelog into Starlight frontmatter.
docs/​source/​howtos/​add_attributes.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​add_objects.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​add_properties.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​add_reports.md Converts Sphinx-era how-to into Starlight frontmatter.
docs/​source/​howtos/​bulk_operations.md Converts Sphinx-era how-to into Starlight frontmatter.
docs/​source/​howtos/​copy_objects.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​create_db.md Converts Sphinx-era how-to into Starlight frontmatter.
docs/​source/​howtos/​delete_objects.md Converts Sphinx-era how-to into Starlight frontmatter.
docs/​source/​howtos/​import_export.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​inspect_solution.md Converts Sphinx-era how-to into Starlight frontmatter + updated routes.
docs/​source/​howtos/​manage_relationships.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​mcp_server.md Converts Sphinx-era how-to into Starlight frontmatter.
docs/​source/​howtos/​query_database.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​read_solution.md Converts Sphinx-era how-to into Starlight frontmatter + updated routes.
docs/​source/​howtos/​remove_non_ascii.md Converts Sphinx-era how-to into Starlight frontmatter.
docs/​source/​howtos/​validate_database.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​work_with_scenarios.md Converts Sphinx-era how-to into Starlight frontmatter + admonition syntax.
docs/​source/​howtos/​index.md Removes Sphinx toctree-based how-to index (replaced by Starlight index).
docs/​source/​conf.py Removes Sphinx configuration.
docs/​source/​_templates/​versioning.html Removes Sphinx template.
docs/​source/​api/​index.md Removes Sphinx API toctree page (replaced by generated Starlight reference).
docs/​source/​api/​checks.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​db_solution.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​enums.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​exceptions.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​plexosdb.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​solution_reader.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​sqlite_manager.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​utils.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​xml_handler.md Removes Sphinx automodule page (replaced by generated module guide).
docs/​source/​api/​diagnostic_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​horizon_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​lt_plan_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​model_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​mt_schedule_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​pasa_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​performance_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​production_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​st_schedule_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​source/​api/​transmission_attributes.md Converts attribute reference page into Starlight frontmatter.
docs/​public/​legacy-redirect.js Adds client-side redirect + fragment remapping (legacy bookmark preservation).
docs/​public/​api-fragments.json Adds generated map from legacy API member fragments to new canonical URLs.
docs/​public/​favicon.svg Adds site favicon.
docs/​public/​index.html Adds legacy redirect shim for docs root (checked by validator).
docs/​public/​installation.html Adds legacy redirect page for old installation route.
docs/​public/​tutorial.html Adds legacy redirect page for old tutorial route.
docs/​public/​CHANGELOG.html Adds legacy redirect page for old changelog route.
docs/​public/​howtos/​index.html Adds legacy redirect page for old howtos index route.
docs/​public/​howtos/​add_attributes.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​add_objects.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​add_properties.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​add_reports.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​bulk_operations.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​copy_objects.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​create_db.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​delete_objects.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​import_export.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​inspect_solution.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​manage_relationships.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​mcp_server.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​query_database.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​read_solution.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​remove_non_ascii.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​validate_database.html Adds legacy redirect page for old how-to route.
docs/​public/​howtos/​work_with_scenarios.html Adds legacy redirect page for old how-to route.
docs/​public/​api/​index.html Adds legacy redirect for old API index route.
docs/​public/​api/​checks.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​db_solution.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​enums.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​exceptions.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​plexosdb.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​solution_reader.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​sqlite_manager.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​utils.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​xml_handler.html Adds legacy redirect for old Sphinx automodule route.
docs/​public/​api/​model_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​production_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​performance_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​transmission_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​pasa_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​diagnostic_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​horizon_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​mt_schedule_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​st_schedule_attributes.html Adds legacy redirect for old attribute reference route.
docs/​public/​api/​lt_plan_attributes.html Adds legacy redirect for old attribute reference route.
docs/​package.json Adds Node dependencies and build/test hooks for Astro site and generators.
docs/​astro.config.mjs Adds Astro/Starlight site configuration + sidebar wiring to generated JSON.
docs/​generate_api.py Adds AST-based generator for API pages, module guides, sidebar, and fragments.
docs/​README.md Adds contributor instructions for building docs locally under Astro/Starlight.
docs/​make.bat Removes Sphinx Windows build helper.
docs/​Makefile Removes Sphinx Makefile.
.gitignore Ignores Astro build cache and docs node_modules.
.github/​workflows/​docs.yaml Updates CI workflow to install Node deps and build with Astro.

Review effort: Lite

Comment thread .github/workflows/docs.yaml Resolved
Comment thread docs/package.json Resolved
@codecov-commenter

codecov-commenter commented Oct 29, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 96.23%. Comparing base (73e7fab) to head (5d72ea2).

Additional details and impacted files
@@           Coverage Diff           @@
##             main     #207   +/-   ##
=======================================
  Coverage   96.23%   96.23%           
=======================================
  Files          22       22           
  Lines        3587     3587           
=======================================
  Hits         3452     3452           
  Misses        135      135           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@mcllerena
mcllerena requested a review from akrivi November 4, 2026 14:24
@github-actions github-actions Bot added the tests label Nov 4, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants