sidereon 3.0.3__tar.gz → 3.0.4__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 (346) hide show
  1. {sidereon-3.0.3 → sidereon-3.0.4}/.github/workflows/release.yml +4 -4
  2. {sidereon-3.0.3 → sidereon-3.0.4}/CHANGELOG.md +8 -0
  3. {sidereon-3.0.3 → sidereon-3.0.4}/Cargo.lock +5 -5
  4. {sidereon-3.0.3 → sidereon-3.0.4}/Cargo.toml +3 -3
  5. {sidereon-3.0.3 → sidereon-3.0.4}/PKG-INFO +1 -1
  6. {sidereon-3.0.3 → sidereon-3.0.4}/THIRD-PARTY-NOTICES.md +3 -3
  7. {sidereon-3.0.3 → sidereon-3.0.4}/pyproject.toml +4 -4
  8. {sidereon-3.0.3 → sidereon-3.0.4}/scripts/check-release.py +3 -3
  9. {sidereon-3.0.3 → sidereon-3.0.4}/scripts/core_source_identity.rs +1 -1
  10. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/core_goldens.json +1 -1
  11. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/ppp_esbc.json +2 -2
  12. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_core_revision.py +25 -25
  13. {sidereon-3.0.3 → sidereon-3.0.4}/uv.lock +1 -1
  14. {sidereon-3.0.3 → sidereon-3.0.4}/.cargo/config.toml.disabled +0 -0
  15. {sidereon-3.0.3 → sidereon-3.0.4}/.gitattributes +0 -0
  16. {sidereon-3.0.3 → sidereon-3.0.4}/.github/workflows/ci.yml +0 -0
  17. {sidereon-3.0.3 → sidereon-3.0.4}/.gitignore +0 -0
  18. {sidereon-3.0.3 → sidereon-3.0.4}/COVERAGE.md +0 -0
  19. {sidereon-3.0.3 → sidereon-3.0.4}/LICENSE +0 -0
  20. {sidereon-3.0.3 → sidereon-3.0.4}/README.md +0 -0
  21. {sidereon-3.0.3 → sidereon-3.0.4}/bench/README.md +0 -0
  22. {sidereon-3.0.3 → sidereon-3.0.4}/bench/bench_fleet.py +0 -0
  23. {sidereon-3.0.3 → sidereon-3.0.4}/docs/antex.md +0 -0
  24. {sidereon-3.0.3 → sidereon-3.0.4}/docs/observations.md +0 -0
  25. {sidereon-3.0.3 → sidereon-3.0.4}/docs/public-gnss-distribution-sources.md +0 -0
  26. {sidereon-3.0.3 → sidereon-3.0.4}/docs/releasing.md +0 -0
  27. {sidereon-3.0.3 → sidereon-3.0.4}/docs/rinex-clock.md +0 -0
  28. {sidereon-3.0.3 → sidereon-3.0.4}/docs/sp3.md +0 -0
  29. {sidereon-3.0.3 → sidereon-3.0.4}/docs/tdm.md +0 -0
  30. {sidereon-3.0.3 → sidereon-3.0.4}/examples/clean_a_phone_track.ipynb +0 -0
  31. {sidereon-3.0.3 → sidereon-3.0.4}/examples/static_occupation_vs_cors.ipynb +0 -0
  32. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/__init__.py +0 -0
  33. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/__init__.pyi +0 -0
  34. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/_compression.py +0 -0
  35. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/_exact_cache.py +0 -0
  36. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/_ingress.py +0 -0
  37. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/data.py +0 -0
  38. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/data.pyi +0 -0
  39. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/distribution.py +0 -0
  40. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/distribution.pyi +0 -0
  41. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/exact_cache.py +0 -0
  42. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/exact_cache.pyi +0 -0
  43. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/exact_sp3.py +0 -0
  44. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/exact_sp3.pyi +0 -0
  45. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/ntrip.py +0 -0
  46. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/ntrip.pyi +0 -0
  47. {sidereon-3.0.3 → sidereon-3.0.4}/python/sidereon/py.typed +0 -0
  48. {sidereon-3.0.3 → sidereon-3.0.4}/rust-toolchain.toml +0 -0
  49. {sidereon-3.0.3 → sidereon-3.0.4}/scripts/coverage/bindmap.py +0 -0
  50. {sidereon-3.0.3 → sidereon-3.0.4}/scripts/coverage/pubapi.py +0 -0
  51. {sidereon-3.0.3 → sidereon-3.0.4}/scripts/coverage/render_coverage.py +0 -0
  52. {sidereon-3.0.3 → sidereon-3.0.4}/scripts/smoke-release.py +0 -0
  53. {sidereon-3.0.3 → sidereon-3.0.4}/src/almanac.rs +0 -0
  54. {sidereon-3.0.3 → sidereon-3.0.4}/src/angles.rs +0 -0
  55. {sidereon-3.0.3 → sidereon-3.0.4}/src/anomaly.rs +0 -0
  56. {sidereon-3.0.3 → sidereon-3.0.4}/src/antex.rs +0 -0
  57. {sidereon-3.0.3 → sidereon-3.0.4}/src/araim.rs +0 -0
  58. {sidereon-3.0.3 → sidereon-3.0.4}/src/atmosphere.rs +0 -0
  59. {sidereon-3.0.3 → sidereon-3.0.4}/src/bias.rs +0 -0
  60. {sidereon-3.0.3 → sidereon-3.0.4}/src/bodies.rs +0 -0
  61. {sidereon-3.0.3 → sidereon-3.0.4}/src/body_observe.rs +0 -0
  62. {sidereon-3.0.3 → sidereon-3.0.4}/src/broadcast_comparison.rs +0 -0
  63. {sidereon-3.0.3 → sidereon-3.0.4}/src/cdm.rs +0 -0
  64. {sidereon-3.0.3 → sidereon-3.0.4}/src/clock_stability.rs +0 -0
  65. {sidereon-3.0.3 → sidereon-3.0.4}/src/conjunction.rs +0 -0
  66. {sidereon-3.0.3 → sidereon-3.0.4}/src/constellation.rs +0 -0
  67. {sidereon-3.0.3 → sidereon-3.0.4}/src/core_error_detail.rs +0 -0
  68. {sidereon-3.0.3 → sidereon-3.0.4}/src/covariance.rs +0 -0
  69. {sidereon-3.0.3 → sidereon-3.0.4}/src/coverage.rs +0 -0
  70. {sidereon-3.0.3 → sidereon-3.0.4}/src/data_catalog.rs +0 -0
  71. {sidereon-3.0.3 → sidereon-3.0.4}/src/defaults.rs +0 -0
  72. {sidereon-3.0.3 → sidereon-3.0.4}/src/dgnss.rs +0 -0
  73. {sidereon-3.0.3 → sidereon-3.0.4}/src/doppler.rs +0 -0
  74. {sidereon-3.0.3 → sidereon-3.0.4}/src/elements.rs +0 -0
  75. {sidereon-3.0.3 → sidereon-3.0.4}/src/emission.rs +0 -0
  76. {sidereon-3.0.3 → sidereon-3.0.4}/src/ephemeris.rs +0 -0
  77. {sidereon-3.0.3 → sidereon-3.0.4}/src/equinoctial.rs +0 -0
  78. {sidereon-3.0.3 → sidereon-3.0.4}/src/error_metrics.rs +0 -0
  79. {sidereon-3.0.3 → sidereon-3.0.4}/src/estimation.rs +0 -0
  80. {sidereon-3.0.3 → sidereon-3.0.4}/src/events.rs +0 -0
  81. {sidereon-3.0.3 → sidereon-3.0.4}/src/exact_cache.rs +0 -0
  82. {sidereon-3.0.3 → sidereon-3.0.4}/src/exact_time.rs +0 -0
  83. {sidereon-3.0.3 → sidereon-3.0.4}/src/fallback.rs +0 -0
  84. {sidereon-3.0.3 → sidereon-3.0.4}/src/forces.rs +0 -0
  85. {sidereon-3.0.3 → sidereon-3.0.4}/src/format_diagnostics.rs +0 -0
  86. {sidereon-3.0.3 → sidereon-3.0.4}/src/frame_catalog.rs +0 -0
  87. {sidereon-3.0.3 → sidereon-3.0.4}/src/frames.rs +0 -0
  88. {sidereon-3.0.3 → sidereon-3.0.4}/src/fusion.rs +0 -0
  89. {sidereon-3.0.3 → sidereon-3.0.4}/src/geodesic.rs +0 -0
  90. {sidereon-3.0.3 → sidereon-3.0.4}/src/geodetic_time_series.rs +0 -0
  91. {sidereon-3.0.3 → sidereon-3.0.4}/src/geofence.rs +0 -0
  92. {sidereon-3.0.3 → sidereon-3.0.4}/src/geoid.rs +0 -0
  93. {sidereon-3.0.3 → sidereon-3.0.4}/src/geometry.rs +0 -0
  94. {sidereon-3.0.3 → sidereon-3.0.4}/src/geometry_quality.rs +0 -0
  95. {sidereon-3.0.3 → sidereon-3.0.4}/src/ils.rs +0 -0
  96. {sidereon-3.0.3 → sidereon-3.0.4}/src/iod.rs +0 -0
  97. {sidereon-3.0.3 → sidereon-3.0.4}/src/ionex.rs +0 -0
  98. {sidereon-3.0.3 → sidereon-3.0.4}/src/lambert.rs +0 -0
  99. {sidereon-3.0.3 → sidereon-3.0.4}/src/leap.rs +0 -0
  100. {sidereon-3.0.3 → sidereon-3.0.4}/src/least_squares.rs +0 -0
  101. {sidereon-3.0.3 → sidereon-3.0.4}/src/lib.rs +0 -0
  102. {sidereon-3.0.3 → sidereon-3.0.4}/src/lnav.rs +0 -0
  103. {sidereon-3.0.3 → sidereon-3.0.4}/src/marshal.rs +0 -0
  104. {sidereon-3.0.3 → sidereon-3.0.4}/src/nmea.rs +0 -0
  105. {sidereon-3.0.3 → sidereon-3.0.4}/src/normality.rs +0 -0
  106. {sidereon-3.0.3 → sidereon-3.0.4}/src/ntrip.rs +0 -0
  107. {sidereon-3.0.3 → sidereon-3.0.4}/src/observables.rs +0 -0
  108. {sidereon-3.0.3 → sidereon-3.0.4}/src/observation.rs +0 -0
  109. {sidereon-3.0.3 → sidereon-3.0.4}/src/oem.rs +0 -0
  110. {sidereon-3.0.3 → sidereon-3.0.4}/src/omm.rs +0 -0
  111. {sidereon-3.0.3 → sidereon-3.0.4}/src/opm.rs +0 -0
  112. {sidereon-3.0.3 → sidereon-3.0.4}/src/orbit_determination.rs +0 -0
  113. {sidereon-3.0.3 → sidereon-3.0.4}/src/ppp.rs +0 -0
  114. {sidereon-3.0.3 → sidereon-3.0.4}/src/ppp_corrections.rs +0 -0
  115. {sidereon-3.0.3 → sidereon-3.0.4}/src/products.rs +0 -0
  116. {sidereon-3.0.3 → sidereon-3.0.4}/src/propagation.rs +0 -0
  117. {sidereon-3.0.3 → sidereon-3.0.4}/src/qc.rs +0 -0
  118. {sidereon-3.0.3 → sidereon-3.0.4}/src/reduced_orbit.rs +0 -0
  119. {sidereon-3.0.3 → sidereon-3.0.4}/src/relative.rs +0 -0
  120. {sidereon-3.0.3 → sidereon-3.0.4}/src/reliability.rs +0 -0
  121. {sidereon-3.0.3 → sidereon-3.0.4}/src/rf.rs +0 -0
  122. {sidereon-3.0.3 → sidereon-3.0.4}/src/rinex.rs +0 -0
  123. {sidereon-3.0.3 → sidereon-3.0.4}/src/rinex_clock.rs +0 -0
  124. {sidereon-3.0.3 → sidereon-3.0.4}/src/rtcm.rs +0 -0
  125. {sidereon-3.0.3 → sidereon-3.0.4}/src/rtk.rs +0 -0
  126. {sidereon-3.0.3 → sidereon-3.0.4}/src/sbas_pl.rs +0 -0
  127. {sidereon-3.0.3 → sidereon-3.0.4}/src/sbas_ssr.rs +0 -0
  128. {sidereon-3.0.3 → sidereon-3.0.4}/src/scenario.rs +0 -0
  129. {sidereon-3.0.3 → sidereon-3.0.4}/src/sidereal.rs +0 -0
  130. {sidereon-3.0.3 → sidereon-3.0.4}/src/signal_analysis.rs +0 -0
  131. {sidereon-3.0.3 → sidereon-3.0.4}/src/sky.rs +0 -0
  132. {sidereon-3.0.3 → sidereon-3.0.4}/src/solve_error_detail.rs +0 -0
  133. {sidereon-3.0.3 → sidereon-3.0.4}/src/source_localization.rs +0 -0
  134. {sidereon-3.0.3 → sidereon-3.0.4}/src/space_weather.rs +0 -0
  135. {sidereon-3.0.3 → sidereon-3.0.4}/src/spk.rs +0 -0
  136. {sidereon-3.0.3 → sidereon-3.0.4}/src/spp.rs +0 -0
  137. {sidereon-3.0.3 → sidereon-3.0.4}/src/spp_error_detail.rs +0 -0
  138. {sidereon-3.0.3 → sidereon-3.0.4}/src/staleness.rs +0 -0
  139. {sidereon-3.0.3 → sidereon-3.0.4}/src/static_positioning.rs +0 -0
  140. {sidereon-3.0.3 → sidereon-3.0.4}/src/tca.rs +0 -0
  141. {sidereon-3.0.3 → sidereon-3.0.4}/src/tdm.rs +0 -0
  142. {sidereon-3.0.3 → sidereon-3.0.4}/src/terrain.rs +0 -0
  143. {sidereon-3.0.3 → sidereon-3.0.4}/src/terrain_store.rs +0 -0
  144. {sidereon-3.0.3 → sidereon-3.0.4}/src/tides.rs +0 -0
  145. {sidereon-3.0.3 → sidereon-3.0.4}/src/time_model_error.rs +0 -0
  146. {sidereon-3.0.3 → sidereon-3.0.4}/src/tle_fit_error_detail.rs +0 -0
  147. {sidereon-3.0.3 → sidereon-3.0.4}/src/tropo.rs +0 -0
  148. {sidereon-3.0.3 → sidereon-3.0.4}/src/unix_compress.rs +0 -0
  149. {sidereon-3.0.3 → sidereon-3.0.4}/tests/_helpers.py +0 -0
  150. {sidereon-3.0.3 → sidereon-3.0.4}/tests/_sp3_merge.py +0 -0
  151. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/README.md +0 -0
  152. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/antex/igs20_pasa_scoa_gps.atx +0 -0
  153. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/antex/igs20_wettzell_trim.atx +0 -0
  154. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/batch_fleet.json +0 -0
  155. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/bodies/observe_de.bsp +0 -0
  156. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/cdm.json +0 -0
  157. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/clk/lossless/rinex_clock304_table_a17.clk +0 -0
  158. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/clk/lossless/rinex_clock304_table_a18.clk +0 -0
  159. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/clk/synthetic_rinex_clock.clk +0 -0
  160. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/conjunction.json +0 -0
  161. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/constellation/gps_ops_sample.json +0 -0
  162. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/constellation/navcen_forecast_cases.html +0 -0
  163. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/constellation/navcen_gps_sample.html +0 -0
  164. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/events_bodies_dop.json +0 -0
  165. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/format_diagnostics_inputs.json +0 -0
  166. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/frames_time.json +0 -0
  167. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/geodesic/geodtest_row.dat +0 -0
  168. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/geoid/egm2008_25_norcal_crop.bin +0 -0
  169. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/gnss_data/igs22376.sp3.Z.b64 +0 -0
  170. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/gnss_data/ncompress-current-b9-counter.Z.b64 +0 -0
  171. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/listings/aiub-iono-prd-20260923.csv +0 -0
  172. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/listings/gfz-ultra-w2430-20260804.html +0 -0
  173. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/nav/BRDC00GOP_R_20210010000_01D_MN.rnx +0 -0
  174. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/nav/ESBC00DNK_R_20201770000_01D_MN.rnx +0 -0
  175. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/nav/KMS300DNK_R_20221591000_01H_MN.rnx +0 -0
  176. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/numerical_propagation.json +0 -0
  177. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/obs/ESBC00DNK_R_20201770000_01D_30S_MO_trim.crx +0 -0
  178. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/obs/ESBC00DNK_R_20201770000_01D_30S_MO_trim.rnx +0 -0
  179. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/obs/algo0010_2015001_v1_trim.crx +0 -0
  180. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/obs/algo0010_2015001_v1_trim.rnx +0 -0
  181. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/omm.json +0 -0
  182. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/pass_finder.json +0 -0
  183. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/rf_link_budget.json +0 -0
  184. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/rtk_wtzr.json +0 -0
  185. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/scenario_base.json +0 -0
  186. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/sgp4_topocentric.json +0 -0
  187. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/sp3/IGS0OPSFIN_20261200945_02H30M_15M_ORB.SP3 +0 -0
  188. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/sp3-merge-input-v1.json +0 -0
  189. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/sp3-merge-report-v3.json +0 -0
  190. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/sp3_bodies.json +0 -0
  191. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/spk/horizons_eros_type21.bsp +0 -0
  192. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/tdm/annex_e_01.kvn +0 -0
  193. {sidereon-3.0.3 → sidereon-3.0.4}/tests/fixtures/tle_roundtrip.json +0 -0
  194. {sidereon-3.0.3 → sidereon-3.0.4}/tests/golden/sp3-terminal-record-v1.json +0 -0
  195. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_012_bindings.py +0 -0
  196. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_013_bindings.py +0 -0
  197. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_014_bindings.py +0 -0
  198. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_015_bindings.py +0 -0
  199. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_016_wave2_bindings.py +0 -0
  200. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_017_domain_exposure.py +0 -0
  201. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_018_domain_exposure.py +0 -0
  202. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_019_track.py +0 -0
  203. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_020_error_metrics.py +0 -0
  204. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_antex.py +0 -0
  205. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_antex_public_equality.py +0 -0
  206. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_antex_public_pcv_sample_fields.py +0 -0
  207. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_atmosphere.py +0 -0
  208. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_attested_open.py +0 -0
  209. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_batch.py +0 -0
  210. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_body_observe_reference.py +0 -0
  211. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_broadcast_comparison.py +0 -0
  212. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_broadcast_fallback.py +0 -0
  213. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_cdm.py +0 -0
  214. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_cdm_top_level.py +0 -0
  215. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_cdm_value_equality.py +0 -0
  216. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_codec_error_details.py +0 -0
  217. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_conjunction.py +0 -0
  218. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_constellation.py +0 -0
  219. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_constellation_fleet.py +0 -0
  220. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_core_defaults.py +0 -0
  221. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_core_public_api_parity.py +0 -0
  222. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_core_round3_surfaces.py +0 -0
  223. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_covariance.py +0 -0
  224. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_covariance_propagation.py +0 -0
  225. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_coverage.py +0 -0
  226. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_crinex.py +0 -0
  227. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_data.py +0 -0
  228. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_data_publication_resilience.py +0 -0
  229. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_dgnss.py +0 -0
  230. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_distribution.py +0 -0
  231. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_distribution_fallback.py +0 -0
  232. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_dop_at_epoch.py +0 -0
  233. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_dop_convention.py +0 -0
  234. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_doppler.py +0 -0
  235. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_dted_tile_error_details.py +0 -0
  236. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_egm96.py +0 -0
  237. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_elements.py +0 -0
  238. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_events_bodies_dop.py +0 -0
  239. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_exact_cache_atomicity.py +0 -0
  240. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_field_mode_bindings.py +0 -0
  241. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_forces.py +0 -0
  242. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_format_diagnostics.py +0 -0
  243. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_frames_time.py +0 -0
  244. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ftp_transport.py +0 -0
  245. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_fusion_error_details.py +0 -0
  246. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_geoid.py +0 -0
  247. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_geometry.py +0 -0
  248. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ils.py +0 -0
  249. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_import.py +0 -0
  250. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_inertial_mechanization.py +0 -0
  251. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ionex.py +0 -0
  252. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ionex_instant_queries.py +0 -0
  253. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ionex_policies.py +0 -0
  254. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ionex_public_equality.py +0 -0
  255. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ionosphere_nequick.py +0 -0
  256. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_klobuchar_native.py +0 -0
  257. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_lambert_iod.py +0 -0
  258. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_leap_seconds.py +0 -0
  259. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_least_squares.py +0 -0
  260. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_lnav.py +0 -0
  261. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_misc_public_equality.py +0 -0
  262. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_moving_baseline.py +0 -0
  263. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_new_core_api.py +0 -0
  264. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_next_issue_due.py +0 -0
  265. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_nmea_finish_output.py +0 -0
  266. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ntrip.py +0 -0
  267. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_numerical.py +0 -0
  268. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_obs_policies.py +0 -0
  269. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_observables.py +0 -0
  270. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_observables_broadcast.py +0 -0
  271. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_observables_error_details.py +0 -0
  272. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_observation.py +0 -0
  273. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_observation_qc.py +0 -0
  274. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_observe_batch.py +0 -0
  275. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_oem.py +0 -0
  276. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_oem_full_dto.py +0 -0
  277. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_omm.py +0 -0
  278. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_omm_full_dto.py +0 -0
  279. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_opm.py +0 -0
  280. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_opm_full_dto.py +0 -0
  281. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_parity_gaps.py +0 -0
  282. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_parse_tle_file.py +0 -0
  283. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_passes.py +0 -0
  284. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ppp.py +0 -0
  285. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ppp_corrections.py +0 -0
  286. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_ppp_range_corrections.py +0 -0
  287. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_precise_interpolant_public_values.py +0 -0
  288. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_precise_samples.py +0 -0
  289. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_precise_samples_errors.py +0 -0
  290. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_propagation.py +0 -0
  291. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_qc.py +0 -0
  292. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_reduced_orbit.py +0 -0
  293. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_reduced_orbit_piecewise.py +0 -0
  294. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_release_guard.py +0 -0
  295. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_residual_stats.py +0 -0
  296. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rf.py +0 -0
  297. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rinex_clock.py +0 -0
  298. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rinex_clock_equality.py +0 -0
  299. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rinex_clock_header_field_details.py +0 -0
  300. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rinex_clock_lossless.py +0 -0
  301. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rinex_nav.py +0 -0
  302. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rinex_obs.py +0 -0
  303. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rtcm.py +0 -0
  304. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rtcm_departure_message_number_contract.py +0 -0
  305. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rtk.py +0 -0
  306. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_rtk_unresolved_carriers.py +0 -0
  307. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sbas_decoded_lists.py +0 -0
  308. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sbas_unassigned_mask.py +0 -0
  309. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_scenario_external_sources.py +0 -0
  310. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sky.py +0 -0
  311. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_bodies.py +0 -0
  312. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_catalog_exact.py +0 -0
  313. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_clock_reference.py +0 -0
  314. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_interpolation_policy.py +0 -0
  315. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_merge.py +0 -0
  316. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_merge_coverage.py +0 -0
  317. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_merge_per_epoch_provenance.py +0 -0
  318. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_public_metadata.py +0 -0
  319. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_terminal_record.py +0 -0
  320. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_window_continuity.py +0 -0
  321. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_sp3_write_and_records.py +0 -0
  322. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_spk.py +0 -0
  323. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_spp.py +0 -0
  324. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_spp_error_details.py +0 -0
  325. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_spp_glonass.py +0 -0
  326. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_spp_robustness.py +0 -0
  327. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_staleness.py +0 -0
  328. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_stub_accuracy.py +0 -0
  329. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_tca.py +0 -0
  330. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_tdm_policies.py +0 -0
  331. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_terrain_unknown_elevation.py +0 -0
  332. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_tides.py +0 -0
  333. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_time_model_error_details.py +0 -0
  334. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_time_offset_error_details.py +0 -0
  335. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_tle_fit.py +0 -0
  336. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_tle_roundtrip.py +0 -0
  337. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_tropo.py +0 -0
  338. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_unix_compress.py +0 -0
  339. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_visible_ground_track.py +0 -0
  340. {sidereon-3.0.3 → sidereon-3.0.4}/tests/test_weather_terrain_error_details.py +0 -0
  341. {sidereon-3.0.3 → sidereon-3.0.4}/third_party_licenses/ERFA-BSD-3-Clause.txt +0 -0
  342. {sidereon-3.0.3 → sidereon-3.0.4}/third_party_licenses/IERS-CONVENTIONS-SOFTWARE-LICENSE.txt +0 -0
  343. {sidereon-3.0.3 → sidereon-3.0.4}/third_party_licenses/SciPy-BSD-3-Clause.txt +0 -0
  344. {sidereon-3.0.3/third_party_source/sidereon-core-3.0.3 → sidereon-3.0.4/third_party_source/sidereon-core-3.0.4}/tides/mod.rs +0 -0
  345. {sidereon-3.0.3/third_party_source/sidereon-core-3.0.3 → sidereon-3.0.4/third_party_source/sidereon-core-3.0.4}/tides/ocean.rs +0 -0
  346. {sidereon-3.0.3/third_party_source/sidereon-core-3.0.3 → sidereon-3.0.4/third_party_source/sidereon-core-3.0.4}/tides/pole.rs +0 -0
@@ -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.3/tides/$source" \
156
+ "third_party_source/sidereon-core-3.0.4/tides/$source" \
157
157
  >"$RUNNER_TEMP/$source"
158
158
  cmp "$RUNNER_TEMP/$source" \
159
- "third_party_source/sidereon-core-3.0.3/tides/$source"
159
+ "third_party_source/sidereon-core-3.0.4/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.3/tides/$source" \
176
+ "*/third_party_source/sidereon-core-3.0.4/tides/$source" \
177
177
  >"$RUNNER_TEMP/sdist-$source"
178
178
  cmp "$RUNNER_TEMP/sdist-$source" \
179
- "third_party_source/sidereon-core-3.0.3/tides/$source"
179
+ "third_party_source/sidereon-core-3.0.4/tides/$source"
180
180
  done
181
181
  - name: Smoke-test installed x86_64 Linux wheel
182
182
  shell: bash
@@ -4,6 +4,14 @@ All notable changes to the Sidereon Python interface are documented here.
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [3.0.4] - 2026-10-18
8
+
9
+ ### Fixed
10
+
11
+ - Reject RINEX 2 observation and cycle-slip epochs before an observation-type
12
+ declaration takes effect, including empty epochs written with version 3 record
13
+ layout.
14
+
7
15
  ## [3.0.3] - 2026-10-12
8
16
 
9
17
  ### Fixed
@@ -611,9 +611,9 @@ checksum = "f8fadd59c855ef2080decdef8ff161eb6661b86933c9d82e5ba29dc602a55aba"
611
611
 
612
612
  [[package]]
613
613
  name = "sidereon"
614
- version = "3.0.3"
614
+ version = "3.0.4"
615
615
  source = "registry+https://github.com/rust-lang/crates.io-index"
616
- checksum = "fd6972904a6a2aac384ab4a082bf319ea0f1fdbcf7fa8c63221c85a16b07916c"
616
+ checksum = "c042d74f42d0e2a9f8b2645109fd06f407e42ecab964fb91c492b18a2c034096"
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.3"
625
+ version = "3.0.4"
626
626
  source = "registry+https://github.com/rust-lang/crates.io-index"
627
- checksum = "ef89338b6c51ee9b15cc107f04c65f2d8916fd3efaed0d2eec12bfacb5ec1fda"
627
+ checksum = "3634af272103625414a0e63bacbf2b76e181c33f8652690823acdfa0e25c938e"
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.3"
649
+ version = "3.0.4"
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.3"
3
+ version = "3.0.4"
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,8 +25,8 @@ 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 = "=3.0.3"
29
- sidereon-core = { version = "=3.0.3", features = ["mmap"] }
28
+ sidereon = "=3.0.4"
29
+ sidereon-core = { version = "=3.0.4", 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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: sidereon
3
- Version: 3.0.3
3
+ Version: 3.0.4
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.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).
333
+ `third_party_source/sidereon-core-3.0.4/tides/` in wheels and source
334
+ distributions. These files match sidereon-core 3.0.4 at commit 5cfcdf929b57a5998e304df786735b171ba8afaf.
335
+ Source: [sidereon-core tides at the pinned commit](https://github.com/neilberkman/sidereon/tree/5cfcdf929b57a5998e304df786735b171ba8afaf/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.3"
7
+ version = "3.0.4"
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.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",
85
+ "third_party_source/sidereon-core-3.0.4/tides/mod.rs",
86
+ "third_party_source/sidereon-core-3.0.4/tides/ocean.rs",
87
+ "third_party_source/sidereon-core-3.0.4/tides/pole.rs",
88
88
  ]
@@ -13,7 +13,7 @@ import tomllib
13
13
  ROOT = Path(__file__).resolve().parents[1]
14
14
  CORE_GIT_URL = "https://github.com/neilberkman/sidereon"
15
15
  FULL_GIT_REVISION = re.compile(r"^[0-9a-f]{40}$")
16
- CORE_SOURCE_REVISION = "d48b02561c4ad53fbc9d0ec72732aed447631337"
16
+ CORE_SOURCE_REVISION = "5cfcdf929b57a5998e304df786735b171ba8afaf"
17
17
 
18
18
 
19
19
  def registry_version(name, value, package_version):
@@ -307,7 +307,7 @@ def main() -> None:
307
307
  "ocean.rs": "25946677944425671a92717860ac2d70f255de5403eeb1fbf98b361716821d5c",
308
308
  "pole.rs": "b4cc4c16bdd8ce1d8f04073602ab47dfb85a002b946ab192e8d4d2d600f0a1f8",
309
309
  }
310
- tide_root = ROOT / "third_party_source" / "sidereon-core-3.0.3" / "tides"
310
+ tide_root = ROOT / "third_party_source" / "sidereon-core-3.0.4" / "tides"
311
311
  for filename, expected_digest in tide_sources.items():
312
312
  source = tide_root / filename
