sidereon 3.0.1__tar.gz → 3.0.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. {sidereon-3.0.1 → sidereon-3.0.3}/.github/workflows/ci.yml +36 -0
  2. {sidereon-3.0.1 → sidereon-3.0.3}/.github/workflows/release.yml +40 -4
  3. {sidereon-3.0.1 → sidereon-3.0.3}/CHANGELOG.md +20 -0
  4. {sidereon-3.0.1 → sidereon-3.0.3}/Cargo.lock +5 -5
  5. {sidereon-3.0.1 → sidereon-3.0.3}/Cargo.toml +4 -4
  6. {sidereon-3.0.1 → sidereon-3.0.3}/PKG-INFO +1 -1
  7. {sidereon-3.0.1 → sidereon-3.0.3}/THIRD-PARTY-NOTICES.md +3 -3
  8. {sidereon-3.0.1 → sidereon-3.0.3}/pyproject.toml +4 -4
  9. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/__init__.pyi +181 -179
  10. {sidereon-3.0.1 → sidereon-3.0.3}/scripts/check-release.py +14 -16
  11. {sidereon-3.0.1 → sidereon-3.0.3}/scripts/core_source_identity.rs +1 -1
  12. {sidereon-3.0.1 → sidereon-3.0.3}/src/rtcm.rs +3 -1
  13. sidereon-3.0.3/tests/fixtures/bodies/observe_de.bsp +0 -0
  14. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/core_goldens.json +1 -1
  15. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/ppp_esbc.json +1 -1
  16. sidereon-3.0.3/tests/test_body_observe_reference.py +311 -0
  17. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_core_revision.py +39 -28
  18. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_lnav.py +17 -0
  19. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ntrip.py +11 -0
  20. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ppp.py +37 -0
  21. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_release_guard.py +5 -4
  22. sidereon-3.0.3/tests/test_rtcm_departure_message_number_contract.py +78 -0
  23. sidereon-3.0.3/tests/test_stub_accuracy.py +483 -0
  24. {sidereon-3.0.1 → sidereon-3.0.3}/uv.lock +1 -1
  25. sidereon-3.0.1/tests/test_stub_accuracy.py +0 -223
  26. {sidereon-3.0.1 → sidereon-3.0.3}/.cargo/config.toml.disabled +0 -0
  27. {sidereon-3.0.1 → sidereon-3.0.3}/.gitattributes +0 -0
  28. {sidereon-3.0.1 → sidereon-3.0.3}/.gitignore +0 -0
  29. {sidereon-3.0.1 → sidereon-3.0.3}/COVERAGE.md +0 -0
  30. {sidereon-3.0.1 → sidereon-3.0.3}/LICENSE +0 -0
  31. {sidereon-3.0.1 → sidereon-3.0.3}/README.md +0 -0
  32. {sidereon-3.0.1 → sidereon-3.0.3}/bench/README.md +0 -0
  33. {sidereon-3.0.1 → sidereon-3.0.3}/bench/bench_fleet.py +0 -0
  34. {sidereon-3.0.1 → sidereon-3.0.3}/docs/antex.md +0 -0
  35. {sidereon-3.0.1 → sidereon-3.0.3}/docs/observations.md +0 -0
  36. {sidereon-3.0.1 → sidereon-3.0.3}/docs/public-gnss-distribution-sources.md +0 -0
  37. {sidereon-3.0.1 → sidereon-3.0.3}/docs/releasing.md +0 -0
  38. {sidereon-3.0.1 → sidereon-3.0.3}/docs/rinex-clock.md +0 -0
  39. {sidereon-3.0.1 → sidereon-3.0.3}/docs/sp3.md +0 -0
  40. {sidereon-3.0.1 → sidereon-3.0.3}/docs/tdm.md +0 -0
  41. {sidereon-3.0.1 → sidereon-3.0.3}/examples/clean_a_phone_track.ipynb +0 -0
  42. {sidereon-3.0.1 → sidereon-3.0.3}/examples/static_occupation_vs_cors.ipynb +0 -0
  43. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/__init__.py +0 -0
  44. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/_compression.py +0 -0
  45. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/_exact_cache.py +0 -0
  46. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/_ingress.py +0 -0
  47. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/data.py +0 -0
  48. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/data.pyi +0 -0
  49. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/distribution.py +0 -0
  50. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/distribution.pyi +0 -0
  51. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/exact_cache.py +0 -0
  52. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/exact_cache.pyi +0 -0
  53. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/exact_sp3.py +0 -0
  54. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/exact_sp3.pyi +0 -0
  55. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/ntrip.py +0 -0
  56. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/ntrip.pyi +0 -0
  57. {sidereon-3.0.1 → sidereon-3.0.3}/python/sidereon/py.typed +0 -0
  58. {sidereon-3.0.1 → sidereon-3.0.3}/rust-toolchain.toml +0 -0
  59. {sidereon-3.0.1 → sidereon-3.0.3}/scripts/coverage/bindmap.py +0 -0
  60. {sidereon-3.0.1 → sidereon-3.0.3}/scripts/coverage/pubapi.py +0 -0
  61. {sidereon-3.0.1 → sidereon-3.0.3}/scripts/coverage/render_coverage.py +0 -0
  62. {sidereon-3.0.1 → sidereon-3.0.3}/scripts/smoke-release.py +0 -0
  63. {sidereon-3.0.1 → sidereon-3.0.3}/src/almanac.rs +0 -0
  64. {sidereon-3.0.1 → sidereon-3.0.3}/src/angles.rs +0 -0
  65. {sidereon-3.0.1 → sidereon-3.0.3}/src/anomaly.rs +0 -0
  66. {sidereon-3.0.1 → sidereon-3.0.3}/src/antex.rs +0 -0
  67. {sidereon-3.0.1 → sidereon-3.0.3}/src/araim.rs +0 -0
  68. {sidereon-3.0.1 → sidereon-3.0.3}/src/atmosphere.rs +0 -0
  69. {sidereon-3.0.1 → sidereon-3.0.3}/src/bias.rs +0 -0
  70. {sidereon-3.0.1 → sidereon-3.0.3}/src/bodies.rs +0 -0
  71. {sidereon-3.0.1 → sidereon-3.0.3}/src/body_observe.rs +0 -0
  72. {sidereon-3.0.1 → sidereon-3.0.3}/src/broadcast_comparison.rs +0 -0
  73. {sidereon-3.0.1 → sidereon-3.0.3}/src/cdm.rs +0 -0
  74. {sidereon-3.0.1 → sidereon-3.0.3}/src/clock_stability.rs +0 -0
  75. {sidereon-3.0.1 → sidereon-3.0.3}/src/conjunction.rs +0 -0
  76. {sidereon-3.0.1 → sidereon-3.0.3}/src/constellation.rs +0 -0
  77. {sidereon-3.0.1 → sidereon-3.0.3}/src/core_error_detail.rs +0 -0
  78. {sidereon-3.0.1 → sidereon-3.0.3}/src/covariance.rs +0 -0
  79. {sidereon-3.0.1 → sidereon-3.0.3}/src/coverage.rs +0 -0
  80. {sidereon-3.0.1 → sidereon-3.0.3}/src/data_catalog.rs +0 -0
  81. {sidereon-3.0.1 → sidereon-3.0.3}/src/defaults.rs +0 -0
  82. {sidereon-3.0.1 → sidereon-3.0.3}/src/dgnss.rs +0 -0
  83. {sidereon-3.0.1 → sidereon-3.0.3}/src/doppler.rs +0 -0
  84. {sidereon-3.0.1 → sidereon-3.0.3}/src/elements.rs +0 -0
  85. {sidereon-3.0.1 → sidereon-3.0.3}/src/emission.rs +0 -0
  86. {sidereon-3.0.1 → sidereon-3.0.3}/src/ephemeris.rs +0 -0
  87. {sidereon-3.0.1 → sidereon-3.0.3}/src/equinoctial.rs +0 -0
  88. {sidereon-3.0.1 → sidereon-3.0.3}/src/error_metrics.rs +0 -0
  89. {sidereon-3.0.1 → sidereon-3.0.3}/src/estimation.rs +0 -0
  90. {sidereon-3.0.1 → sidereon-3.0.3}/src/events.rs +0 -0
  91. {sidereon-3.0.1 → sidereon-3.0.3}/src/exact_cache.rs +0 -0
  92. {sidereon-3.0.1 → sidereon-3.0.3}/src/exact_time.rs +0 -0
  93. {sidereon-3.0.1 → sidereon-3.0.3}/src/fallback.rs +0 -0
  94. {sidereon-3.0.1 → sidereon-3.0.3}/src/forces.rs +0 -0
  95. {sidereon-3.0.1 → sidereon-3.0.3}/src/format_diagnostics.rs +0 -0
  96. {sidereon-3.0.1 → sidereon-3.0.3}/src/frame_catalog.rs +0 -0
  97. {sidereon-3.0.1 → sidereon-3.0.3}/src/frames.rs +0 -0
  98. {sidereon-3.0.1 → sidereon-3.0.3}/src/fusion.rs +0 -0
  99. {sidereon-3.0.1 → sidereon-3.0.3}/src/geodesic.rs +0 -0
  100. {sidereon-3.0.1 → sidereon-3.0.3}/src/geodetic_time_series.rs +0 -0
  101. {sidereon-3.0.1 → sidereon-3.0.3}/src/geofence.rs +0 -0
  102. {sidereon-3.0.1 → sidereon-3.0.3}/src/geoid.rs +0 -0
  103. {sidereon-3.0.1 → sidereon-3.0.3}/src/geometry.rs +0 -0
  104. {sidereon-3.0.1 → sidereon-3.0.3}/src/geometry_quality.rs +0 -0
  105. {sidereon-3.0.1 → sidereon-3.0.3}/src/ils.rs +0 -0
  106. {sidereon-3.0.1 → sidereon-3.0.3}/src/iod.rs +0 -0
  107. {sidereon-3.0.1 → sidereon-3.0.3}/src/ionex.rs +0 -0
  108. {sidereon-3.0.1 → sidereon-3.0.3}/src/lambert.rs +0 -0
  109. {sidereon-3.0.1 → sidereon-3.0.3}/src/leap.rs +0 -0
  110. {sidereon-3.0.1 → sidereon-3.0.3}/src/least_squares.rs +0 -0
  111. {sidereon-3.0.1 → sidereon-3.0.3}/src/lib.rs +0 -0
  112. {sidereon-3.0.1 → sidereon-3.0.3}/src/lnav.rs +0 -0
  113. {sidereon-3.0.1 → sidereon-3.0.3}/src/marshal.rs +0 -0
  114. {sidereon-3.0.1 → sidereon-3.0.3}/src/nmea.rs +0 -0
  115. {sidereon-3.0.1 → sidereon-3.0.3}/src/normality.rs +0 -0
  116. {sidereon-3.0.1 → sidereon-3.0.3}/src/ntrip.rs +0 -0
  117. {sidereon-3.0.1 → sidereon-3.0.3}/src/observables.rs +0 -0
  118. {sidereon-3.0.1 → sidereon-3.0.3}/src/observation.rs +0 -0
  119. {sidereon-3.0.1 → sidereon-3.0.3}/src/oem.rs +0 -0
  120. {sidereon-3.0.1 → sidereon-3.0.3}/src/omm.rs +0 -0
  121. {sidereon-3.0.1 → sidereon-3.0.3}/src/opm.rs +0 -0
  122. {sidereon-3.0.1 → sidereon-3.0.3}/src/orbit_determination.rs +0 -0
  123. {sidereon-3.0.1 → sidereon-3.0.3}/src/ppp.rs +0 -0
  124. {sidereon-3.0.1 → sidereon-3.0.3}/src/ppp_corrections.rs +0 -0
  125. {sidereon-3.0.1 → sidereon-3.0.3}/src/products.rs +0 -0
  126. {sidereon-3.0.1 → sidereon-3.0.3}/src/propagation.rs +0 -0
  127. {sidereon-3.0.1 → sidereon-3.0.3}/src/qc.rs +0 -0
  128. {sidereon-3.0.1 → sidereon-3.0.3}/src/reduced_orbit.rs +0 -0
  129. {sidereon-3.0.1 → sidereon-3.0.3}/src/relative.rs +0 -0
  130. {sidereon-3.0.1 → sidereon-3.0.3}/src/reliability.rs +0 -0
  131. {sidereon-3.0.1 → sidereon-3.0.3}/src/rf.rs +0 -0
  132. {sidereon-3.0.1 → sidereon-3.0.3}/src/rinex.rs +0 -0
  133. {sidereon-3.0.1 → sidereon-3.0.3}/src/rinex_clock.rs +0 -0
  134. {sidereon-3.0.1 → sidereon-3.0.3}/src/rtk.rs +0 -0
  135. {sidereon-3.0.1 → sidereon-3.0.3}/src/sbas_pl.rs +0 -0
  136. {sidereon-3.0.1 → sidereon-3.0.3}/src/sbas_ssr.rs +0 -0
  137. {sidereon-3.0.1 → sidereon-3.0.3}/src/scenario.rs +0 -0
  138. {sidereon-3.0.1 → sidereon-3.0.3}/src/sidereal.rs +0 -0
  139. {sidereon-3.0.1 → sidereon-3.0.3}/src/signal_analysis.rs +0 -0
  140. {sidereon-3.0.1 → sidereon-3.0.3}/src/sky.rs +0 -0
  141. {sidereon-3.0.1 → sidereon-3.0.3}/src/solve_error_detail.rs +0 -0
  142. {sidereon-3.0.1 → sidereon-3.0.3}/src/source_localization.rs +0 -0
  143. {sidereon-3.0.1 → sidereon-3.0.3}/src/space_weather.rs +0 -0
  144. {sidereon-3.0.1 → sidereon-3.0.3}/src/spk.rs +0 -0
  145. {sidereon-3.0.1 → sidereon-3.0.3}/src/spp.rs +0 -0
  146. {sidereon-3.0.1 → sidereon-3.0.3}/src/spp_error_detail.rs +0 -0
  147. {sidereon-3.0.1 → sidereon-3.0.3}/src/staleness.rs +0 -0
  148. {sidereon-3.0.1 → sidereon-3.0.3}/src/static_positioning.rs +0 -0
  149. {sidereon-3.0.1 → sidereon-3.0.3}/src/tca.rs +0 -0
  150. {sidereon-3.0.1 → sidereon-3.0.3}/src/tdm.rs +0 -0
  151. {sidereon-3.0.1 → sidereon-3.0.3}/src/terrain.rs +0 -0
  152. {sidereon-3.0.1 → sidereon-3.0.3}/src/terrain_store.rs +0 -0
  153. {sidereon-3.0.1 → sidereon-3.0.3}/src/tides.rs +0 -0
  154. {sidereon-3.0.1 → sidereon-3.0.3}/src/time_model_error.rs +0 -0
  155. {sidereon-3.0.1 → sidereon-3.0.3}/src/tle_fit_error_detail.rs +0 -0
  156. {sidereon-3.0.1 → sidereon-3.0.3}/src/tropo.rs +0 -0
  157. {sidereon-3.0.1 → sidereon-3.0.3}/src/unix_compress.rs +0 -0
  158. {sidereon-3.0.1 → sidereon-3.0.3}/tests/_helpers.py +0 -0
  159. {sidereon-3.0.1 → sidereon-3.0.3}/tests/_sp3_merge.py +0 -0
  160. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/README.md +0 -0
  161. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/antex/igs20_pasa_scoa_gps.atx +0 -0
  162. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/antex/igs20_wettzell_trim.atx +0 -0
  163. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/batch_fleet.json +0 -0
  164. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/cdm.json +0 -0
  165. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/clk/lossless/rinex_clock304_table_a17.clk +0 -0
  166. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/clk/lossless/rinex_clock304_table_a18.clk +0 -0
  167. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/clk/synthetic_rinex_clock.clk +0 -0
  168. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/conjunction.json +0 -0
  169. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/constellation/gps_ops_sample.json +0 -0
  170. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/constellation/navcen_forecast_cases.html +0 -0
  171. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/constellation/navcen_gps_sample.html +0 -0
  172. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/events_bodies_dop.json +0 -0
  173. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/format_diagnostics_inputs.json +0 -0
  174. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/frames_time.json +0 -0
  175. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/geodesic/geodtest_row.dat +0 -0
  176. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/geoid/egm2008_25_norcal_crop.bin +0 -0
  177. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/gnss_data/igs22376.sp3.Z.b64 +0 -0
  178. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/gnss_data/ncompress-current-b9-counter.Z.b64 +0 -0
  179. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/listings/aiub-iono-prd-20260923.csv +0 -0
  180. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/listings/gfz-ultra-w2430-20260804.html +0 -0
  181. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/nav/BRDC00GOP_R_20210010000_01D_MN.rnx +0 -0
  182. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/nav/ESBC00DNK_R_20201770000_01D_MN.rnx +0 -0
  183. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/nav/KMS300DNK_R_20221591000_01H_MN.rnx +0 -0
  184. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/numerical_propagation.json +0 -0
  185. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/obs/ESBC00DNK_R_20201770000_01D_30S_MO_trim.crx +0 -0
  186. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/obs/ESBC00DNK_R_20201770000_01D_30S_MO_trim.rnx +0 -0
  187. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/obs/algo0010_2015001_v1_trim.crx +0 -0
  188. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/obs/algo0010_2015001_v1_trim.rnx +0 -0
  189. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/omm.json +0 -0
  190. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/pass_finder.json +0 -0
  191. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/rf_link_budget.json +0 -0
  192. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/rtk_wtzr.json +0 -0
  193. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/scenario_base.json +0 -0
  194. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/sgp4_topocentric.json +0 -0
  195. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/sp3/IGS0OPSFIN_20261200945_02H30M_15M_ORB.SP3 +0 -0
  196. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/sp3-merge-input-v1.json +0 -0
  197. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/sp3-merge-report-v3.json +0 -0
  198. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/sp3_bodies.json +0 -0
  199. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/spk/horizons_eros_type21.bsp +0 -0
  200. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/tdm/annex_e_01.kvn +0 -0
  201. {sidereon-3.0.1 → sidereon-3.0.3}/tests/fixtures/tle_roundtrip.json +0 -0
  202. {sidereon-3.0.1 → sidereon-3.0.3}/tests/golden/sp3-terminal-record-v1.json +0 -0
  203. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_012_bindings.py +0 -0
  204. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_013_bindings.py +0 -0
  205. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_014_bindings.py +0 -0
  206. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_015_bindings.py +0 -0
  207. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_016_wave2_bindings.py +0 -0
  208. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_017_domain_exposure.py +0 -0
  209. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_018_domain_exposure.py +0 -0
  210. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_019_track.py +0 -0
  211. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_020_error_metrics.py +0 -0
  212. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_antex.py +0 -0
  213. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_antex_public_equality.py +0 -0
  214. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_antex_public_pcv_sample_fields.py +0 -0
  215. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_atmosphere.py +0 -0
  216. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_attested_open.py +0 -0
  217. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_batch.py +0 -0
  218. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_broadcast_comparison.py +0 -0
  219. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_broadcast_fallback.py +0 -0
  220. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_cdm.py +0 -0
  221. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_cdm_top_level.py +0 -0
  222. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_cdm_value_equality.py +0 -0
  223. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_codec_error_details.py +0 -0
  224. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_conjunction.py +0 -0
  225. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_constellation.py +0 -0
  226. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_constellation_fleet.py +0 -0
  227. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_core_defaults.py +0 -0
  228. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_core_public_api_parity.py +0 -0
  229. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_core_round3_surfaces.py +0 -0
  230. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_covariance.py +0 -0
  231. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_covariance_propagation.py +0 -0
  232. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_coverage.py +0 -0
  233. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_crinex.py +0 -0
  234. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_data.py +0 -0
  235. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_data_publication_resilience.py +0 -0
  236. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_dgnss.py +0 -0
  237. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_distribution.py +0 -0
  238. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_distribution_fallback.py +0 -0
  239. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_dop_at_epoch.py +0 -0
  240. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_dop_convention.py +0 -0
  241. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_doppler.py +0 -0
  242. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_dted_tile_error_details.py +0 -0
  243. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_egm96.py +0 -0
  244. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_elements.py +0 -0
  245. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_events_bodies_dop.py +0 -0
  246. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_exact_cache_atomicity.py +0 -0
  247. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_field_mode_bindings.py +0 -0
  248. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_forces.py +0 -0
  249. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_format_diagnostics.py +0 -0
  250. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_frames_time.py +0 -0
  251. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ftp_transport.py +0 -0
  252. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_fusion_error_details.py +0 -0
  253. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_geoid.py +0 -0
  254. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_geometry.py +0 -0
  255. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ils.py +0 -0
  256. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_import.py +0 -0
  257. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_inertial_mechanization.py +0 -0
  258. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ionex.py +0 -0
  259. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ionex_instant_queries.py +0 -0
  260. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ionex_policies.py +0 -0
  261. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ionex_public_equality.py +0 -0
  262. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ionosphere_nequick.py +0 -0
  263. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_klobuchar_native.py +0 -0
  264. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_lambert_iod.py +0 -0
  265. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_leap_seconds.py +0 -0
  266. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_least_squares.py +0 -0
  267. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_misc_public_equality.py +0 -0
  268. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_moving_baseline.py +0 -0
  269. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_new_core_api.py +0 -0
  270. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_next_issue_due.py +0 -0
  271. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_nmea_finish_output.py +0 -0
  272. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_numerical.py +0 -0
  273. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_obs_policies.py +0 -0
  274. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_observables.py +0 -0
  275. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_observables_broadcast.py +0 -0
  276. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_observables_error_details.py +0 -0
  277. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_observation.py +0 -0
  278. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_observation_qc.py +0 -0
  279. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_observe_batch.py +0 -0
  280. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_oem.py +0 -0
  281. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_oem_full_dto.py +0 -0
  282. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_omm.py +0 -0
  283. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_omm_full_dto.py +0 -0
  284. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_opm.py +0 -0
  285. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_opm_full_dto.py +0 -0
  286. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_parity_gaps.py +0 -0
  287. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_parse_tle_file.py +0 -0
  288. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_passes.py +0 -0
  289. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ppp_corrections.py +0 -0
  290. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_ppp_range_corrections.py +0 -0
  291. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_precise_interpolant_public_values.py +0 -0
  292. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_precise_samples.py +0 -0
  293. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_precise_samples_errors.py +0 -0
  294. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_propagation.py +0 -0
  295. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_qc.py +0 -0
  296. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_reduced_orbit.py +0 -0
  297. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_reduced_orbit_piecewise.py +0 -0
  298. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_residual_stats.py +0 -0
  299. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rf.py +0 -0
  300. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rinex_clock.py +0 -0
  301. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rinex_clock_equality.py +0 -0
  302. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rinex_clock_header_field_details.py +0 -0
  303. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rinex_clock_lossless.py +0 -0
  304. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rinex_nav.py +0 -0
  305. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rinex_obs.py +0 -0
  306. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rtcm.py +0 -0
  307. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rtk.py +0 -0
  308. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_rtk_unresolved_carriers.py +0 -0
  309. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sbas_decoded_lists.py +0 -0
  310. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sbas_unassigned_mask.py +0 -0
  311. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_scenario_external_sources.py +0 -0
  312. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sky.py +0 -0
  313. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_bodies.py +0 -0
  314. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_catalog_exact.py +0 -0
  315. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_clock_reference.py +0 -0
  316. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_interpolation_policy.py +0 -0
  317. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_merge.py +0 -0
  318. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_merge_coverage.py +0 -0
  319. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_merge_per_epoch_provenance.py +0 -0
  320. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_public_metadata.py +0 -0
  321. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_terminal_record.py +0 -0
  322. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_window_continuity.py +0 -0
  323. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_sp3_write_and_records.py +0 -0
  324. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_spk.py +0 -0
  325. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_spp.py +0 -0
  326. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_spp_error_details.py +0 -0
  327. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_spp_glonass.py +0 -0
  328. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_spp_robustness.py +0 -0
  329. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_staleness.py +0 -0
  330. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_tca.py +0 -0
  331. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_tdm_policies.py +0 -0
  332. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_terrain_unknown_elevation.py +0 -0
  333. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_tides.py +0 -0
  334. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_time_model_error_details.py +0 -0
  335. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_time_offset_error_details.py +0 -0
  336. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_tle_fit.py +0 -0
  337. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_tle_roundtrip.py +0 -0
  338. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_tropo.py +0 -0
  339. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_unix_compress.py +0 -0
  340. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_visible_ground_track.py +0 -0
  341. {sidereon-3.0.1 → sidereon-3.0.3}/tests/test_weather_terrain_error_details.py +0 -0
  342. {sidereon-3.0.1 → sidereon-3.0.3}/third_party_licenses/ERFA-BSD-3-Clause.txt +0 -0
  343. {sidereon-3.0.1 → sidereon-3.0.3}/third_party_licenses/IERS-CONVENTIONS-SOFTWARE-LICENSE.txt +0 -0
  344. {sidereon-3.0.1 → sidereon-3.0.3}/third_party_licenses/SciPy-BSD-3-Clause.txt +0 -0
  345. {sidereon-3.0.1/third_party_source/sidereon-core-3.0.1 → sidereon-3.0.3/third_party_source/sidereon-core-3.0.3}/tides/mod.rs +0 -0
  346. {sidereon-3.0.1/third_party_source/sidereon-core-3.0.1 → sidereon-3.0.3/third_party_source/sidereon-core-3.0.3}/tides/ocean.rs +0 -0
  347. {sidereon-3.0.1/third_party_source/sidereon-core-3.0.1 → sidereon-3.0.3/third_party_source/sidereon-core-3.0.3}/tides/pole.rs +0 -0
