satkit 0.24.2__tar.gz → 0.24.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.
- {satkit-0.24.2 → satkit-0.24.3}/Cargo.lock +32 -32
- {satkit-0.24.2 → satkit-0.24.3}/Cargo.toml +1 -1
- {satkit-0.24.2 → satkit-0.24.3}/PKG-INFO +1 -1
- {satkit-0.24.2 → satkit-0.24.3}/pyproject.toml +1 -1
- {satkit-0.24.2 → satkit-0.24.3}/python/Cargo.toml +1 -1
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/__init__.pyi +1 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/_types.py +2 -1
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/satkit.pyi +79 -17
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit.egg-info/PKG-INFO +1 -1
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit.egg-info/SOURCES.txt +1 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/lib.rs +1 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyomm.rs +17 -7
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pytle.rs +123 -25
- satkit-0.24.3/src/omm/csv.rs +306 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/omm/error.rs +8 -2
- {satkit-0.24.2 → satkit-0.24.3}/src/omm/mod.rs +14 -5
- {satkit-0.24.2 → satkit-0.24.3}/src/tle/mod.rs +26 -2
- {satkit-0.24.2 → satkit-0.24.3}/LICENSE-APACHE +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/LICENSE-MIT +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/MANIFEST.in +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/README.md +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/THIRDPARTY-DATA.md +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/benches/hotpaths.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/build.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/embedded/EGM2008.gfc.gz +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/embedded/EGM96.gfc.gz +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/embedded/JGM2.gfc.gz +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/embedded/JGM3.gfc.gz +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/embedded/SOURCES.json +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/embedded/tab5.2a.txt.gz +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/embedded/tab5.2b.txt.gz +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/embedded/tab5.2d.txt.gz +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/data/manifest.json +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/chrono_interop.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/ephemeris.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/frames.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/kepler_lambert.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/propagate_leo.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/quickstart.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/sgp4_tle.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/sun_moon.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/examples/time_scales.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/build.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/__init__.py +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/density.pyi +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/frametransform.pyi +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/jplephem.pyi +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/moon.pyi +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/planets.pyi +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/py.typed +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/spaceweather.pyi +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/sun.pyi +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit/utils.pyi +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit.egg-info/dependency_links.txt +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit.egg-info/requires.txt +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/satkit.egg-info/top_level.txt +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/mod_utils.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyconsts.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pydensity.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyduration.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyecom.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyframes.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyframetransform.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pygravity.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyinstant.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyitrfcoord.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyjplephem.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pykepler.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pylambert.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pylogging.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pylpephem_moon.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pylpephem_planets.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pylpephem_sun.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pynrlmsise.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pypropagate.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pypropresult.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pypropsettings.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyquaternion.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pysatproperties.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pysatstate.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pysgp4.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pysolarsystem.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyspaceweather.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pythrust.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pytlefitstatus.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/python/src/pyutils.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/setup.cfg +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/consts.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/earth_orientation_params.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/earthgravity.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/error.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/frames.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/frametransform/dispatch.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/frametransform/error.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/frametransform/ierstable.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/frametransform/mod.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/frametransform/qcirs2gcrs.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/itrfcoord.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/jplephem.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/kepler.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/lambert.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/lib.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/lpephem/mod.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/lpephem/moon.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/lpephem/planets.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/lpephem/sun.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/mathtypes.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/nrlmsise.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/omm/xml.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/drag.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/error.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/mod.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/ode/gauss_jackson.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/ode/mod.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/point_gravity.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/precomputed.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/propagator.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/relativity.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/satproperties.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/satstate.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/settings.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/srp.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/thrust.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/orbitprop/tides.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/dpper.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/dscom.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/dsinit.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/dspace.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/error.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/getgravconst.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/initl.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/mod.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/satrec.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/sgp4_impl.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/sgp4_lowlevel.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/sgp4/sgp4init.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/solarsystem.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/spaceweather/assemble.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/spaceweather/cssi.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/spaceweather/gfz.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/spaceweather/mod.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/spaceweather/msafe.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/spaceweather/swpc.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/chrono.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/duration.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/instant.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/instant_err.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/instant_ops.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/instantparse.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/mod.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/tests.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/timelike.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/timescale.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/utc_pre1972.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/time/weekday.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/tle/error.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/tle/fitting.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/datadir.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/diag.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/download.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/embedded.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/manifest.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/mod.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/singleton.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/test.rs +0 -0
- {satkit-0.24.2 → satkit-0.24.3}/src/utils/update_data.rs +0 -0
|
@@ -85,9 +85,9 @@ dependencies = [
|
|
|
85
85
|
|
|
86
86
|
[[package]]
|
|
87
87
|
name = "bit-vec"
|
|
88
|
-
version = "0.10.
|
|
88
|
+
version = "0.10.2"
|
|
89
89
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
90
|
-
checksum = "
|
|
90
|
+
checksum = "72503af1e72be411d74ca45cd6b309878fcb35354e252fc2a3a8bda3a97082a0"
|
|
91
91
|
dependencies = [
|
|
92
92
|
"borsh",
|
|
93
93
|
"serde",
|
|
@@ -129,7 +129,7 @@ dependencies = [
|
|
|
129
129
|
"proc-macro-crate",
|
|
130
130
|
"proc-macro2",
|
|
131
131
|
"quote",
|
|
132
|
-
"syn 3.0.
|
|
132
|
+
"syn 3.0.10",
|
|
133
133
|
]
|
|
134
134
|
|
|
135
135
|
[[package]]
|
|
@@ -158,9 +158,9 @@ checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
|
|
|
158
158
|
|
|
159
159
|
[[package]]
|
|
160
160
|
name = "cc"
|
|
161
|
-
version = "1.11.
|
|
161
|
+
version = "1.11.1"
|
|
162
162
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
163
|
-
checksum = "
|
|
163
|
+
checksum = "4ff2a8126fff0f8c839080d619675a585e61720bb12d2baceae45769fd66f155"
|
|
164
164
|
dependencies = [
|
|
165
165
|
"find-msvc-tools",
|
|
166
166
|
"shlex",
|
|
@@ -306,9 +306,9 @@ dependencies = [
|
|
|
306
306
|
|
|
307
307
|
[[package]]
|
|
308
308
|
name = "crc32fast"
|
|
309
|
-
version = "1.5.
|
|
309
|
+
version = "1.5.5"
|
|
310
310
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
311
|
-
checksum = "
|
|
311
|
+
checksum = "2b929dd2a135771f40afabd1073f85eed59c800b7c61901e5c254270497dad64"
|
|
312
312
|
dependencies = [
|
|
313
313
|
"cfg-if",
|
|
314
314
|
]
|
|
@@ -435,9 +435,9 @@ checksum = "1c66915cc5391097de7a2b0b972e8505aa33c0df401fd3a6811dbdb32881ba48"
|
|
|
435
435
|
|
|
436
436
|
[[package]]
|
|
437
437
|
name = "flate2"
|
|
438
|
-
version = "1.1.
|
|
438
|
+
version = "1.1.11"
|
|
439
439
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
440
|
-
checksum = "
|
|
440
|
+
checksum = "626d4928326b646e70f65ed36fc7cf9f206bdb68a0019ee7c6b4709da4e084c4"
|
|
441
441
|
dependencies = [
|
|
442
442
|
"crc32fast",
|
|
443
443
|
"miniz_oxide",
|
|
@@ -609,9 +609,9 @@ dependencies = [
|
|
|
609
609
|
|
|
610
610
|
[[package]]
|
|
611
611
|
name = "itoa"
|
|
612
|
-
version = "1.0.
|
|
612
|
+
version = "1.0.19"
|
|
613
613
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
614
|
-
checksum = "
|
|
614
|
+
checksum = "3bd1574e617a9a6c1f8f8181bd7e841e1f20e4277607ef28945765188d6284d4"
|
|
615
615
|
|
|
616
616
|
[[package]]
|
|
617
617
|
name = "jni"
|
|
@@ -986,7 +986,7 @@ dependencies = [
|
|
|
986
986
|
"proc-macro2",
|
|
987
987
|
"pyo3-macros-backend",
|
|
988
988
|
"quote",
|
|
989
|
-
"syn 3.0.
|
|
989
|
+
"syn 3.0.10",
|
|
990
990
|
]
|
|
991
991
|
|
|
992
992
|
[[package]]
|
|
@@ -998,7 +998,7 @@ dependencies = [
|
|
|
998
998
|
"heck",
|
|
999
999
|
"proc-macro2",
|
|
1000
1000
|
"quote",
|
|
1001
|
-
"syn 3.0.
|
|
1001
|
+
"syn 3.0.10",
|
|
1002
1002
|
]
|
|
1003
1003
|
|
|
1004
1004
|
[[package]]
|
|
@@ -1228,9 +1228,9 @@ dependencies = [
|
|
|
1228
1228
|
|
|
1229
1229
|
[[package]]
|
|
1230
1230
|
name = "rustls-pki-types"
|
|
1231
|
-
version = "1.
|
|
1231
|
+
version = "1.16.0"
|
|
1232
1232
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1233
|
-
checksum = "
|
|
1233
|
+
checksum = "102f35f7de7b06d8c61f1cff6592f5253e0dea431c74867aad5dfd70f44663fb"
|
|
1234
1234
|
dependencies = [
|
|
1235
1235
|
"zeroize",
|
|
1236
1236
|
]
|
|
@@ -1302,7 +1302,7 @@ dependencies = [
|
|
|
1302
1302
|
|
|
1303
1303
|
[[package]]
|
|
1304
1304
|
name = "satkit"
|
|
1305
|
-
version = "0.24.
|
|
1305
|
+
version = "0.24.3"
|
|
1306
1306
|
dependencies = [
|
|
1307
1307
|
"anyhow",
|
|
1308
1308
|
"approx",
|
|
@@ -1325,7 +1325,7 @@ dependencies = [
|
|
|
1325
1325
|
|
|
1326
1326
|
[[package]]
|
|
1327
1327
|
name = "satkit-python"
|
|
1328
|
-
version = "0.24.
|
|
1328
|
+
version = "0.24.3"
|
|
1329
1329
|
dependencies = [
|
|
1330
1330
|
"anyhow",
|
|
1331
1331
|
"log",
|
|
@@ -1418,7 +1418,7 @@ checksum = "e7a5d71263a5a7d47b41f6b3f06ba276f10cc18b0931f1799f710578e2309348"
|
|
|
1418
1418
|
dependencies = [
|
|
1419
1419
|
"proc-macro2",
|
|
1420
1420
|
"quote",
|
|
1421
|
-
"syn 3.0.
|
|
1421
|
+
"syn 3.0.10",
|
|
1422
1422
|
]
|
|
1423
1423
|
|
|
1424
1424
|
[[package]]
|
|
@@ -1498,9 +1498,9 @@ dependencies = [
|
|
|
1498
1498
|
|
|
1499
1499
|
[[package]]
|
|
1500
1500
|
name = "syn"
|
|
1501
|
-
version = "3.0.
|
|
1501
|
+
version = "3.0.10"
|
|
1502
1502
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1503
|
-
checksum = "
|
|
1503
|
+
checksum = "4ae9ccbea3a7b0b09443036490c8f34a8b1b760fd345e5c0dae0aac718faea79"
|
|
1504
1504
|
dependencies = [
|
|
1505
1505
|
"proc-macro2",
|
|
1506
1506
|
"quote",
|
|
@@ -1543,7 +1543,7 @@ checksum = "fe5197923287db20a58125f0bc85c062f7f2c892de97b18c356f9efb14b28524"
|
|
|
1543
1543
|
dependencies = [
|
|
1544
1544
|
"proc-macro2",
|
|
1545
1545
|
"quote",
|
|
1546
|
-
"syn 3.0.
|
|
1546
|
+
"syn 3.0.10",
|
|
1547
1547
|
]
|
|
1548
1548
|
|
|
1549
1549
|
[[package]]
|
|
@@ -1558,18 +1558,18 @@ dependencies = [
|
|
|
1558
1558
|
|
|
1559
1559
|
[[package]]
|
|
1560
1560
|
name = "toml_datetime"
|
|
1561
|
-
version = "1.1.
|
|
1561
|
+
version = "1.1.3+spec-1.1.0"
|
|
1562
1562
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1563
|
-
checksum = "
|
|
1563
|
+
checksum = "173f25c883cd2176a2d8212155638c0a60d484a9d84546d270866f40f56b6e49"
|
|
1564
1564
|
dependencies = [
|
|
1565
1565
|
"serde_core",
|
|
1566
1566
|
]
|
|
1567
1567
|
|
|
1568
1568
|
[[package]]
|
|
1569
1569
|
name = "toml_edit"
|
|
1570
|
-
version = "0.25.
|
|
1570
|
+
version = "0.25.19+spec-1.1.0"
|
|
1571
1571
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1572
|
-
checksum = "
|
|
1572
|
+
checksum = "dd43688c4858d7264ae1cf9a9f874a67c3feb74a883b1cd7bebd6a4ea8307218"
|
|
1573
1573
|
dependencies = [
|
|
1574
1574
|
"indexmap",
|
|
1575
1575
|
"toml_datetime",
|
|
@@ -1717,7 +1717,7 @@ dependencies = [
|
|
|
1717
1717
|
"bumpalo",
|
|
1718
1718
|
"proc-macro2",
|
|
1719
1719
|
"quote",
|
|
1720
|
-
"syn 3.0.
|
|
1720
|
+
"syn 3.0.10",
|
|
1721
1721
|
"wasm-bindgen-shared",
|
|
1722
1722
|
]
|
|
1723
1723
|
|
|
@@ -1742,18 +1742,18 @@ dependencies = [
|
|
|
1742
1742
|
|
|
1743
1743
|
[[package]]
|
|
1744
1744
|
name = "webpki-root-certs"
|
|
1745
|
-
version = "1.0.
|
|
1745
|
+
version = "1.0.12"
|
|
1746
1746
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1747
|
-
checksum = "
|
|
1747
|
+
checksum = "293198dcebfb821155b5092ab94b5a82ff180eddd7241df3bd6e66a4ffd1a585"
|
|
1748
1748
|
dependencies = [
|
|
1749
1749
|
"rustls-pki-types",
|
|
1750
1750
|
]
|
|
1751
1751
|
|
|
1752
1752
|
[[package]]
|
|
1753
1753
|
name = "webpki-roots"
|
|
1754
|
-
version = "1.0.
|
|
1754
|
+
version = "1.0.12"
|
|
1755
1755
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1756
|
-
checksum = "
|
|
1756
|
+
checksum = "7265c9301c16a8711c992c2d8da90ee77ef54b1ed51482d6dfeb00dc756b1297"
|
|
1757
1757
|
dependencies = [
|
|
1758
1758
|
"rustls-pki-types",
|
|
1759
1759
|
]
|
|
@@ -1932,9 +1932,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
|
|
1932
1932
|
|
|
1933
1933
|
[[package]]
|
|
1934
1934
|
name = "winnow"
|
|
1935
|
-
version = "1.0.
|
|
1935
|
+
version = "1.0.5"
|
|
1936
1936
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
|
1937
|
-
checksum = "
|
|
1937
|
+
checksum = "8c3b93199df0ab874cdf0c6a94f0a0dc3423fe41f1cafb62b8bd7b1deb277aef"
|
|
1938
1938
|
dependencies = [
|
|
1939
1939
|
"memchr",
|
|
1940
1940
|
]
|
|
@@ -9,7 +9,7 @@ requires-python = ">= 3.11"
|
|
|
9
9
|
authors = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
|
|
10
10
|
maintainers = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
|
|
11
11
|
readme = "README.md"
|
|
12
|
-
version = "0.24.
|
|
12
|
+
version = "0.24.3"
|
|
13
13
|
license = "MIT OR Apache-2.0"
|
|
14
14
|
description = "Satellite Orbital Dynamics Toolkit"
|
|
15
15
|
keywords = [
|
|
@@ -32,7 +32,8 @@ class OMMDict(TypedDict, total=False):
|
|
|
32
32
|
as strings in its JSON; :func:`sgp4` accepts either), ``EPOCH`` as an
|
|
33
33
|
RFC 3339 string, absent optional fields omitted, and every key that is not
|
|
34
34
|
a CCSDS field (Space-Track's ``OBJECT_TYPE``, ``RCS_SIZE``, ``LAUNCH_DATE``,
|
|
35
|
-
``TLE_LINE1``, ...; XML ``USER_DEFINED`` parameters
|
|
35
|
+
``TLE_LINE1``, ...; XML ``USER_DEFINED`` parameters; extra CSV columns, as
|
|
36
|
+
strings) kept verbatim.
|
|
36
37
|
"""
|
|
37
38
|
|
|
38
39
|
CCSDS_OMM_VERS: str
|
|
@@ -11,7 +11,7 @@ import numpy as np
|
|
|
11
11
|
import datetime
|
|
12
12
|
|
|
13
13
|
from collections.abc import Sequence
|
|
14
|
-
from typing import Any, ClassVar, Optional, TypeAlias, Union, final, overload
|
|
14
|
+
from typing import Any, ClassVar, Literal, Optional, TypeAlias, Union, final, overload
|
|
15
15
|
from typing_extensions import deprecated
|
|
16
16
|
|
|
17
17
|
from ._types import OMMDict
|
|
@@ -40,6 +40,13 @@ TimeArrayLike: TypeAlias = (
|
|
|
40
40
|
)
|
|
41
41
|
TimeInput: TypeAlias = "TimeScalar | TimeArrayLike"
|
|
42
42
|
|
|
43
|
+
class TLEWarning(UserWarning):
|
|
44
|
+
"""Warning for a TLE record skipped by a loader called with ``on_error="warn"``
|
|
45
|
+
|
|
46
|
+
The message is the one ``on_error="raise"`` raises as ``RuntimeError``: it gives
|
|
47
|
+
the input line the record starts on, its satellite and what failed to parse.
|
|
48
|
+
"""
|
|
49
|
+
|
|
43
50
|
@final
|
|
44
51
|
class TLE:
|
|
45
52
|
"""Two-Line Element Set (TLE) representing a satellite ephemeris
|
|
@@ -73,12 +80,18 @@ class TLE:
|
|
|
73
80
|
"""
|
|
74
81
|
|
|
75
82
|
@staticmethod
|
|
76
|
-
def from_file(
|
|
83
|
+
def from_file(
|
|
84
|
+
filename: str,
|
|
85
|
+
*,
|
|
86
|
+
check_checksum: bool = False,
|
|
87
|
+
on_error: Literal["raise", "warn", "skip"] = "raise",
|
|
88
|
+
) -> list[TLE]:
|
|
77
89
|
"""Load TLEs from a text file, parsed as :meth:`TLE.from_lines` does
|
|
78
90
|
|
|
79
91
|
Args:
|
|
80
92
|
filename (str): name of the text file holding the TLE lines
|
|
81
93
|
check_checksum (bool, optional): as in :meth:`TLE.from_lines`
|
|
94
|
+
on_error (str, optional): as in :meth:`TLE.from_lines`
|
|
82
95
|
|
|
83
96
|
Returns:
|
|
84
97
|
list[TLE]: one TLE per element set in the file
|
|
@@ -97,7 +110,12 @@ class TLE:
|
|
|
97
110
|
...
|
|
98
111
|
|
|
99
112
|
@staticmethod
|
|
100
|
-
def from_lines(
|
|
113
|
+
def from_lines(
|
|
114
|
+
lines: Sequence[str],
|
|
115
|
+
*,
|
|
116
|
+
check_checksum: bool = False,
|
|
117
|
+
on_error: Literal["raise", "warn", "skip"] = "raise",
|
|
118
|
+
) -> list[TLE]:
|
|
101
119
|
"""Load TLEs from a list of lines
|
|
102
120
|
|
|
103
121
|
:meth:`TLE.from_file` and :meth:`TLE.from_url` parse their text the
|
|
@@ -109,20 +127,48 @@ class TLE:
|
|
|
109
127
|
e.g. list or tuple)
|
|
110
128
|
check_checksum (bool, optional): also verify the checksum digit
|
|
111
129
|
(column 69) of every data line. Default False.
|
|
130
|
+
on_error (str, optional): what to do with a record that fails to
|
|
131
|
+
parse: ``"raise"`` (default) raises ``RuntimeError`` at the
|
|
132
|
+
first one; ``"warn"`` leaves it out and emits a
|
|
133
|
+
:class:`TLEWarning` with the same message; ``"skip"`` leaves
|
|
134
|
+
it out silently
|
|
112
135
|
|
|
113
136
|
Returns:
|
|
114
|
-
list[TLE]: one TLE per element set, even if there is only one
|
|
137
|
+
list[TLE]: one TLE per element set, even if there is only one.
|
|
138
|
+
With ``on_error="warn"`` or ``"skip"``, one per element set that
|
|
139
|
+
parsed, which is an empty list if none did.
|
|
115
140
|
|
|
116
141
|
Raises:
|
|
117
|
-
ValueError: if the lines hold no TLEs
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
142
|
+
ValueError: if the lines hold no TLEs, or ``on_error`` is not one
|
|
143
|
+
of the three values
|
|
144
|
+
RuntimeError: with ``on_error="raise"``, if a record fails to
|
|
145
|
+
parse (or, with ``check_checksum``, has a wrong checksum); the
|
|
146
|
+
message gives the line the record starts on and its satellite
|
|
147
|
+
|
|
148
|
+
Example:
|
|
149
|
+
```python
|
|
150
|
+
import warnings
|
|
151
|
+
|
|
152
|
+
lines = [
|
|
153
|
+
"1 25544U 98067A 21264.51782528 .00002893 00000-0 58680-4 0 9991",
|
|
154
|
+
"2 25544 51.6442 208.5856 0001458 47.2277 50.1624 15.48919419302878",
|
|
155
|
+
# A letter O in the epoch day
|
|
156
|
+
"1 49140U 21082L 24O30.39663557 .00000076 00000-0 14180-4 0 9995",
|
|
157
|
+
"2 49140 70.0008 34.1139 0002663 260.3521 99.7337 14.98327656131736",
|
|
158
|
+
]
|
|
159
|
+
with warnings.catch_warnings(record=True) as skipped:
|
|
160
|
+
warnings.simplefilter("always")
|
|
161
|
+
tles = satkit.TLE.from_lines(lines, on_error="warn")
|
|
162
|
+
print(len(tles), len(skipped))
|
|
163
|
+
# 1 1
|
|
164
|
+
```
|
|
121
165
|
"""
|
|
122
166
|
...
|
|
123
167
|
|
|
124
168
|
@staticmethod
|
|
125
|
-
def from_url(
|
|
169
|
+
def from_url(
|
|
170
|
+
url: str, *, on_error: Literal["raise", "warn", "skip"] = "raise"
|
|
171
|
+
) -> list[TLE]:
|
|
126
172
|
"""Load TLEs from a URL, parsing the response as :meth:`TLE.from_lines` does
|
|
127
173
|
|
|
128
174
|
Works with any URL that returns plain-text TLE data.
|
|
@@ -4897,7 +4943,9 @@ def propagate(
|
|
|
4897
4943
|
def omm_from_url(url: str) -> list[OMMDict]:
|
|
4898
4944
|
"""Load OMM(s) from a URL as a list of dictionaries
|
|
4899
4945
|
|
|
4900
|
-
Fetches the content at the given URL and auto-detects
|
|
4946
|
+
Fetches the content at the given URL and auto-detects the format (JSON,
|
|
4947
|
+
XML or CSV), as :func:`omm_from_text` does. A CelesTrak GP query with no
|
|
4948
|
+
``FORMAT`` answers in CSV.
|
|
4901
4949
|
Returns a list of dictionaries that can be passed directly to :func:`sgp4`.
|
|
4902
4950
|
|
|
4903
4951
|
Args:
|
|
@@ -4922,11 +4970,13 @@ def omm_from_url(url: str) -> list[OMMDict]:
|
|
|
4922
4970
|
...
|
|
4923
4971
|
|
|
4924
4972
|
def omm_from_file(filename: str) -> list[OMMDict]:
|
|
4925
|
-
"""Load OMM(s) from a JSON or
|
|
4973
|
+
"""Load OMM(s) from a JSON, XML or CSV file as a list of dictionaries
|
|
4926
4974
|
|
|
4927
|
-
The format is detected from the content, not the file extension
|
|
4928
|
-
starting with ``[`` or ``{`` is JSON
|
|
4929
|
-
|
|
4975
|
+
The format is detected from the content, not the file extension, as
|
|
4976
|
+
:func:`omm_from_text` does: a file starting with ``[`` or ``{`` is JSON
|
|
4977
|
+
(one message or an array of them), one starting with ``<`` is a CCSDS
|
|
4978
|
+
NDM/XML document, and one whose first line holds a comma is a CSV table.
|
|
4979
|
+
KVN is not supported.
|
|
4930
4980
|
|
|
4931
4981
|
Args:
|
|
4932
4982
|
filename (str): path to the file
|
|
@@ -4945,11 +4995,18 @@ def omm_from_file(filename: str) -> list[OMMDict]:
|
|
|
4945
4995
|
...
|
|
4946
4996
|
|
|
4947
4997
|
def omm_from_text(text: str) -> list[OMMDict]:
|
|
4948
|
-
"""Parse OMM(s) from JSON or
|
|
4998
|
+
"""Parse OMM(s) from JSON, XML or CSV text as a list of dictionaries
|
|
4949
4999
|
|
|
4950
5000
|
Text starting with ``[`` or ``{`` is parsed as JSON (one message or an
|
|
4951
|
-
array of them), text starting with ``<`` as a CCSDS NDM/XML document
|
|
4952
|
-
KVN is not supported.
|
|
5001
|
+
array of them), text starting with ``<`` as a CCSDS NDM/XML document, and
|
|
5002
|
+
text whose first line holds a comma as CSV. KVN is not supported.
|
|
5003
|
+
|
|
5004
|
+
The CSV form is a header row of OMM keywords and one row per message, as
|
|
5005
|
+
CelesTrak (its default for GP queries) and Space-Track serve it. Fields
|
|
5006
|
+
may be quoted and columns may come in any order. An empty cell is an
|
|
5007
|
+
absent field, except ``OBJECT_NAME`` and ``OBJECT_ID``, which stay empty
|
|
5008
|
+
strings; columns that are not OMM fields are kept as strings (``None``
|
|
5009
|
+
where empty).
|
|
4953
5010
|
|
|
4954
5011
|
Args:
|
|
4955
5012
|
text (str): the document
|
|
@@ -4957,6 +5014,11 @@ def omm_from_text(text: str) -> list[OMMDict]:
|
|
|
4957
5014
|
Returns:
|
|
4958
5015
|
list[OMMDict]: one dictionary per message (see :class:`OMMDict`)
|
|
4959
5016
|
|
|
5017
|
+
Raises:
|
|
5018
|
+
RuntimeError: if the text is none of the three formats or is
|
|
5019
|
+
malformed; for CSV the message gives the line of the bad row, and
|
|
5020
|
+
a table with no ``EPOCH`` or ``MEAN_MOTION`` column is refused
|
|
5021
|
+
|
|
4960
5022
|
Example:
|
|
4961
5023
|
```python
|
|
4962
5024
|
import satkit as sk
|
|
@@ -173,6 +173,7 @@ pub fn satkit(_py: Python, m: &Bound<'_, PyModule>) -> PyResult<()> {
|
|
|
173
173
|
m.add_class::<pyconsts::Consts>()?;
|
|
174
174
|
m.add_class::<SolarSystem>()?;
|
|
175
175
|
m.add_class::<pytle::PyTLE>()?;
|
|
176
|
+
m.add("TLEWarning", m.py().get_type::<pytle::TLEWarning>())?;
|
|
176
177
|
m.add_class::<pytlefitstatus::PyTleFitStatus>()?;
|
|
177
178
|
|
|
178
179
|
m.add_class::<PyGeodet>()?;
|
|
@@ -206,7 +206,9 @@ fn omms_to_pylist(py: Python<'_>, omms: &[OMM]) -> PyResult<Py<PyAny>> {
|
|
|
206
206
|
|
|
207
207
|
/// Load OMM(s) from a URL as a list of dictionaries
|
|
208
208
|
///
|
|
209
|
-
/// Fetches the content at the given URL and auto-detects
|
|
209
|
+
/// Fetches the content at the given URL and auto-detects the format (JSON,
|
|
210
|
+
/// XML or CSV), as ``omm_from_text`` does. A CelesTrak GP query with no
|
|
211
|
+
/// ``FORMAT`` answers in CSV.
|
|
210
212
|
/// Returns a list of dictionaries that can be passed directly to ``satkit.sgp4()``.
|
|
211
213
|
///
|
|
212
214
|
/// Args:
|
|
@@ -230,13 +232,14 @@ pub fn omm_from_url(py: Python<'_>, url: String) -> Result<Py<PyAny>> {
|
|
|
230
232
|
Ok(omms_to_pylist(py, &omms)?)
|
|
231
233
|
}
|
|
232
234
|
|
|
233
|
-
/// Load OMM(s) from a JSON or
|
|
235
|
+
/// Load OMM(s) from a JSON, XML or CSV file as a list of dictionaries
|
|
234
236
|
///
|
|
235
|
-
/// The format is detected from the content, not the file extension
|
|
237
|
+
/// The format is detected from the content, not the file extension, as
|
|
238
|
+
/// ``omm_from_text`` does.
|
|
236
239
|
///
|
|
237
240
|
/// Args:
|
|
238
241
|
/// filename (str): Path to a file holding one OMM or an array of them
|
|
239
|
-
/// (JSON),
|
|
242
|
+
/// (JSON), a CCSDS NDM/XML document, or a CSV table
|
|
240
243
|
///
|
|
241
244
|
/// Returns:
|
|
242
245
|
/// list[dict]: One dict per message, see ``satkit.OMMDict``
|
|
@@ -246,16 +249,23 @@ pub fn omm_from_file(py: Python<'_>, filename: String) -> Result<Py<PyAny>> {
|
|
|
246
249
|
Ok(omms_to_pylist(py, &omms)?)
|
|
247
250
|
}
|
|
248
251
|
|
|
249
|
-
/// Parse OMM(s) from JSON or
|
|
252
|
+
/// Parse OMM(s) from JSON, XML or CSV text as a list of dictionaries
|
|
250
253
|
///
|
|
251
254
|
/// Text starting with ``[`` or ``{`` is parsed as JSON, text starting with
|
|
252
|
-
/// ``<`` as XML
|
|
255
|
+
/// ``<`` as XML, and text whose first line holds a comma as CSV: a header
|
|
256
|
+
/// row of OMM keywords and one row per message, as CelesTrak and Space-Track
|
|
257
|
+
/// serve it. KVN is not supported.
|
|
253
258
|
///
|
|
254
259
|
/// Args:
|
|
255
|
-
/// text (str): One OMM or an array of them (JSON),
|
|
260
|
+
/// text (str): One OMM or an array of them (JSON), a CCSDS NDM/XML
|
|
261
|
+
/// document, or a CSV table
|
|
256
262
|
///
|
|
257
263
|
/// Returns:
|
|
258
264
|
/// list[dict]: One dict per message, see ``satkit.OMMDict``
|
|
265
|
+
///
|
|
266
|
+
/// Raises:
|
|
267
|
+
/// RuntimeError: if the text is none of the three formats or is
|
|
268
|
+
/// malformed; for CSV the message gives the line of the bad row
|
|
259
269
|
#[pyfunction]
|
|
260
270
|
pub fn omm_from_text(py: Python<'_>, text: String) -> Result<Py<PyAny>> {
|
|
261
271
|
let omms = py.detach(|| OMM::from_text(&text))?;
|