313
313
  if not source.is_file():
@@ -316,7 +316,7 @@ def main() -> None:
316
316
  if digest != expected_digest:
317
317
  raise SystemExit(
318
318
  f"IERS-derived source disclosure {source} has digest {digest}, "
319
- f"expected {expected_digest} from sidereon-core 3.0.3 at "
319
+ f"expected {expected_digest} from sidereon-core 3.0.4 at "
320
320
  f"{CORE_SOURCE_REVISION}"
321
321
  )
322
322
 
@@ -8,7 +8,7 @@ use std::path::{Path, PathBuf};
8
8
 
9
9
  const REGISTRY_SOURCE: &str = "registry+https://github.com/rust-lang/crates.io-index";
10
10
  const GIT_SOURCE_PREFIX: &str = "git+https://github.com/neilberkman/sidereon?rev=";
11
- const RELEASE_VERSION: &str = "3.0.3";
11
+ const RELEASE_VERSION: &str = "3.0.4";
12
12
 
13
13
  #[derive(Debug)]
14
14
  struct LockedPackage {
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "source": "scripts/core_goldens",
3
- "core_revision": "d48b02561c4ad53fbc9d0ec72732aed447631337",
3
+ "core_revision": "5cfcdf929b57a5998e304df786735b171ba8afaf",
4
4
  "spp_trace_default": {
5
5
  "position_m": [
6
6
  "0x41511b0a63f49487",
@@ -16520,5 +16520,5 @@
16520
16520
  ]
16521
16521
  }
16522
16522
  },
16523
- "core_revision": "d48b02561c4ad53fbc9d0ec72732aed447631337"
16524
- }
16523
+ "core_revision": "5cfcdf929b57a5998e304df786735b171ba8afaf"
16524
+ }
@@ -20,7 +20,7 @@ from _helpers import FIXTURES
20
20
  _ROOT = Path(__file__).resolve().parents[1]
21
21
  _FIXTURES = Path(FIXTURES)
22
22
  _SCRIPTS = _ROOT / "scripts"
23
- _RELEASE_VERSION = "3.0.3"
23
+ _RELEASE_VERSION = "3.0.4"
24
24
  _REGISTRY_SOURCE = "registry+https://github.com/rust-lang/crates.io-index"
25
25
  _GIT_URL = "https://github.com/neilberkman/sidereon"
26
26
  _DEPENDENCIES = ("sidereon", "sidereon-core")
@@ -59,12 +59,12 @@ def _manifest_dependencies(path):
59
59
  def test_manifest_dependencies_accept_scalar_and_inline_versions(tmp_path):
60
60
  manifest = tmp_path / "Cargo.toml"
61
61
  manifest.write_text(
62
- '[dependencies]\nsidereon = "=3.0.3"\n'
63
- 'sidereon-core = { version = "=3.0.3", features = ["mmap"] }\n'
62
+ '[dependencies]\nsidereon = "=3.0.4"\n'
63
+ 'sidereon-core = { version = "=3.0.4", features = ["mmap"] }\n'
64
64
  )
65
65
  assert _manifest_dependencies(manifest) == {
66
- "sidereon": {"version": "=3.0.3"},
67
- "sidereon-core": {"version": "=3.0.3"},
66
+ "sidereon": {"version": "=3.0.4"},
67
+ "sidereon-core": {"version": "=3.0.4"},
68
68
  }
69
69
 
70
70
 
@@ -248,15 +248,15 @@ def _write_candidate(tmp_path, revision):
248
248
  lock = tmp_path / "Cargo.lock"
249
249
  manifest.write_text(
250
250
  "[dependencies]\n"
251
- f'sidereon = {{ version = "=3.0.3", git = "{_GIT_URL}", rev = "{revision}" }}\n'
252
- f'sidereon-core = {{ version = "=3.0.3", git = "{_GIT_URL}", '
251
+ f'sidereon = {{ version = "=3.0.4", git = "{_GIT_URL}", rev = "{revision}" }}\n'
252
+ f'sidereon-core = {{ version = "=3.0.4", git = "{_GIT_URL}", '
253
253
  f'rev = "{revision}" }}\n'
254
254
  )
255
255
  source = f"git+{_GIT_URL}?rev={revision}#{revision}"
256
256
  lock.write_text(
257
- '[[package]]\nname = "sidereon"\nversion = "3.0.3"\n'
257
+ '[[package]]\nname = "sidereon"\nversion = "3.0.4"\n'
258
258
  f'source = "{source}"\n\n'
259
- '[[package]]\nname = "sidereon-core"\nversion = "3.0.3"\n'
259
+ '[[package]]\nname = "sidereon-core"\nversion = "3.0.4"\n'
260
260
  f'source = "{source}"\n'
261
261
  )
262
262
  return manifest, lock
@@ -321,13 +321,13 @@ def test_registry_vcs_commit_is_bound_to_both_locked_checksums(tmp_path):
321
321
  manifest = tmp_path / "Cargo.toml"
322
322
  lock = tmp_path / "Cargo.lock"
323
323
  manifest.write_text(
324
- '[dependencies]\nsidereon = { version = "=3.0.3" }\n'
325
- 'sidereon-core = { version = "=3.0.3" }\n'
324
+ '[dependencies]\nsidereon = { version = "=3.0.4" }\n'
325
+ 'sidereon-core = { version = "=3.0.4" }\n'
326
326
  )
327
327
  packages = []
328
328
  for name in _DEPENDENCIES:
329
329
  packages.append(
330
- f'[[package]]\nname = "{name}"\nversion = "3.0.3"\n'
330
+ f'[[package]]\nname = "{name}"\nversion = "3.0.4"\n'
331
331
  f'source = "{_REGISTRY_SOURCE}"\nchecksum = "{checksums[name]}"\n'
332
332
  )