@@ -125,6 +125,42 @@ jobs:
125
125
  "$RUNNER_TEMP/core-source-identity.log"
126
126
  grep -Eq '^test result: ok\. 1 passed; 0 failed; 0 ignored; 0 measured; [0-9]+ filtered out; finished in .*s$' \
127
127
  "$RUNNER_TEMP/core-source-identity.log"
128
+ - name: Verify candidate-generated fixtures
129
+ env:
130
+ CARGO_TARGET_DIR: ${{ github.workspace }}/target
131
+ run: |
132
+ set -euo pipefail
133
+ scratch="$RUNNER_TEMP/candidate-fixtures"
134
+ rm -rf "$scratch"
135
+ mkdir -p "$scratch"
136
+ cp -R tests/fixtures "$scratch/fixtures"
137
+ cargo run --release --locked --manifest-path scripts/core_goldens/Cargo.toml -- \
138
+ "$GITHUB_WORKSPACE/.core-checkout/crates/sidereon-core/tests/fixtures" \
139
+ "$scratch/fixtures"
140
+ cargo run --release --locked --manifest-path scripts/ppp_esbc_expected/Cargo.toml -- \
141
+ "$scratch/fixtures/ppp_esbc.json" \
142
+ "$GITHUB_WORKSPACE/.core-checkout/crates/sidereon-core/tests/fixtures/sp3"
143
+ python - "$scratch/fixtures" <<'PY'
144
+ import json
145
+ from pathlib import Path
146
+ import sys
147
+
148
+ generated = Path(sys.argv[1])
149
+ committed = Path("tests/fixtures")
150
+ for name in ("core_goldens.json", "ppp_esbc.json"):
151
+ with (generated / name).open() as handle:
152
+ actual = json.load(handle)
153
+ with (committed / name).open() as handle:
154
+ expected = json.load(handle)
155
+ assert actual == expected, f"{name}: candidate generator output differs"
156
+ PY
157
+ - name: Retain generated candidate fixtures
158
+ if: always()
159
+ uses: actions/upload-artifact@v4
160
+ with:
161
+ name: generated-core-fixtures
162
+ path: ${{ runner.temp }}/candidate-fixtures/fixtures/*.json
163
+ if-no-files-found: error
128
164
  - name: ruff check
129
165
  run: uv run --locked --extra test --group dev ruff check .
130
166
  - name: ruff format --check
@@ -153,10 +153,10 @@ jobs:
153
153
  done
154
154
  for source in mod.rs ocean.rs pole.rs; do
155
155
  unzip -p "$wheel" \
156
- "third_party_source/sidereon-core-3.0.1/tides/$source" \
156
+ "third_party_source/sidereon-core-3.0.3/tides/$source" \
157
157
  >"$RUNNER_TEMP/$source"
158
158
  cmp "$RUNNER_TEMP/$source" \
159
- "third_party_source/sidereon-core-3.0.1/tides/$source"
159
+ "third_party_source/sidereon-core-3.0.3/tides/$source"
160
160
  done
161
161
  done
162
162
  notice="$RUNNER_TEMP/sdist.notices"
@@ -173,10 +173,10 @@ jobs:
173
173
  done
174
174
  for source in mod.rs ocean.rs pole.rs; do
175
175
  tar -xOf "${sdists[0]}" --wildcards \
176
- "*/third_party_source/sidereon-core-3.0.1/tides/$source" \
176
+ "*/third_party_source/sidereon-core-3.0.3/tides/$source" \
177
177
  >"$RUNNER_TEMP/sdist-$source"
