open-space-toolkit-astrodynamics 15.2.1__py310-none-manylinux2014_aarch64.whl → 15.3.0__py310-none-manylinux2014_aarch64.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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: open-space-toolkit-astrodynamics
3
- Version: 15.2.1
3
+ Version: 15.3.0
4
4
  Summary: Orbit, attitude, access.
5
5
  Author: Open Space Collective
6
6
  Author-email: contact@open-space-collective.org
@@ -1,5 +1,5 @@
1
1
  ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
2
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-aarch64-linux-gnu.so,sha256=zd2Fmu9VH8tksQNYN4r3wPX_A-Mlaqo1GTZi4IyCp14,2488480
2
+ ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-aarch64-linux-gnu.so,sha256=gqOx620XSyPKz17VgJBBxx8nfvN1UYt7RdW8C0pLM4Y,2480288
3
3
  ostk/astrodynamics/__init__.py,sha256=3gWyqFIbhAfcdeMhmfBPQPlPQTmaOzm-6flkJe745Zk,251
4
4
  ostk/astrodynamics/__init__.pyi,sha256=A2tuXlxgYrDj60WjuVwzJBuIF9Fkh6EYjKt0BvU-b1w,32268
5
5
  ostk/astrodynamics/access.pyi,sha256=oZ8LyjNx6FurUUzFbUwGvdYJu1Li0Oy7MwIZu8erTLU,25841
@@ -11,7 +11,7 @@ ostk/astrodynamics/dynamics.pyi,sha256=AUNsUSR5LqOYFt626k4FZDbCPZRGoZV82AwCC3CDH
11
11
  ostk/astrodynamics/estimator.pyi,sha256=2y4I6GMBZynjlY8a8SxCAVCukGR1typDUZu0h_GX9QU,14336
12
12
  ostk/astrodynamics/event_condition.pyi,sha256=-Tq6cqr00lZPpoMnCPDRB0MB-MinM60oCNn1ZSA1Cik,25536
13
13
  ostk/astrodynamics/guidance_law.pyi,sha256=pEoAL9CDFWNulOLv6wea3xj1fJI3xFtgx-2eYMEftJI,12507
14
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.15,sha256=m2xvWOUk4uUDP01xfQuCiIKahwAgOirCtH7MhWX67PU,3802536
14
+ ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.15,sha256=5XupZHa0ZC-unXtxi6Qri6UtbiWvp2nLqsR2NsjWCsc,3810672
15
15
  ostk/astrodynamics/solver.pyi,sha256=tjFkzoxW6h6grMGpqKsgyXyYH9R6lLg6LEV2v5_X6yk,18238
16
16
  ostk/astrodynamics/utilities.py,sha256=y8mr3M46J5z-GhS1oIEnuEJA6otwcyJ9YDhvn_5JxHM,6976
17
17
  ostk/astrodynamics/viewer.py,sha256=SpcvBqXx3CAZpk7UGOPT1ilxywmAmNpgqpuRY11Hwx0,16376
@@ -26,7 +26,7 @@ ostk/astrodynamics/flight/profile/__init__.pyi,sha256=bcvyB8BUlv2Mbjr98piFaiN_tB
26
26
  ostk/astrodynamics/flight/profile/model.pyi,sha256=EEN8V3JGTcvM5sX33lkJnE0av9yPtzn0gJcBmZeai9M,6963
27
27
  ostk/astrodynamics/pytrajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
28
28
  ostk/astrodynamics/pytrajectory/__init__.pyi,sha256=QWrGyQNiICBEI3pKku2wJYdu-SQCBKXjJ_93XTEgkP8,79
29
- ostk/astrodynamics/pytrajectory/pystate.py,sha256=fKKJShleqmqedeiKZZtiAv9Rq-L839u0BQkMoOihqJM,7867
29
+ ostk/astrodynamics/pytrajectory/pystate.py,sha256=c0wR5OJn070ImwVJtW25XhEW7d2_8jkAd168Fo9u6K8,7959
30
30
  ostk/astrodynamics/pytrajectory/pystate.pyi,sha256=dbYwAoyZo9ZgLjms8nH9s_OhxlmxMLLILR-wXGqphbw,3320
31
31
  ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
32
32
  ostk/astrodynamics/test/conftest.py,sha256=stmQOt7UXjBlXKJzNN6RkS2miv1xXSOX-YNpFhaHTqI,2771
@@ -82,13 +82,13 @@ ostk/astrodynamics/test/solvers/test_least_squares_solver.py,sha256=fkJnaT8vPVDl
82
82
  ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py,sha256=OUb7QDwe5WNAtzOLBk-9cBL56PzzadZhXuBo_MiJ2K4,5189
83
83
  ostk/astrodynamics/test/trajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
84
84
  ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py,sha256=d72J50UGG9m0Atei0UQ8sITU1WdJmws5xgUiacLZMbw,2515
85
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=B5N0rIB4R_6t0s9eT_MRrC8-nGD4fRlJi8oETyHHGR8,3356
85
+ ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=s1V-zCd2SDEW6Ia6KmXTNiLwakJ5XjeSjlGat-hZTd0,3431
86
86
  ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
87
87
  ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=vp7gDMtjO7nqERe0yq1OQZ0p4QRtxGTjGKN5-I3LWZM,6739
88
88
  ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=ALjMvzndO9r6dVVXllk0iqu61tEoqu2j25MtzEitDIQ,14076
89
89
  ostk/astrodynamics/test/trajectory/test_segment.py,sha256=aXdF5CpNLwN_hKRU5sG3ID3hJR-NZ1_kgtNA-xHMBkM,12223
90
90
  ostk/astrodynamics/test/trajectory/test_sequence.py,sha256=iCNDDqEGoo4WZIOOov0qKGzrxjg7yWVIk8ajfKMhgI4,14503
91
- ostk/astrodynamics/test/trajectory/test_state.py,sha256=8B7KVlxZZPzwwsfCrTudeSkTTC2wAjXcglB0PZdjD1Y,15688
91
+ ostk/astrodynamics/test/trajectory/test_state.py,sha256=th1BvTIhmgsPPFTbVnpR3URvqYFrf0oyluJyoPP7TPI,17135
92
92
  ostk/astrodynamics/test/trajectory/test_state_builder.py,sha256=LpCCYdCaLu_D2npm9wgA2sMlcekrtbRqP-afe5IE5L4,4871
93
93
  ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
94
94
  ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
@@ -118,7 +118,7 @@ ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_attitude_quatern
118
118
  ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_acceleration.py,sha256=1p37_FYN85d9SrOqO3iCkNecovJJayhnFeZ4QCOw2ao,3528
119
119
  ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_position.py,sha256=XvHdk1KjacTwtkgx2jUAc9I9N3nvjPDv03FAanpv8jQ,2702
120
120
  ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py,sha256=-kd5TZO5TICihbkqDTew2i_tDpggdpe3Yf23046FATM,3057
121
- ostk/astrodynamics/trajectory/__init__.pyi,sha256=39XTt6Bx1cHi7--wjSyL6I8xulbjLTZDuwDVlUc1aog,76440
121
+ ostk/astrodynamics/trajectory/__init__.pyi,sha256=FYXlkA_Qd2veloeyibLZWpyyDGUzgyF_d-X6wIfBVbI,76717
122
122
  ostk/astrodynamics/trajectory/orbit/__init__.pyi,sha256=5tSyJ6obT35BcXW8xQwcUhfTAeM9l9nWm72lAjRE7ik,13235
123
123
  ostk/astrodynamics/trajectory/orbit/message/__init__.pyi,sha256=-GNBlYPrsjelhKxWorYQYhIWzFsibiIQNZvMXjhRpfM,77
124
124
  ostk/astrodynamics/trajectory/orbit/message/spacex.pyi,sha256=TFNTSfGQ4CK6CKCeKwC5s2ul8FCShFE7wMegZTuA5e0,10816
@@ -128,8 +128,8 @@ ostk/astrodynamics/trajectory/orbit/model/kepler.pyi,sha256=09xlx_7dTiivctFDyW_3
128
128
  ostk/astrodynamics/trajectory/orbit/model/sgp4.pyi,sha256=2rxyPPsSCtsEKAShuZQbhZSybK01Q9u1CMieGjwWxN4,14313
129
129
  ostk/astrodynamics/trajectory/state/__init__.pyi,sha256=-sq42oF9YgXSkP1LtPcSu7mmtpjUkEzjydD9VYdIQ6g,17672
130
130
  ostk/astrodynamics/trajectory/state/coordinate_subset.pyi,sha256=iqoM-8RqiLNIsyiQXLfosvGO7ZP_KdQxrUWqiV04E1c,10566
131
- open_space_toolkit_astrodynamics-15.2.1.dist-info/METADATA,sha256=cqRVuLi0uOUcBjOhBH99XRlA4ojKO9QGKiufSdPSZ3Y,1913
132
- open_space_toolkit_astrodynamics-15.2.1.dist-info/WHEEL,sha256=zNyJFcKBthTfo3f0y7-qGrWUdU90Qiru0cV9XV0SGKQ,111
133
- open_space_toolkit_astrodynamics-15.2.1.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
134
- open_space_toolkit_astrodynamics-15.2.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
135
- open_space_toolkit_astrodynamics-15.2.1.dist-info/RECORD,,
131
+ open_space_toolkit_astrodynamics-15.3.0.dist-info/METADATA,sha256=POfzclq5c1bEvRN5sjS82VVmGbyhq5S-fkmsi3HnbTU,1913
132
+ open_space_toolkit_astrodynamics-15.3.0.dist-info/WHEEL,sha256=zNyJFcKBthTfo3f0y7-qGrWUdU90Qiru0cV9XV0SGKQ,111
133
+ open_space_toolkit_astrodynamics-15.3.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
134
+ open_space_toolkit_astrodynamics-15.3.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
135
+ open_space_toolkit_astrodynamics-15.3.0.dist-info/RECORD,,
@@ -216,21 +216,23 @@ def from_dict(data: dict) -> State:
216
216
  ],
217
217
  )
218
218
 
219
- if "drag_coefficient" in data or "cd" in data:
219
+ if (data.get("drag_coefficient") is not None) or (data.get("cd") is not None):
220
220
  coordinate_subsets.append(CoordinateSubset.drag_coefficient())
221
221
  coordinates = np.append(
222
222
  coordinates,
223
223
  data.get("drag_coefficient", data.get("cd")),
224
224
  )
225
225
 
226
- if "cross_sectional_area" in data or "surface_area" in data:
226
+ if (data.get("cross_sectional_area") is not None) or (
227
+ data.get("surface_area") is not None
228
+ ):
227
229
  coordinate_subsets.append(CoordinateSubset.surface_area())
228
230
  coordinates = np.append(
229
231
  coordinates,
230
232
  data.get("cross_sectional_area", data.get("surface_area")),
231
233
  )
232
234
 
233
- if "mass" in data:
235
+ if data.get("mass") is not None:
234
236
  coordinate_subsets.append(CoordinateSubset.mass())
235
237
  coordinates = np.append(
236
238
  coordinates,
@@ -78,6 +78,7 @@ class TestLocalOrbitalFrameFactory:
78
78
  local_orbital_frame_factory: LocalOrbitalFrameFactory,
79
79
  ):
80
80
  assert parent_frame == local_orbital_frame_factory.access_parent_frame()
81
+ assert local_orbital_frame_factory.get_provider_type() is not None
81
82
 
82
83
  def test_generate_frame(
83
84
  self,
@@ -180,7 +180,7 @@ class TestState:
180
180
  assert custom_state is not state
181
181
 
182
182
  def test_from_dict_with_eci_coordinates(self):
183
- data = {
183
+ data: dict = {
184
184
  "timestamp": datetime.now(timezone.utc),
185
185
  "rx_eci": 7000.0,
186
186
  "ry_eci": 0.0,
@@ -198,7 +198,7 @@ class TestState:
198
198
  assert state.get_size() == 6
199
199
 
200
200
  def test_from_dict_with_ecef_coordinates(self):
201
- data = {
201
+ data: dict = {
202
202
  "timestamp": datetime.now(timezone.utc).isoformat(),
203
203
  "rx_ecef": 7000.0,
204
204
  "ry_ecef": 0.0,
@@ -216,7 +216,7 @@ class TestState:
216
216
  assert state.get_size() == 6
217
217
 
218
218
  def test_from_dict_with_generic_coordinates(self):
219
- data = {
219
+ data: dict = {
220
220
  "timestamp": datetime.now(timezone.utc).isoformat(),
221
221
  "rx": 7000.0,
222
222
  "ry": 0.0,
@@ -237,7 +237,7 @@ class TestState:
237
237
  with pytest.raises(
238
238
  ValueError, match="Frame must be provided for generic columns."
239
239
  ):
240
- data = {
240
+ data: dict = {
241
241
  "timestamp": datetime.now(timezone.utc).isoformat(),
242
242
  "rx": 7000.0,
243
243
  "ry": 0.0,
@@ -250,7 +250,7 @@ class TestState:
250
250
  State.from_dict(data)
251
251
 
252
252
  with pytest.raises(ValueError, match="No frame exists with name \\[RANDOM\\]."):
253
- data = {
253
+ data: dict = {
254
254
  "timestamp": datetime.now(timezone.utc).isoformat(),
255
255
  "rx": 7000.0,
256
256
  "ry": 0.0,
@@ -264,7 +264,7 @@ class TestState:
264
264
  State.from_dict(data)
265
265
 
266
266
  with pytest.raises(ValueError, match="Invalid frame data \\[123\\]"):
267
- data = {
267
+ data: dict = {
268
268
  "timestamp": datetime.now(timezone.utc).isoformat(),
269
269
  "rx": 7000.0,
270
270
  "ry": 0.0,
@@ -278,7 +278,7 @@ class TestState:
278
278
  State.from_dict(data)
279
279
 
280
280
  def test_from_dict_with_attitude_quaternion(self):
281
- data = {
281
+ data: dict = {
282
282
  "timestamp": datetime.now(timezone.utc).isoformat(),
283
283
  "rx_eci": 7000.0,
284
284
  "ry_eci": 0.0,
@@ -300,7 +300,7 @@ class TestState:
300
300
  assert state.get_size() == 10
301
301
 
302
302
  def test_from_dict_with_angular_velocity(self):
303
- data = {
303
+ data: dict = {
304
304
  "timestamp": datetime.now(timezone.utc).isoformat(),
305
305
  "rx_eci": 7000.0,
306
306
  "ry_eci": 0.0,
@@ -320,7 +320,7 @@ class TestState:
320
320
  assert state.get_size() == 9
321
321
 
322
322
  def test_from_dict_with_drag_coefficient(self):
323
- data = {
323
+ data: dict = {
324
324
  "timestamp": datetime.now(timezone.utc).isoformat(),
325
325
  "rx_eci": 7000.0,
326
326
  "ry_eci": 0.0,
@@ -337,7 +337,7 @@ class TestState:
337
337
  assert isinstance(state, State)
338
338
  assert state.get_size() == 7
339
339
 
340
- data = {
340
+ data: dict = {
341
341
  "timestamp": datetime.now(timezone.utc).isoformat(),
342
342
  "rx_eci": 7000.0,
343
343
  "ry_eci": 0.0,
@@ -354,8 +354,25 @@ class TestState:
354
354
  assert isinstance(state, State)
355
355
  assert state.get_size() == 7
356
356
 
357
+ data: dict = {
358
+ "timestamp": datetime.now(timezone.utc).isoformat(),
359
+ "rx_eci": 7000.0,
360
+ "ry_eci": 0.0,
361
+ "rz_eci": 0.0,
362
+ "vx_eci": 0.0,
363
+ "vy_eci": 7.5,
364
+ "vz_eci": 0.0,
365
+ "drag_coefficient": None,
366
+ }
367
+
368
+ state: State = State.from_dict(data)
369
+
370
+ assert state is not None
371
+ assert isinstance(state, State)
372
+ assert state.get_size() == 6
373
+
357
374
  def test_from_dict_with_surface_area(self):
358
- data = {
375
+ data: dict = {
359
376
  "timestamp": datetime.now(timezone.utc).isoformat(),
360
377
  "rx_eci": 7000.0,
361
378
  "ry_eci": 0.0,
@@ -372,7 +389,7 @@ class TestState:
372
389
  assert isinstance(state, State)
373
390
  assert state.get_size() == 7
374
391
 
375
- data = {
392
+ data: dict = {
376
393
  "timestamp": datetime.now(timezone.utc).isoformat(),
377
394
  "rx_eci": 7000.0,
378
395
  "ry_eci": 0.0,
@@ -389,8 +406,25 @@ class TestState:
389
406
  assert isinstance(state, State)
390
407
  assert state.get_size() == 7
391
408
 
409
+ data: dict = {
410
+ "timestamp": datetime.now(timezone.utc).isoformat(),
411
+ "rx_eci": 7000.0,
412
+ "ry_eci": 0.0,
413
+ "rz_eci": 0.0,
414
+ "vx_eci": 0.0,
415
+ "vy_eci": 7.5,
416
+ "vz_eci": 0.0,
417
+ "cross_sectional_area": None,
418
+ }
419
+
420
+ state: State = State.from_dict(data)
421
+
422
+ assert state is not None
423
+ assert isinstance(state, State)
424
+ assert state.get_size() == 6
425
+
392
426
  def test_from_dict_with_mass(self):
393
- data = {
427
+ data: dict = {
394
428
  "timestamp": datetime.now(timezone.utc).isoformat(),
395
429
  "rx_eci": 7000.0,
396
430
  "ry_eci": 0.0,
@@ -407,6 +441,23 @@ class TestState:
407
441
  assert isinstance(state, State)
408
442
  assert state.get_size() == 7
409
443
 
444
+ data: dict = {
445
+ "timestamp": datetime.now(timezone.utc).isoformat(),
446
+ "rx_eci": 7000.0,
447
+ "ry_eci": 0.0,
448
+ "rz_eci": 0.0,
449
+ "vx_eci": 0.0,
450
+ "vy_eci": 7.5,
451
+ "vz_eci": 0.0,
452
+ "mass": None,
453
+ }
454
+
455
+ state: State = State.from_dict(data)
456
+
457
+ assert state is not None
458
+ assert isinstance(state, State)
459
+ assert state.get_size() == 6
460
+
410
461
  @pytest.mark.parametrize(
411
462
  ("data", "expected_length", "expected_frame"),
412
463
  [
@@ -195,6 +195,13 @@ class LocalOrbitalFrameFactory:
195
195
  Returns:
196
196
  Frame: The local orbital frame.
197
197
  """
198
+ def get_provider_type(self) -> LocalOrbitalFrameTransformProvider.Type:
199
+ """
200
+ Get the provider type.
201
+
202
+ Returns:
203
+ LocalOrbitalFrameTransformProvider.Type: The provider type.
204
+ """
198
205
  def is_defined(self) -> bool:
199
206
  """
200
207
  Check if the local orbital frame factory is defined.