Repository navigation
fix: align lunar frames with siderust 0.18 and prepare v0.9.0 - #21
Merged
Merged
Conversation
VPRamon
force-pushed
the
fix/distinguish-lunar-frame-identities
branch
from
October 31, 2026 21:58
8d99d6c to
f2c9e4b
Compare
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
Adopt published Rust Siderust 0.18.0 and prepare siderust-py / Python siderust 0.9.0. Fix the analytical lunar frame alias without changing the cross-extension bridge protocol or duplicating time types.
Synchronization and implementation
fix/distinguish-lunar-frame-identitiesontoorigin/main(67ca3ae), preserving the canonicalsiderust.timefacade, automatictempoch>=0.2.1,<0.6installation, tests, examples and isolated distribution checks. Combine both changelog changes; push the rebase with an explicit force-with-lease.siderust = "0.18.0"; registry resolution/checksum verified, no local core patches or Git dependencies. Root lockfile changes only the core and binding versions/checksum; the ignored standalone consumer lockfile is regenerated under existing repository policy.MoonPrincipalAxesthrough coordinate constructors, frame/combined transforms, dictionary loading and pickle reconstruction. AnalyticalIAU_MOONinputs useMoonIauMeanEarth; actual principal-axes observations retain explicit SPICEMOON_PA/MOON_MEkernel semantics.ValueError, without panic or analytical fallback.Compatibility and scientific validation
Breaking: migrate legacy
MoonPrincipalAxesdictionaries/pickles only when the original data meant analyticalIAU_MOON. Genuine principal-axes coordinates must retain their realization and matching binary PCK/FK kernels; never migrate by relabeling axes.The released core supplies VSOP87/ELP canonical IAU 2006 J2000 normalization and the lunar TDB argument. No Python-side normalization is added. Numerical outputs change; frame consistency is not an intrinsic model-accuracy claim.
Independent regression cases retain the published core's externally rotated IMCCE Earth A/E check vectors and all five ELP Table H vectors, unchanged. Explicit TDB→TT conversion uses canonical tempoch; tolerances remain 1e-10 AU and 1e-4 km. These check matching physical targets/centers. Existing CSPICE DE440 kernel excerpts/reference CSVs and their strict tolerances are unchanged;
MOON_ME/MOON_PAobservation tests pass. No existing numerical expectations or tolerances required replacement.Additional tests cover spherical dictionary rejection, legacy pickle rejection under every supported protocol, valid analytical coordinate round trips, combined transform validation and Python exceptions for all five runtime query methods outside coverage.
Tests and CI
cargo test --all-targets --all-features --locked: 12 passed;cargo test --doc --locked: passed (no Rust doctests).cargo package --lockedand guarded publication dry-run: passed without upload, including a consumer rebuilt from the packaged crate.f2c9e4b: all 15 checks passed, including Python 3.9–3.14, bridge contracts on Linux/macOS/Windows, package/wheel/sdist validation and coverage.The optional full-kernel test requires
SIDERUST_LUNAR_KERNEL_DIRwith the original NAIF kernel set; normal CSPICE reference/excerpt tests run offline and passed.Release preparation
Cargo/Python manifests, citation, lockfile, README, interop/lunar documentation and an undated dedicated
[0.9.0]changelog are consistent.[Unreleased]remains available without duplicate entries. The PyPI name remainssiderust; the Rust crate remainssiderust-py. Installed__version__is 0.9.0, andsiderust.timeexports the exact tempoch objects.No core repository changes, new PR, merge, tag, publication or GitHub Release. Maintainer retains merge/release control.