Skip to content

Refactor PyClical demos and systematic regression tests #97

Description

@penguian

[0.98a4] PyClical Demo Refactoring & Test Harness Optimization

Description

This issue tracks the scope for GluCat release 0.98a4.

Release 0.98a4 establishes a dedicated PyClical Demos Sandbox, investigates Marimo reactive notebook integration alongside Jupyter, removes the legacy Mayavi 3D plotting backend in favor of PyVista, and optimizes test-one-config-option.sh and fast-test-one-config-option.sh to prioritize early failure detection via test_doctest.


Tasks & Checklist

1. Release Milestone Shift (TODO.md)

  • Shift future 0.98a* release milestones in TODO.md to introduce 0.98a4:
    • 0.98a3: Defence in Depth & Quality Hardening (Current Release)
    • 0.98a4 (New): PyClical Demos Sandbox, Marimo Investigation & Test Harness Optimization
    • 0.98a5 (was 0.98a4): Raytracer
    • 0.98a6 (was 0.98a5): Documentation
    • 0.98a7 (was 0.98a6): Packaging

2. PyClical Demos Sandbox Reorganization (pyclical/demos/sandbox/)

  • Create pyclical/demos/sandbox/ subdirectory.
  • Move all text/numerical interactive tutorial and presentation scripts into sandbox/:
    • pyclical_tutorial_0_0_notation.py through pyclical_tutorial_1_5_conformal.py and pyclical_tutorial_2_0_wedge_product.py
    • clifford_demo.py, m_theory_demo.py, sqrt_log_demo.py, versor_demo.py, pyclical_demo.py, pyclical_tutorials.py
  • Move runtime engine, build, and validation scripts into sandbox/:
    • pyclical_tutorial_utils.py, pyclical_notebook_utils.py, build_pyclical_notebooks.py, validate_notebooks.py, and .ipynb files
  • Create pyclical/demos/sandbox/images/ and store local offline copies of Hermann_Graßmann.jpg and Clifford_William_Kingdon.jpg. Update clifford_demo.py to use relative local paths.
  • Update pyclical/demos/Makefile.am and build rules to reflect the sandbox/ and plotting/ structure.

3. Marimo Notebook Integration Investigation

  • Investigate generating reactive Marimo Python notebooks (.py) alongside Jupyter notebooks (.ipynb).
  • Evaluate build_pyclical_notebooks.py and pyclical_notebook_utils.py extensions for dual notebook output generation and execution validation.

4. Mayavi Deprecation & Removal

  • Remove legacy Mayavi scripts (plotting_demo_mayavi.py, setup-mayavi-env.sh, mayavi-env.yml, export-mayavi-vars.sh).
  • Update pyclical/demos/plotting/Makefile.am to remove Mayavi dependencies, leaving PyVista as the single 3D plotting backend.

5. Test Harness Optimization

  • Update test/test-one-config-option.sh to build and run test_doctest (make ${args} -C test_doctest check) before running the full test suite (make ${args} check).
  • Update test/fast-test-one-config-option.sh to only build and run test_doctest (make ${args} -C test_doctest check).

Acceptance Criteria

  • ./test/fast-test-one-config-option.sh and ./test/test-one-config-option.sh execute cleanly with test_doctest prioritization.
  • cd pyclical/demos/sandbox && python3 build_pyclical_notebooks.py builds all notebooks and loads offline images without network calls or errors.
  • make check and make check-python pass with 100% success across the reorganized repository structure.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions