Release v1.12.0 — viewer subpackage - #97
Merged
Merged
Conversation
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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Consolidates Phase 0 → Phase 3.0e of the viewer roadmap into a single release. The intermediate
v1.10/v1.11markers fromdocs/viewer/00-roadmap.mdare folded intov1.12.0rather than tagged separately — the entire viewer subpackage shipped in this consolidated cut.pyproject.tomlbumped from1.9.0→1.12.0.CHANGELOG.mdgains a single comprehensive v1.12.0 entry.What lands in v1.12.0
viewer.math(gauss extrapolation, frames, picking)viewer.coreprotocols (Scene / Layer / Backend / DataSource)MplBackendMPCODataSourceAdapterMeshLayer+ byte-identicalds.plot.meshrewireDeformedMeshLayer+ds.plot.deformed_shape/undeformed_shaperewiresNodeLayer+VectorLayerPyVistaBackendContourLayer— cell topologyContourLayer— nodal topology +add_polygons(point_values=)protocolmake_gp_nodal_scalars(GP→node smooth)make_gp_discrete_scalars+topology="nodal_discrete"Backward compatibility
pip install stko_to_python) unchanged — numpy + pandas + matplotlib, no PyVista, no Qt.ds.plot.*entry point keeps its v1.x signature and visual output. The implementation now flows throughScene+Layer+MplBackend, but the integration tests (tests/integration/test_mesh_plot.py,test_deformed_shape.py) all pass byte-identically on the rewired path.STKO_to_python.viewer. Heavier optional deps (PyVista, VTK, PySide6) only load when the corresponding extra is installed.Test plan
opensees_venv(pyvista 0.47.1 + VTK 9.6.1): all PyVista-gated tests pass.pyproject.tomlparses;tomllib.loads(...)['project']['version']returns'1.12.0'.Post-merge
Tag the merge commit on
mainper CLAUDE.md's versioning policy:🤖 Generated with Claude Code