178
178
  cmp "$RUNNER_TEMP/sdist-$source" \
179
- "third_party_source/sidereon-core-3.0.1/tides/$source"
179
+ "third_party_source/sidereon-core-3.0.3/tides/$source"
180
180
  done
181
181
  - name: Smoke-test installed x86_64 Linux wheel
182
182
  shell: bash
@@ -218,3 +218,39 @@ jobs:
218
218
  uses: pypa/gh-action-pypi-publish@release/v1
219
219
  with:
220
220
  attestations: true
221
+
222
+ public-consumer:
223
+ name: Verify public PyPI consumer
224
+ runs-on: ubuntu-24.04-arm
225
+ timeout-minutes: 15
226
+ needs: publish
227
+ steps:
228
+ - uses: actions/checkout@v4
229
+ - uses: actions/setup-python@v5
230
+ with:
231
+ python-version: '3.12'
232
+ - name: Install exact published wheel and exercise public references
233
+ shell: bash
234
+ run: |
235
+ set -euo pipefail
236
+ version="${GITHUB_REF_NAME#v}"
237
+ scratch="$(mktemp -d)"
238
+ trap 'rm -rf "$scratch"' EXIT
239
+ python -m venv "$scratch/venv"
240
+ installed=false
241
+ for attempt in 1 2 3 4 5 6; do
242
+ if "$scratch/venv/bin/python" -m pip install --only-binary=sidereon "sidereon==$version" pytest; then
243
+ installed=true
244
+ break
245
+ fi
246
+ sleep 10
247
+ done
248
+ test "$installed" = true
249
+ mkdir -p "$scratch/tests/fixtures/bodies"
250
+ cp scripts/smoke-release.py "$scratch/smoke-release.py"
251
+ cp tests/test_body_observe_reference.py "$scratch/tests/"
252
+ cp tests/fixtures/bodies/observe_de.bsp "$scratch/tests/fixtures/bodies/"
253
+ cd "$scratch"
254
+ unset PYTHONPATH
255
+ SIDEREON_EXPECTED_VERSION="$version" "$scratch/venv/bin/python" -I smoke-release.py
256
+ "$scratch/venv/bin/python" -I -m pytest -q tests/test_body_observe_reference.py
@@ -4,6 +4,26 @@ All notable changes to the Sidereon Python interface are documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [3.0.3] - 2026-10-12
8
+
9
+ ### Fixed
10
+
11
+ - Align all public PyO3 class declarations with their runtime inheritance, retaining `enum.Enum` only for the actual Python enum.
12
+ - Preserve RTCM message numbers on order/degree and short-record departure diagnostics.
13
+ - Align selector declarations with their runtime PyO3 classes instead of promising `enum.Enum` behavior they do not provide.
14
+ - Declare fixed-vector getters, including PPP float-state positions, as lists matching
15
+ their existing runtime containers.
16
+ - Declare the existing `TimeScale.TCG` and `TimeScale.TCB` runtime members and its
17
+ runtime PyO3 class inheritance in the public stub.
18
+ - Declare GNSS fix velocity as a list, matching its existing runtime container.
19
+
20
+ ## [3.0.2] - 2026-10-05
21
+
22
+ ### Changed
23
+
24
+ - Use the coordinated 3.0.2 Rust engine release, including NaN-safe Portable ULP comparisons.
25
+ - Retain the existing Python API while keeping package versions and shipped source disclosures aligned across all libraries.
26
+
7
27
  ## [3.0.1] - 2026-10-04
8
28
 
9
29
  ### Added
@@ -611,9 +611,9 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
611
611
 
612
612
  [[package]]
613
613
  name = "sidereon"
614
- version = "3.0.1"
614
+ version = "3.0.3"
615
615
  source = "registry+https://github.com/rust-lang/crates.io-index"
616
- checksum = "b9783598080524b015c13894f68c0df9ccbaa22ad34fd6e59c5aadfdb8b30bec"
616
+ checksum = "fd6972904a6a2aac384ab4a082bf319ea0f1fdbcf7fa8c63221c85a16b07916c"
617
617
  dependencies = [
618
618
  "crc32fast",
619
619
  "flate2",
@@ -622,9 +622,9 @@ dependencies = [
622
622
 
623
623
  [[package]]
624
624
  name = "sidereon-core"
625
- version = "3.0.1"
625
+ version = "3.0.3"
626
626
  source = "registry+https://github.com/rust-lang/crates.io-index"
627
- checksum = "0c3c49cae7e3b74a9de16cb576c831985158176141d713871eb3b4ec93db91e3"
627
+ checksum = "ef89338b6c51ee9b15cc107f04c65f2d8916fd3efaed0d2eec12bfacb5ec1fda"
628
628
  dependencies = [
629
629
  "approx",
630
630
  "cc",
@@ -646,7 +646,7 @@ dependencies = [
646
646
 
647
647
  [[package]]
648
648
  name = "sidereon-py"
649
- version = "3.0.1"
649
+ version = "3.0.3"
650
650
  dependencies = [
651
651
  "nalgebra",
652
652
  "numpy",
@@ -1,6 +1,6 @@
1
1
  [package]
2
2
  name = "sidereon-py"
3
- version = "3.0.1"
3
+ version = "3.0.3"
4
4
  authors = []
5
5
  edition = "2021"
6
6
  description = "Python (PyO3) bindings over the sidereon ergonomic API: SP3 loading and SPP/RTK/PPP positioning solves"
@@ -25,12 +25,12 @@ exact-cache-test-failpoints = ["sidereon-core/exact-cache-test-failpoints"]
25
25
  # The thin ergonomic engine surface this binding marshals to. No modeling logic
26
26
  # lives here: every solve delegates to a `sidereon` entry point, which in turn
27
27
  # delegates to `sidereon-core`.
28
- sidereon = { version = "=3.0.1" }
29
- sidereon-core = { version = "=3.0.1", features = ["mmap"] }
28
+ sidereon = "=3.0.3"
29
+ sidereon-core = { version = "=3.0.3", features = ["mmap"] }
30
30
  # The standalone general-purpose trust-region least-squares solver: a data-driven
31
31
  # `least_squares` whose residual and Jacobian are evaluated entirely in Rust, so
32
32
  # no per-iteration Python callback is paid.
33
- trust-region-least-squares = "0.11.0"
33
+ trust-region-least-squares = "=0.11.0"
34
34
  pyo3 = { version = "0.25", features = ["abi3-py39"] }
35
35
  # Zero-copy ndarray marshalling so a batched propagate/look-angle call crosses
36
36
  # the FFI boundary once (1-D epochs in, 2-D states / 1-D angles out) instead of a
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sidereon
3
- Version: 3.0.1
3
+ Version: 3.0.3
4
4
  Classifier: Programming Language :: Rust
5
5
  Classifier: Programming Language :: Python :: 3
6
6
  Classifier: Topic :: Scientific/Engineering
@@ -330,9 +330,9 @@ endorsed by the IERS Conventions Center. The Rust source describes the origin,
330
330
  the renamed routines, and the differences from the Fortran implementation.
331
331
  The complete non-test tide source distributed in the compiled extension is
332
332
  included under
333
- `third_party_source/sidereon-core-3.0.1/tides/` in wheels and source
334
- distributions. These files match sidereon-core 3.0.1 at commit 592ca2bd293177bcd901286080baa6350522020f.
335
- Source: [sidereon-core tides at the pinned commit](https://github.com/neilberkman/sidereon/tree/592ca2bd293177bcd901286080baa6350522020f/crates/sidereon-core/src/tides).
333
+ `third_party_source/sidereon-core-3.0.3/tides/` in wheels and source
334
+ distributions. These files match sidereon-core 3.0.3 at commit d48b02561c4ad53fbc9d0ec72732aed447631337.
335
+ Source: [sidereon-core tides at the pinned commit](https://github.com/neilberkman/sidereon/tree/d48b02561c4ad53fbc9d0ec72732aed447631337/crates/sidereon-core/src/tides).
336
336
  The authoritative original is available from:
337
337
 
338
338
  <https://iers-conventions.obspm.fr/content/chapter7/software/dehanttideinel/DEHANTTIDEINEL.F>
@@ -4,7 +4,7 @@ build-backend = "maturin"
4
4
 
5
5
  [project]
6
6
  name = "sidereon"
7
- version = "3.0.1"
7
+ version = "3.0.3"
8
8
  description = "Python (PyO3) bindings over the sidereon engine: SP3 loading and SPP/RTK/PPP positioning solves"
9
9
  readme = "README.md"
10
10
  license = { text = "MIT" }
@@ -82,7 +82,7 @@ include = [
82
82
  "third_party_licenses/ERFA-BSD-3-Clause.txt",
83
83
  "third_party_licenses/IERS-CONVENTIONS-SOFTWARE-LICENSE.txt",
84
84
  "third_party_licenses/SciPy-BSD-3-Clause.txt",
85
- "third_party_source/sidereon-core-3.0.1/tides/mod.rs",
86
- "third_party_source/sidereon-core-3.0.1/tides/ocean.rs",
87
- "third_party_source/sidereon-core-3.0.1/tides/pole.rs",
85
+ "third_party_source/sidereon-core-3.0.3/tides/mod.rs",
86
+ "third_party_source/sidereon-core-3.0.3/tides/ocean.rs",
87
+ "third_party_source/sidereon-core-3.0.3/tides/pole.rs",
88
88
  ]