Skip to content

Release v1.12.0 — viewer subpackage - #97

Merged
nmorabowen merged 1 commit into
mainfrom
guppi/release-1.12.0
May 13, 2026
Merged

Release v1.12.0 — viewer subpackage#97
nmorabowen merged 1 commit into
mainfrom
guppi/release-1.12.0

Conversation

@nmorabowen

Copy link
Copy Markdown
Owner

Summary

Consolidates Phase 0 → Phase 3.0e of the viewer roadmap into a single release. The intermediate v1.10 / v1.11 markers from docs/viewer/00-roadmap.md are folded into v1.12.0 rather than tagged separately — the entire viewer subpackage shipped in this consolidated cut.

  • pyproject.toml bumped from 1.9.01.12.0.
  • CHANGELOG.md gains a single comprehensive v1.12.0 entry.

What lands in v1.12.0

Phase Subpackage / feature PRs
0 Optional extras + scaffold (pre-session)
1 viewer.math (gauss extrapolation, frames, picking) (pre-session)
2.1 viewer.core protocols (Scene / Layer / Backend / DataSource) #85
2.2 MplBackend #86
2.3 MPCODataSourceAdapter #88
2.4 MeshLayer + byte-identical ds.plot.mesh rewire #89
2.5 DeformedMeshLayer + ds.plot.deformed_shape / undeformed_shape rewires #90
2.6 NodeLayer + VectorLayer #91
3.0a PyVistaBackend #92
3.0b ContourLayer — cell topology #93
3.0c ContourLayer — nodal topology + add_polygons(point_values=) protocol #94
3.0d make_gp_nodal_scalars (GP→node smooth) #95
3.0e make_gp_discrete_scalars + topology="nodal_discrete" #96

Backward compatibility

  • Lightweight install path (pip install stko_to_python) unchanged — numpy + pandas + matplotlib, no PyVista, no Qt.
  • Every existing ds.plot.* entry point keeps its v1.x signature and visual output. The implementation now flows through Scene + Layer + MplBackend, but the integration tests (tests/integration/test_mesh_plot.py, test_deformed_shape.py) all pass byte-identically on the rewired path.
  • The viewer subpackage is not imported until the user touches STKO_to_python.viewer. Heavier optional deps (PyVista, VTK, PySide6) only load when the corresponding extra is installed.

Test plan

  • Full suite under system Python (no pyvista): 1629 passed, 54 skipped (skips are fixture-availability + pyvista-gated modules).
  • opensees_venv (pyvista 0.47.1 + VTK 9.6.1): all PyVista-gated tests pass.
  • pyproject.toml parses; tomllib.loads(...)['project']['version'] returns '1.12.0'.

Post-merge

Tag the merge commit on main per CLAUDE.md's versioning policy:

git tag v1.12.0 <merge-sha> && git push origin v1.12.0

🤖 Generated with Claude Code

Consolidates Phase 0 → Phase 3.0e of the viewer roadmap into a
single release. The intermediate v1.10 / v1.11 markers from the
roadmap are folded into v1.12.0 rather than tagged separately —
the entire viewer subpackage shipped in this consolidated cut.

What lands:
- Optional [viewer-3d] / [viewer] / [viewer-headless] / [viewer-web]
  extras. Lightweight install path unchanged.
- viewer.math algorithms: gauss extrapolation (per-element +
  smooth-nodal averaging), beam-frame fallback, shell-frame
  quaternion, vectorized picking projection.
- viewer.core protocols: Scene / Layer / Backend / DataSource,
  SelectionSpec, SceneStyle / LayerStyle.
- viewer.backends.mpl.MplBackend — first concrete Backend, pure
  matplotlib, no new dependencies.
- viewer.backends.pyvista.PyVistaBackend — second concrete
  Backend, off-screen + windowed PyVista rendering.
- viewer.layers: MeshLayer, DeformedMeshLayer, NodeLayer,
  VectorLayer, ContourLayer (cell / nodal / nodal_discrete
  topologies covering all five paths of apeGmsh's contour
  dispatch).
- viewer.math.gauss_extrapolation helpers
  (make_gp_nodal_scalars, make_gp_discrete_scalars) wiring the
  GP-extrapolation kernel into ContourLayer's nodal modes.
- Byte-identical rewires of ds.plot.mesh, ds.plot.undeformed_shape,
  and ds.plot.deformed_shape through Scene + Layer + MplBackend.

The lightweight install path (`pip install stko_to_python`) keeps
the v1.8 footprint unchanged — numpy + pandas + matplotlib. No
viewer module is imported until the user touches
STKO_to_python.viewer, and heavier optional dependencies (PyVista,
VTK, PySide6) are only loaded when the corresponding extra is
installed.

Local suite under system Python (no pyvista): 1629 passed, 54
skipped (skips are fixture-availability + pyvista-gated modules).
Under opensees_venv (pyvista 0.47.1 + VTK 9.6.1): the
PyVista-gated tests pass too.

Tag this commit as v1.12.0 on main after merge per CLAUDE.md's
versioning policy.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@nmorabowen
nmorabowen merged commit f88628d into main May 13, 2026
4 of 6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant