satkit 0.8.5__cp39-cp39-win_amd64.whl → 0.9.1__cp39-cp39-win_amd64.whl

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/_version.py CHANGED
@@ -14,5 +14,5 @@ __version__: str
14
14
  __version_tuple__: VERSION_TUPLE
15
15
  version_tuple: VERSION_TUPLE
16
16
 
17
- __version__ = version = "0.8.5"
18
- __version_tuple__ = version_tuple = (0, 8, 5)
17
+ __version__ = version = "0.9.1"
18
+ __version_tuple__ = version_tuple = (0, 9, 1)
Binary file
satkit/satkit.pyi CHANGED
@@ -261,7 +261,7 @@ class TLE:
261
261
  """
262
262
 
263
263
  def sgp4(
264
- tle: TLE | list[TLE],
264
+ tle: TLE | list[TLE] | dict,
265
265
  tm: time | list[time] | npt.ArrayLike,
266
266
  **kwargs,
267
267
  ) -> tuple[npt.NDArray[np.float64], npt.NDArray[np.float64]]:
@@ -276,7 +276,7 @@ def sgp4(
276
276
  https://celestrak.org/publications/AIAA/2008-6770/AIAA-2008-6770.pdf
277
277
 
278
278
  Args:
279
- tle (TLE | list[TLE]): TLE (or list of TLES) on which to operate
279
+ tle (TLE | list[TLE] | dict): TLE or OMM (or list of TLES) on which to operate
280
280
  tm (time | list[time] | npt.ArrayLike[time]): time(s) at which to compute position and velocity
281
281
 
282
282
  Keyword Args:
@@ -294,6 +294,12 @@ def sgp4(
294
294
  Additional return value if errflag is True:
295
295
  list[sgp4_error]: list of errors for each TLE and time output, if errflag is True
296
296
 
297
+ Note:
298
+ Now supports propagation of OMM (Orbital Mean-Element Message) dictionaries
299
+ The dictionaries must follow the structure used by https://www.celestrak.org or
300
+ https://www.space-track.org.
301
+
302
+
297
303
  Example:
298
304
  >>> lines = [
299
305
  >>> "0 INTELSAT 902",
@@ -317,6 +323,20 @@ def sgp4(
317
323
  >>> # Print ITRF coordinate object location
318
324
  >>> print(coord)
319
325
  ITRFCoord(lat: -0.0363 deg, lon: -2.2438 deg, hae: 35799.51 km)
326
+
327
+ Example 2:
328
+ >>> import requests
329
+ >>> import json
330
+ >>>
331
+ >>> # Query ephemeris for the International Space Station (ISS)
332
+ >>> url = 'https://celestrak.org/NORAD/elements/gp.php?CATNR=25544&FORMAT=json'
333
+ >>> with requests.get(url) as response:
334
+ >>> omm = response.json()
335
+ >>> # Get a representative time from the output
336
+ >>> epoch = sk.time(omm[0]['EPOCH'])
337
+ >>> # Compute TEME position & velocity at epoch
338
+ >>> pteme, vteme = satkit.sgp4(omm[0], epoch)
339
+
320
340
  """
321
341
 
322
342
  class sgp4_gravconst:
@@ -968,9 +988,30 @@ class time:
968
988
  satkit.time: Time object representing the same instant in time as the input "datetime.datetime" object
969
989
  """
970
990
 
971
- def datetime(self, utc: bool = True) -> datetime.datetime:
991
+ def as_datetime(self, utc: bool = True) -> datetime.datetime:
972
992
  """Convert object to "datetime.datetime" object representing same instant in time.
973
993
 
994
+ Args:
995
+ utc (bool, optional): Whether to make the "datetime.datetime" object represent time in the local timezone or "UTC". Default is True
996
+
997
+ Returns:
998
+ datetime.datetime: "datetime.datetime" object representing the same instant in time as the "satkit.time" object
999
+
1000
+ Example:
1001
+ >>> dt = satkit.time(2023, 6, 3, 6, 19, 34).as_datetime(True)
1002
+ >>> print(dt)
1003
+ 2023-06-03 06:19:34+00:00
1004
+ >>>
1005
+ >>> dt = satkit.time(2023, 6, 3, 6, 19, 34).as_datetime(False)
1006
+ >>> print(dt)
1007
+ 2023-06-03 02:19:34
1008
+ """
1009
+
1010
+ def datetime(self, utc: bool = True) -> datetime.datetime:
1011
+ """Deprecated: use :meth:`satkit.time.as_datetime`.
1012
+
1013
+ Convert object to "datetime.datetime" object representing same instant in time.
1014
+
974
1015
  Args:
975
1016
  utc (bool, optional): Whether to make the "datetime.datetime" object represent time in the local timezone or "UTC". Default is True
976
1017
 
@@ -2235,7 +2276,7 @@ class propresult:
2235
2276
 
2236
2277
  Notes:
2237
2278
 
2238
- * If "enable_interp" is set to True in the propagation settings, the propresult object can be used to interpolate solutions at any time between the start and stop times of the propagation via the "interp" method
2279
+ * If "enable_interp" is set to True in the propagation settings, the propresult object can be used to interpolate solutions at any time between the begin and end times of the propagation via the "interp" method
2239
2280
 
2240
2281
  """
2241
2282
 
@@ -2276,10 +2317,10 @@ class propresult:
2276
2317
  """
2277
2318
 
2278
2319
  @property
2279
- def state_start(self) -> npt.NDArray[np.float64]:
2280
- """6-element state (pos + vel) of satellite in meters & meters/second at start of propagation
2320
+ def state_begin(self) -> npt.NDArray[np.float64]:
2321
+ """6-element state (pos + vel) of satellite in meters & meters/second at begin of propagation
2281
2322
  Returns:
2282
- npt.NDArray[np.float64]: 6-element numpy array representing state of satellite in meters & meters/second at start of propagation
2323
+ npt.NDArray[np.float64]: 6-element numpy array representing state of satellite in meters & meters/second at begin of propagation
2283
2324
  """
2284
2325
 
2285
2326
  @property
@@ -2302,12 +2343,12 @@ class propresult:
2302
2343
  """
2303
2344
 
2304
2345
  @property
2305
- def time_start(self) -> time:
2306
- """Time at which state_start is valid
2346
+ def time_begin(self) -> time:
2347
+ """Time at which state_begin is valid
2307
2348
 
2308
2349
 
2309
2350
  Returns:
2310
- satkit.time: Time at which state_start is valid
2351
+ satkit.time: Time at which state_begin is valid
2311
2352
  """
2312
2353
 
2313
2354
  @property
@@ -2398,7 +2439,7 @@ class propsettings:
2398
2439
  * use_jplephem: True
2399
2440
  * enable_interp: True
2400
2441
 
2401
- * enable_interp enables high-preciion interpolation of state between start and stop times via the returned function,
2442
+ * enable_interp enables high-preciion interpolation of state between begin and end times via the returned function,
2402
2443
  it is enabled by default. There is a small increase in computational efficiency if set to false
2403
2444
 
2404
2445
  """
@@ -2412,7 +2453,7 @@ class propsettings:
2412
2453
  gravity_order (int, optional keyword): Earth gravity order to use in ODE integration. Default is 4
2413
2454
  use_spaceweather (bool, optional keyword): Use space weather data when computing atmospheric density for drag forces. Default is True
2414
2455
  use_jplephem (bool, optional keyword): Use JPL ephemeris for solar system bodies. Default is True
2415
- enable_interp (bool, optional keyword): Store intermediate data that allows for fast high-precision interpolation of state between start and stop times. Default is True
2456
+ enable_interp (bool, optional keyword): Store intermediate data that allows for fast high-precision interpolation of state between begin and end times. Default is True
2416
2457
 
2417
2458
 
2418
2459
  Returns:
@@ -2471,30 +2512,30 @@ class propsettings:
2471
2512
  def use_spaceweather(self, value: bool) -> None: ...
2472
2513
  @property
2473
2514
  def enable_interp(self) -> bool:
2474
- """Store intermediate data that allows for fast high-precision interpolation of state between start and stop times
2515
+ """Store intermediate data that allows for fast high-precision interpolation of state between begin and end times
2475
2516
  If not needed, there is a small computational advantage if set to False
2476
2517
  """
2477
2518
 
2478
2519
  @enable_interp.setter
2479
2520
  def enable_interp(self, value: bool) -> None: ...
2480
2521
  def precompute_terms(
2481
- self, start: time, stop: time, step: Optional[duration] = None
2522
+ self, begin: time, end: time, step: Optional[duration] = None
2482
2523
  ):
2483
- """Precompute terms for fast interpolation of state between start and stop times
2524
+ """Precompute terms for fast interpolation of state between begin and end times
2484
2525
 
2485
2526
  This can be used, for example, to compute sun and moon positions only once if propagating many satellites over the same time period
2486
2527
 
2487
2528
  Args:
2488
- start (satkit.time): Start time of propagation
2489
- stop (satkit.time): Stop time of propagation
2529
+ begin (satkit.time): Begin time of propagation
2530
+ end (satkit.time): End time of propagation
2490
2531
  step (satkit.duration, optional): Step size for interpolation. Default = 60 seconds
2491
2532
 
2492
2533
  """
2493
2534
 
2494
2535
  def propagate(
2495
2536
  state: npt.NDArray[np.float64],
2496
- start: time,
2497
- stop: time,
2537
+ begin: time,
2538
+ end: time,
2498
2539
  **kwargs,
2499
2540
  ) -> propresult:
2500
2541
  """High-precision orbit propagator
@@ -2503,12 +2544,12 @@ def propagate(
2503
2544
 
2504
2545
  Args:
2505
2546
  state (npt.ArrayLike[float], optional): 6-element numpy array representing satellite GCRF position and velocity in meters and meters/second
2506
- start (satkit.time, optional): satkit.time object representing instant at which satellite is at "pos" & "vel"
2507
- stop (satkit.time, optional keyword): satkit.time object representing instant at which new position and velocity will be computed
2508
- duration (satkit.duration, optional keyword): duration from "start" at which new position & velocity will be computed.
2509
- duration_secs (float, optional keyword): duration in seconds from "start" for at which new position and velocity will be computed.
2510
- duration_days (float, optional keyword): duration in days from "start" at which new position and velocity will be computed.
2511
- output_phi (bool, optional keyword): Output 6x6 state transition matrix between "starttime" and "stoptime" (and at intervals, if specified)
2547
+ begin (satkit.time, optional): satkit.time object representing instant at which satellite is at "pos" & "vel"
2548
+ end (satkit.time, optional keyword): satkit.time object representing instant at which new position and velocity will be computed
2549
+ duration (satkit.duration, optional keyword): duration from "begin" at which new position & velocity will be computed.
2550
+ duration_secs (float, optional keyword): duration in seconds from "begin" for at which new position and velocity will be computed.
2551
+ duration_days (float, optional keyword): duration in days from "begin" at which new position and velocity will be computed.
2552
+ output_phi (bool, optional keyword): Output 6x6 state transition matrix between "begintime" and "endtime" (and at intervals, if specified)
2512
2553
  propsettings (propsettings, optional keyword): "propsettings" object with input settings for the propagation. if left out, default will be used.
2513
2554
  satproperties (satproperties_static, optional keyword): "sat_properties_static" object with drag and radiation pressure succeptibility of satellite.
2514
2555
 
@@ -2524,7 +2565,7 @@ def propagate(
2524
2565
  * Sun, Moon gravity
2525
2566
  * Radiation pressured
2526
2567
  * Atmospheric drag: NRL-MISE 2000 density model, with option to include space weather effects (which can be large)
2527
- * Stop time must be set by keyword argument, either explicitely or by duration
2568
+ * End time must be set by keyword argument, either explicitely or by duration
2528
2569
  * Solid Earth tides are not (yet) included in the model
2529
2570
 
2530
2571
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: satkit
3
- Version: 0.8.5
3
+ Version: 0.9.1
4
4
  Summary: Satellite Orbital Dynamics Toolkit
5
5
  Author-email: Steven Michael <ssmichael@gmail.com>
6
6
  Maintainer-email: Steven Michael <ssmichael@gmail.com>
@@ -40,6 +40,9 @@ Description-Content-Type: text/markdown
40
40
  License-File: LICENSE
41
41
  Requires-Dist: numpy>=1.0.0
42
42
  Requires-Dist: satkit-data>=0.7.0
43
+ Provides-Extra: test
44
+ Requires-Dist: pytest; extra == "test"
45
+ Requires-Dist: xmltodict; extra == "test"
43
46
  Dynamic: license-file
44
47
 
45
48
  # Satellite Toolkit (satkit)
@@ -48,7 +51,7 @@ Dynamic: license-file
48
51
 
49
52
  Satkit provides robust, high-performance satellite orbital mechanics calculations with a clean, intuitive API. Built from the ground up in Rust for maximum performance and memory safety, it offers complete Python bindings for all functionality, making advanced orbital mechanics accessible to both systems programmers and data scientists.
50
53
 
51
- -----
54
+ -----
52
55
 
53
56
  ![Build Passing?](https://github.com/ssmichael1/satkit/actions/workflows/build.yml/badge.svg)
54
57
  ![Wheel Passing?](https://github.com/ssmichael1/satkit/actions/workflows/wheels.yml/badge.svg)
@@ -62,7 +65,7 @@ Satkit provides robust, high-performance satellite orbital mechanics calculation
62
65
  ![PyPI - Status](https://img.shields.io/pypi/status/satkit)
63
66
  ![PyPI - Downloads](https://img.shields.io/pypi/dm/satkit)
64
67
  ![Read the Docs](https://img.shields.io/readthedocs/satellite-toolkit)
65
-
68
+
66
69
  ------
67
70
 
68
71
  ## Language Bindings
@@ -74,17 +77,22 @@ Satkit provides robust, high-performance satellite orbital mechanics calculation
74
77
  - Python versions 3.8 through 3.14 supported
75
78
  - Full documentation at <https://satellite-toolkit.readthedocs.io/latest/>
76
79
 
80
+ ## Optional Features
81
+
82
+ - **chrono**: Enables interoperability with `chrono::DateTime` by implementing the `TimeLike` trait.
83
+ Activate with Cargo feature `chrono`.
84
+
77
85
  ## Key Capabilities
78
86
 
79
87
  ### Coordinate Frame Transformations
80
88
  High-precision conversions between multiple reference frames with full support for time-varying Earth orientation:
81
89
  - **ITRF** - International Terrestrial Reference Frame (Earth-fixed)
82
90
  - **GCRF** - Geocentric Celestial Reference Frame using IAU-2000/2006 reduction (inertial)
83
- - **TEME** - True Equinox Mean Equator frame used in SGP4 propagation
91
+ - **TEME** - True Equinox Mean Equator frame used in SGP4 propagation (almost inertial)
84
92
  - **CIRF** - Celestial Intermediate Reference Frame (IAU-2006 intermediate)
85
93
  - **TIRF** - Terrestrial Intermediate Reference Frame (Earth-rotation intermediate)
86
94
  - **Geodetic** - Latitude, longitude, altitude with WGS-84 ellipsoid
87
-
95
+
88
96
  ### Orbit Propagation
89
97
  Multiple propagation methods optimized for different accuracy and performance requirements:
90
98
  - **Numerical Integration**: High-precision propagation using adaptive Runge-Kutta 9(8) methods with dense output
@@ -95,46 +103,48 @@ Multiple propagation methods optimized for different accuracy and performance re
95
103
  - Full AFSPC and improved mode support
96
104
  - TLE fitting from high-precision states with drag estimation
97
105
  - Batch processing for multiple satellites
106
+ - Support TLE and Orbital Mean-Element Messages inputs
98
107
  - **Keplerian**: Fast analytical two-body propagation for preliminary analysis
99
-
100
- ### Force Models
108
+
109
+ ### Numerical Integration Force Models
101
110
  Comprehensive perturbation modeling for high-fidelity orbit propagation:
102
111
  - **Earth Gravity**: Spherical harmonic models up to degree/order 360
103
112
  - Multiple models: JGM2, JGM3, EGM96, ITU GRACE16
104
113
  - Efficient computation with configurable truncation order
105
114
  - Gravity gradient support for state transition matrix
106
115
  - **Third-Body Gravity**: Solar and lunar perturbations using JPL ephemerides
107
- - **Atmospheric Drag**: NRLMSISE-00 density model with space weather integration
116
+ - **Atmospheric Drag**:
117
+ - NRLMSISE-00 density model with space weather integration
108
118
  - Automatic space weather data updates (F10.7, Ap index)
109
119
  - Configurable ballistic coefficients
110
120
  - **Solar Radiation Pressure**: Cannon-ball model with shadow function
111
-
112
- ### Ephemerides
121
+
122
+ ### Solar System Ephemerides
113
123
  Access to high-precision solar system body positions:
114
124
  - **JPL DE440/DE441**: State-of-the-art planetary ephemerides
115
125
  - Chebyshev polynomial interpolation for accuracy
116
126
  - Support for all major planets, sun, moon, and solar system barycenter
117
127
  - **Low-Precision Models**: Fast analytical models for sun and moon when high precision isn't required
118
-
128
+
119
129
  ### Time Systems
120
130
  Comprehensive support for all standard astronomical time scales:
121
131
  - **UTC** - Coordinated Universal Time with leap second handling
122
132
  - **TAI** - International Atomic Time
123
- - **TT** - Terrestrial Time
133
+ - **TT** - Terrestrial Time
124
134
  - **TDB** - Barycentric Dynamical Time
125
135
  - **UT1** - Universal Time with Earth orientation corrections
126
136
  - **GPS** - GPS Time
127
137
  - Automatic conversion between all time scales with microsecond precision
128
-
138
+
129
139
  ### Geodetic Utilities
130
- - **Geodesic Calculations**: Accurate distance and azimuth between ground locations using Vincenty's formulae
131
- - **Coordinate Conversions**: ITRF ↔ Geodetic ↔ East-North-Up ↔ North-East-Down
132
- - **Elevation/Azimuth**: Topocentric coordinate transformations for ground station analysis
140
+ - **Geodesic Calculations** - Accurate distance and azimuth between ground locations using Vincenty's formulae
141
+ - **Coordinate Conversions** - ITRF ↔ Geodetic ↔ East-North-Up ↔ North-East-Down
142
+ - **Elevation/Azimuth** - Topocentric coordinate transformations for ground station analysis
133
143
 
134
144
  ### Sun / Moon Calculations
135
- - **Sun rise / set**: Compute sun rise / set times as function of day & location
136
- - **Moon Phase**: Phase of moon and fraction illuminated
137
- - **Ephemeris**: Fast low-precision ephemeris for sun & moon
145
+ - **Sun rise / set** - Compute sun rise / set times as function of day & location
146
+ - **Moon Phase** - Phase of moon and fraction illuminated
147
+ - **Ephemeris** - Fast low-precision ephemeris for sun & moon
138
148
 
139
149
  ## Technical Details
140
150
 
@@ -178,12 +188,12 @@ The library requires external data files for various calculations. These are aut
178
188
  - DE440/DE441 planetary ephemerides (~100 MB)
179
189
  - Provides positions of sun, moon, planets, and solar system barycenter
180
190
  - Valid for years 1550-2650 CE
181
-
191
+
182
192
  - **Gravity Models** ([ICGEM](http://icgem.gfz-potsdam.de/home))
183
193
  - JGM2, JGM3, EGM96, ITU GRACE16 spherical harmonic coefficients
184
194
  - International Centre for Global Earth Models standardized format
185
195
  - Up to degree/order 360 for high-fidelity propagation
186
-
196
+
187
197
  - **IERS Nutation Tables** ([IERS Conventions](https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html))
188
198
  - IAU-2006 nutation series coefficients
189
199
  - Required for GCRF ↔ ITRF transformations
@@ -196,7 +206,7 @@ The library requires external data files for various calculations. These are aut
196
206
  - Ap geomagnetic index
197
207
  - Critical for atmospheric density modeling and drag calculations
198
208
  - Updated daily by NOAA Space Weather Prediction Center
199
-
209
+
200
210
  - **Earth Orientation Parameters** ([Celestrak](https://celestrak.org/SpaceData/))
201
211
  - Polar motion (x, y)
202
212
  - UT1-UTC time difference
@@ -218,15 +228,15 @@ The library includes comprehensive test suites ensuring correctness of calculati
218
228
  - **JPL Ephemerides**: Validated against JPL-provided test vectors for Chebyshev polynomial interpolation
219
229
  - Over 10,000 test cases covering all planets and time ranges
220
230
  - Accuracy verified to within JPL's published tolerances (sub-meter precision)
221
-
231
+
222
232
  - **SGP4**: Verified using official test vectors from the original C++ distribution
223
233
  - All test cases from Vallado's SGP4 implementation
224
234
  - Includes edge cases and error conditions
225
-
235
+
226
236
  - **Coordinate Transformations**: Cross-validated against multiple reference implementations
227
237
  - SOFA library comparisons for IAU-2006 transformations
228
238
  - Vallado test cases for GCRF ↔ ITRF conversions
229
-
239
+
230
240
  - **Numerical Propagation**: Validated against high-precision commercial tools
231
241
  - Orbit fits to GPS SP3 ephemerides
232
242
  - Multi-day propagations with sub-meter accuracy
@@ -266,7 +276,7 @@ pip install satkit
266
276
 
267
277
  Pre-built binary wheels are available for:
268
278
  - **Windows**: AMD64
269
- - **macOS**: Intel (x86_64) and Apple Silicon (ARM64)
279
+ - **macOS**: Intel (x86_64) and Apple Silicon (ARM64)
270
280
  - **Linux**: x86_64 and ARM64 (aarch64)
271
281
  - **Python versions**: 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14
272
282
 
@@ -336,9 +346,9 @@ settings.gravity_order = 8
336
346
 
337
347
  # Propagate for 1 day
338
348
  result = sk.propagate(
339
- state0,
340
- time0,
341
- stop=time0 + sk.duration.from_days(1),
349
+ state0,
350
+ time0,
351
+ end=time0 + sk.duration.from_days(1),
342
352
  propsettings=settings
343
353
  )
344
354
 
@@ -375,13 +385,13 @@ use satkit::{Instant, SolarSystem, jplephem};
375
385
  fn main() -> Result<(), Box<dyn std::error::Error>> {
376
386
  // Create time instant
377
387
  let time = Instant::from_datetime(2024, 1, 1, 0, 0, 0.0)?;
378
-
388
+
379
389
  // Get Moon position and velocity in GCRF
380
390
  let (pos, vel) = jplephem::geocentric_state(SolarSystem::Moon, &time)?;
381
-
391
+
382
392
  println!("Moon position: {:?}", pos);
383
393
  println!("Moon velocity: {:?}", vel);
384
-
394
+
385
395
  Ok(())
386
396
  }
387
397
  ```
@@ -1,18 +1,18 @@
1
1
  satkit/__init__.py,sha256=_N6_4wz07lz7HhjdL-8bUKOlubFC4WJHyTumLoS1ru4,622
2
2
  satkit/__init__.pyi,sha256=zqMluH0ZKLDXQK9Z32yiEf2LncSDE8yiHHj9X0DS6Ww,732
3
- satkit/_version.py,sha256=ajWZoScrojscBOac59VBfHuO-bpIeaQKv8Ww1_E7FwQ,446
3
+ satkit/_version.py,sha256=buZKfNGuzXBT3FupuFl07CI3K1xUguzS061W7pb0kvo,446
4
4
  satkit/density.pyi,sha256=j_25g_QI7LKo0IEq13Y2daSMYnb4pE5ZPHFX6H8gscE,2211
5
5
  satkit/frametransform.pyi,sha256=UeVyVbWJppoPkCNWOvUM-MGs7FShVVP0wWh6LE8BPus,15806
6
6
  satkit/jplephem.pyi,sha256=5W0tK3-kv5Si-aS7cci1QGTtXC5cAeEbUj5mwIu7IU8,3506
7
7
  satkit/moon.pyi,sha256=r151F1_D2J_Zp9YgZfAuuUlqb8OMPUjk610UwhJ0OXs,3510
8
8
  satkit/planets.pyi,sha256=MX_4waUoTVM11ftaIEDg8kmdZDId9nuRWUUiMYP6Zvg,1110
9
9
  satkit/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- satkit/satkit.cp39-win_amd64.pyd,sha256=Pq-Se99zp3GsQAVYZPlM0QdysAKuI7lHCXwRtJ79Tmw,4608000
11
- satkit/satkit.pyi,sha256=buxuFCGNqliQpN0qOw81DjNr1AneBwCqKxrwLDyr5eM,86450
10
+ satkit/satkit.cp39-win_amd64.pyd,sha256=rrmRo_9YzIdCzLhu7SL6hGWd1WSJbwd2SVh1bPI_KeM,4581376
11
+ satkit/satkit.pyi,sha256=Bb0rhJN9EVbAeVSFO2vBmLcWZUme4CzzItub3_eEjiA,88098
12
12
  satkit/sun.pyi,sha256=Ox7n-JJTNRXFjIR1U0ehbEeecoVss11KFiiKhl28wQs,4217
13
13
  satkit/utils.pyi,sha256=f087jRMh4Y4Lghrn-ncIvt16KCQ4Sto_icicvaXgXk4,3085
14
- satkit-0.8.5.dist-info/licenses/LICENSE,sha256=_G_hwbOSJZqdIWNjgzjFB91eZKvherjtmFfvVvy9wCA,1092
15
- satkit-0.8.5.dist-info/METADATA,sha256=BmZmII3Z0IuRnD_XqXqTHjFOyI5QptE_SDte_Zi8ajg,17409
16
- satkit-0.8.5.dist-info/WHEEL,sha256=XkFE14KmFh7mutkkb-qn_ueuH2lwfT8rLdfc5xpQ7wE,99
17
- satkit-0.8.5.dist-info/top_level.txt,sha256=1gsJ2XQ64FuUfw4z-i3CDi4Y4z9qcKNcm8Fy6-8xSVE,7
18
- satkit-0.8.5.dist-info/RECORD,,
14
+ satkit-0.9.1.dist-info/licenses/LICENSE,sha256=_G_hwbOSJZqdIWNjgzjFB91eZKvherjtmFfvVvy9wCA,1092
15
+ satkit-0.9.1.dist-info/METADATA,sha256=fCgzirqWXDHNRYkBflZrKnPyx6iEpah-ByTbVCTE4DI,17769
16
+ satkit-0.9.1.dist-info/WHEEL,sha256=UWppx23L9lD-cwtF9n598aIt63tRL-xDYsBs7LtuRkE,100
17
+ satkit-0.9.1.dist-info/top_level.txt,sha256=1gsJ2XQ64FuUfw4z-i3CDi4Y4z9qcKNcm8Fy6-8xSVE,7
18
+ satkit-0.9.1.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (80.9.0)
2
+ Generator: setuptools (80.10.1)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp39-cp39-win_amd64
5
5