333
333
  lock.write_text("\n".join(packages))
@@ -352,13 +352,13 @@ def test_registry_lock_rejects_wrong_source_version_and_missing_checksum(tmp_pat
352
352
  }
353
353
  manifest = tmp_path / "Cargo.toml"
354
354
  manifest.write_text(
355
- '[dependencies]\nsidereon = { version = "=3.0.3" }\n'
356
- 'sidereon-core = { version = "=3.0.3" }\n'
355
+ '[dependencies]\nsidereon = { version = "=3.0.4" }\n'
356
+ 'sidereon-core = { version = "=3.0.4" }\n'
357
357
  )
358
358
  lock = tmp_path / "Cargo.lock"
359
359
  lock.write_text(
360
360
  "\n".join(
361
- f'[[package]]\nname = "{name}"\nversion = "3.0.3"\n'
361
+ f'[[package]]\nname = "{name}"\nversion = "3.0.4"\n'
362
362
  f'source = "{_REGISTRY_SOURCE}"\nchecksum = "{checksums[name]}"\n'
363
363
  for name in _DEPENDENCIES
364
364
  )
@@ -369,7 +369,7 @@ def test_registry_lock_rejects_wrong_source_version_and_missing_checksum(tmp_pat
369
369
  valid_lock.replace(_REGISTRY_SOURCE, "registry+https://example.invalid"),
370
370
  "approved",
371
371
  ),
372
- (valid_lock.replace('version = "3.0.3"', 'version = "3.0.4"', 1), "resolve"),
372
+ (valid_lock.replace('version = "3.0.4"', 'version = "3.0.5"', 1), "resolve"),
373
373
  (
374
374
  re.sub(r'^checksum = "[0-9a-f]{64}"\n', "", valid_lock, flags=re.M),
375
375
  "checksum",
@@ -389,13 +389,13 @@ def test_registry_vcs_metadata_must_name_a_full_commit(tmp_path):
389
389
  }
390
390
  manifest = tmp_path / "Cargo.toml"
391
391
  manifest.write_text(
392
- '[dependencies]\nsidereon = { version = "=3.0.3" }\n'
393
- 'sidereon-core = { version = "=3.0.3" }\n'
392
+ '[dependencies]\nsidereon = { version = "=3.0.4" }\n'
393
+ 'sidereon-core = { version = "=3.0.4" }\n'
394
394
  )
395
395
  lock = tmp_path / "Cargo.lock"
396
396
  lock.write_text(
397
397
  "\n".join(
398
- f'[[package]]\nname = "{name}"\nversion = "3.0.3"\n'
398
+ f'[[package]]\nname = "{name}"\nversion = "3.0.4"\n'
399
399
  f'source = "{_REGISTRY_SOURCE}"\nchecksum = "{checksums[name]}"\n'
400
400
  for name in _DEPENDENCIES
401
401
  )
@@ -414,13 +414,13 @@ def test_registry_dirty_vcs_metadata_is_rejected(tmp_path):
414
414
  }
415
415
  manifest = tmp_path / "Cargo.toml"
416
416
  manifest.write_text(
417
- '[dependencies]\nsidereon = { version = "=3.0.3" }\n'
418
- 'sidereon-core = { version = "=3.0.3" }\n'
417
+ '[dependencies]\nsidereon = { version = "=3.0.4" }\n'
418
+ 'sidereon-core = { version = "=3.0.4" }\n'
419
419
  )
420
420
  lock = tmp_path / "Cargo.lock"
421
421
  lock.write_text(
422
422
  "\n".join(
423
- f'[[package]]\nname = "{name}"\nversion = "3.0.3"\n'
423
+ f'[[package]]\nname = "{name}"\nversion = "3.0.4"\n'
424
424
  f'source = "{_REGISTRY_SOURCE}"\nchecksum = "{checksums[name]}"\n'
425
425
  for name in _DEPENDENCIES
426
426
  )
@@ -450,13 +450,13 @@ def test_registry_packages_from_different_commits_fail(tmp_path):
450
450
  }
451
451
  manifest = tmp_path / "Cargo.toml"
452
452
  manifest.write_text(
453
- '[dependencies]\nsidereon = { version = "=3.0.3" }\n'
454
- 'sidereon-core = { version = "=3.0.3" }\n'
453
+ '[dependencies]\nsidereon = { version = "=3.0.4" }\n'
454
+ 'sidereon-core = { version = "=3.0.4" }\n'
455
455
  )
456
456
  lock = tmp_path / "Cargo.lock"
457
457
  lock.write_text(
458
458
  "\n".join(
459
- f'[[package]]\nname = "{name}"\nversion = "3.0.3"\n'
459
+ f'[[package]]\nname = "{name}"\nversion = "3.0.4"\n'
460
460
  f'source = "{_REGISTRY_SOURCE}"\nchecksum = "{checksums[name]}"\n'
461
461
  for name in _DEPENDENCIES
462
462
  )
@@ -847,7 +847,7 @@ wheels = [
847
847
 
848
848
  [[package]]
849
849
  name = "sidereon"
850
- version = "3.0.3"
850
+ version = "3.0.4"
851
851
  source = { editable = "." }
852
852
  dependencies = [
853
853
  { name = "httpx" },
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes