TST/DOC: fix build-docs and codecov failures from the PyVista animations#1069
Merged
Merged
Conversation
Fixes the two CI failures on the develop -> master sync (PR #1068): - DOC/build-docs: the ``color_by`` parameter of ``animate_trajectory`` used the numpydoc ``{...}`` value-set syntax split across two lines, which numpydoc rejects ("invalid value set (missing closing brace)"). Because the docs job builds with ``-W`` (warnings as errors) the build failed. Rewrite the type as a single-line prose description. - codecov/patch and codecov/project: the new PyVista animation subsystem in ``_FlightPlots`` was only exercised by a single minimal off-screen smoke test, leaving the scene builders and the pure geometry/telemetry helpers uncovered. Add unit tests for the render-independent helpers (quaternion rotation, polylines, camera paths, option validation, event markers, telemetry panels, background palette, etc.) and extend the off-screen integration tests to drive the full set of overlays (charts, camera tracking, stability markers, playback controls) and the GIF export path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VW2VidZmPd93dd8xW8BX2J
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## develop #1069 +/- ##
===========================================
+ Coverage 80.85% 82.18% +1.32%
===========================================
Files 122 122
Lines 16355 16355
===========================================
+ Hits 13224 13441 +217
+ Misses 3131 2914 -217 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
wuisabel-gif
pushed a commit
to wuisabel-gif/RocketPy
that referenced
this pull request
Jul 19, 2026
Gui-FernandesBR
added a commit
that referenced
this pull request
Jul 19, 2026
- Fold the Unreleased section into v1.13.0 and date it 2026-07-19. - Drop reverted PR #958 entries (parachute abstract-base breaking change) and its revert #1063 - neither ever reached a release. - Consolidate the 3D flight animation into a single #1066 (PyVista) entry; drop the superseded Vedo-based #909. - Remove duplicate entries (#1066, #1067, #1055 in Added, #1047 in Added) and the doubled "ENH: ENH:" / "MNT: MNT:" auto-changelog prefixes. - Drop non-user-facing meta entries (#1062 changelog cleanup, #1069 CI fix) and the test-only entry (#1051), per the changelog's own scope rules. - Add the missing #1070 (max_time for StochasticFlight) entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3 tasks
Gui-FernandesBR
added a commit
that referenced
this pull request
Jul 19, 2026
… deps sync (#1073) * DOC: consolidate and clean v1.13.0 changelog for release - Fold the Unreleased section into v1.13.0 and date it 2026-07-19. - Drop reverted PR #958 entries (parachute abstract-base breaking change) and its revert #1063 - neither ever reached a release. - Consolidate the 3D flight animation into a single #1066 (PyVista) entry; drop the superseded Vedo-based #909. - Remove duplicate entries (#1066, #1067, #1055 in Added, #1047 in Added) and the doubled "ENH: ENH:" / "MNT: MNT:" auto-changelog prefixes. - Drop non-user-facing meta entries (#1062 changelog cleanup, #1069 CI fix) and the test-only entry (#1051), per the changelog's own scope rules. - Add the missing #1070 (max_time for StochasticFlight) entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * MNT: sync optional animation deps in requirements-optional.txt The 3D flight animation switched from Vedo (#909) to PyVista (#1066). pyproject.toml was updated (animation extra = pyvista + imageio-ffmpeg) but requirements-optional.txt still pinned the now-unused vedo and was missing the new deps. Drop vedo and add pyvista/imageio-ffmpeg so both dependency sources agree. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Gui-FernandesBR
added a commit
that referenced
this pull request
Jul 19, 2026
* ENH: `Function` vectorized speed-up and refactor (#1049) * MNT: deduplicate function arithmetic logic. ENH: modularize function arithmetic and source dispatch. MNT: refactor function math modules. MNT: optimize function math speed. * MNT: enhance parachute trigger evaluation for speed. * MNT: improve typing stack on Function evaluation. * MNT: architecture corrections and optimizations. * TST: attempt at tests re-run. * MNT: minor fixes and docstring update. * DOC: Update Changelog for PR #1049 * ENH: Interactive 3D Flight Trajectory and Attitude Animation. (#1066) * ENH: Interactive 3D Flight Trajectory and Attitude Animation. * TST: update actions workflow dependencies for headless run. * MNT: solve plot animation review comments on styling. * DOC: Update Changelog for PR #1066 * MNT: Remove unused pylint disable statements. (#1067) * DOC: Update Changelog for PR #1067 * TST: cover PyVista flight animation helpers and fix docstring Fixes the two CI failures on the develop -> master sync (PR #1068): - DOC/build-docs: the ``color_by`` parameter of ``animate_trajectory`` used the numpydoc ``{...}`` value-set syntax split across two lines, which numpydoc rejects ("invalid value set (missing closing brace)"). Because the docs job builds with ``-W`` (warnings as errors) the build failed. Rewrite the type as a single-line prose description. - codecov/patch and codecov/project: the new PyVista animation subsystem in ``_FlightPlots`` was only exercised by a single minimal off-screen smoke test, leaving the scene builders and the pure geometry/telemetry helpers uncovered. Add unit tests for the render-independent helpers (quaternion rotation, polylines, camera paths, option validation, event markers, telemetry panels, background palette, etc.) and extend the off-screen integration tests to drive the full set of overlays (charts, camera tracking, stability markers, playback controls) and the GIF export path. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VW2VidZmPd93dd8xW8BX2J * DOC: Update Changelog for PR #1069 * ENH: Add optional `max time` to `stochastic_flight` and create `stochastic_flight` objects with attributes in base flight (#1070) * Add max_time option to stochastic_flight * Update: use default attributes in flight object for stochastic flights * Add tests to check attributes * Refactor implementation * MNT: pre-release v1.13.0 cleanup — changelog consolidation + optional deps sync (#1073) * DOC: consolidate and clean v1.13.0 changelog for release - Fold the Unreleased section into v1.13.0 and date it 2026-07-19. - Drop reverted PR #958 entries (parachute abstract-base breaking change) and its revert #1063 - neither ever reached a release. - Consolidate the 3D flight animation into a single #1066 (PyVista) entry; drop the superseded Vedo-based #909. - Remove duplicate entries (#1066, #1067, #1055 in Added, #1047 in Added) and the doubled "ENH: ENH:" / "MNT: MNT:" auto-changelog prefixes. - Drop non-user-facing meta entries (#1062 changelog cleanup, #1069 CI fix) and the test-only entry (#1051), per the changelog's own scope rules. - Add the missing #1070 (max_time for StochasticFlight) entry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * MNT: sync optional animation deps in requirements-optional.txt The 3D flight animation switched from Vedo (#909) to PyVista (#1066). pyproject.toml was updated (animation extra = pyvista + imageio-ffmpeg) but requirements-optional.txt still pinned the now-unused vedo and was missing the new deps. Drop vedo and add pyvista/imageio-ffmpeg so both dependency sources agree. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * DOC: Update Changelog for PR #1073 --------- Co-authored-by: Pedro Henrique Marinho Bressan <87212571+phmbressan@users.noreply.github.com> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: Claude <noreply@anthropic.com> Co-authored-by: ZuoRen Chen <180084773+zuorenchen@users.noreply.github.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.
Pull request type
Checklist
ruff check/ruff format --check/pylint) has passed locallytests/unit/test_plots.py,tests/integration/test_plots.py) have passed locally (off screen, under Xvfb)CHANGELOG.mdhas been updated (if relevant)Current behavior
The
develop -> mastersync (#1068) is red on two checks, both caused by the new PyVista 3D flight animation subsystem inrocketpy/plots/flight_plots.py:build-docs (3.12)fails. The docs job builds Sphinx with-W(warnings treated as errors) and emits a single warning:The
color_byparameter used the numpydoc{...}"set of values" syntax split across two physical lines, which numpydoc cannot parse.codecov/patch(74.77%) andcodecov/projectfail. The animation subsystem (~1000 new lines: scene builders, geometry/telemetry helpers, option parsing, the render loop) was only exercised by one minimal off-screen smoke test, so most of it counted as uncovered — dropping project coverage ~1% below the base and patch coverage below the 5% threshold.New behavior
Docs: rewrote the
color_bytype as a single-line prose description (str | bool | None, one of...), so numpydoc parses it cleanly and the-Wbuild succeeds. Verified withnumpydoc.docscrape.FunctionDocthat the docstring now parses without warnings.Coverage: added tests instead of suppressing coverage, so the logic is genuinely checked:
tests/unit/test_plots.pyfor the render-independent helpers: quaternion → rotation matrix, safe unit vector, color scheme / override validation, scalar metadata, polyline & dashed-polyline builders, direction arrow, camera-path interpolation and camera-mode updates, chart-cursor updates, background palette (day/night/explicit) and altitude blending,_animation_optionsdefaults and every validation error, ground-image bounds (ENU + lat/lon + errors), model-path / time-range validation, position/velocity/wind/scalar samplers, event markers, phase labels and telemetry panels.tests/integration/test_plots.pyto drive both animations with the full overlay set (color-by, kinematic/attitude charts, subrocket point, camera tracking, CP/CM stability markers, playback controls) and to cover the deterministic GIF export path.Locally this raises
flight_plots.pyanimation coverage from ~286 missing lines to ~88 (the residual being the genuinely interactive timer/widget callbacks that only fire in a live event loop), which brings patch coverage to ~88% and project coverage above the base.No production behavior changes — only a docstring edit and new tests.
Breaking change
Additional information
The animation methods require a display; the new integration tests render off screen (
backend="none",off_screen=True) exactly like the existing smoke test and are guarded withpytest.importorskip("pyvista")/pytest.importorskip("imageio").CHANGELOG.mdintentionally left untouched per discussion in #1068.🤖 Generated with Claude Code
https://claude.ai/code/session_01VW2VidZmPd93dd8xW8BX2J
Generated by Claude Code