open-space-toolkit-astrodynamics 9.0.4__py310-none-manylinux2014_aarch64.whl → 9.5.1__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.
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-9.5.1.dist-info}/METADATA +6 -2
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-9.5.1.dist-info}/RECORD +14 -14
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-aarch64-linux-gnu.so +0 -0
- ostk/astrodynamics/converters.py +1 -3
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.9 +0 -0
- ostk/astrodynamics/test/flight/test_maneuver.py +8 -11
- ostk/astrodynamics/test/test_utilities.py +3 -3
- ostk/astrodynamics/test/trajectory/orbit/test_pass.py +9 -0
- ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py +3 -0
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +2 -2
- ostk/astrodynamics/test/trajectory/test_orbit.py +42 -2
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-9.5.1.dist-info}/WHEEL +0 -0
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-9.5.1.dist-info}/top_level.txt +0 -0
- {open_space_toolkit_astrodynamics-9.0.4.dist-info → open_space_toolkit_astrodynamics-9.5.1.dist-info}/zip-safe +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: open-space-toolkit-astrodynamics
|
3
|
-
Version: 9.
|
3
|
+
Version: 9.5.1
|
4
4
|
Summary: Orbit, attitude, access.
|
5
5
|
Author: Open Space Collective
|
6
6
|
Author-email: contact@open-space-collective.org
|
@@ -11,7 +11,11 @@ Classifier: Programming Language :: Python :: 3
|
|
11
11
|
Classifier: License :: OSI Approved :: Apache Software License
|
12
12
|
Classifier: Operating System :: POSIX :: Linux
|
13
13
|
Description-Content-Type: text/markdown
|
14
|
-
Requires-Dist: open-space-toolkit-
|
14
|
+
Requires-Dist: open-space-toolkit-core ~=3.1
|
15
|
+
Requires-Dist: open-space-toolkit-io ~=3.0
|
16
|
+
Requires-Dist: open-space-toolkit-mathematics ~=3.1
|
17
|
+
Requires-Dist: open-space-toolkit-physics ~=7.1
|
18
|
+
Requires-Dist: numpy ~=2.0
|
15
19
|
|
16
20
|
# Open Space Toolkit ▸ Astrodynamics
|
17
21
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
2
|
-
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-aarch64-linux-gnu.so,sha256=
|
2
|
+
ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-310-aarch64-linux-gnu.so,sha256=gNmkMzA8-FUedB6qqcVu4_Gmak1cKiI_to8LAkuX7J8,1951536
|
3
3
|
ostk/astrodynamics/__init__.py,sha256=3gWyqFIbhAfcdeMhmfBPQPlPQTmaOzm-6flkJe745Zk,251
|
4
|
-
ostk/astrodynamics/converters.py,sha256=
|
4
|
+
ostk/astrodynamics/converters.py,sha256=vsm7SHdlPIyIxW1h5ZGAizl284koGaRmyPCu--AQJfA,4670
|
5
5
|
ostk/astrodynamics/display.py,sha256=KiEGsjNftQfoUe-HfZeYpQQQ4TkaEnxtEl6p5_LX5f0,6303
|
6
|
-
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.9,sha256=
|
6
|
+
ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.9,sha256=Qhnp5xTxUOkdDa5gooVKSwDktMGrd94i-73Z83EDoIk,3228576
|
7
7
|
ostk/astrodynamics/utilities.py,sha256=Jw-AT9CU-a2ERDDSNp7rEhZQKhbmZSCr2flGti9XysU,4813
|
8
8
|
ostk/astrodynamics/viewer.py,sha256=8UxqsvU5wui7gPUwxXaKcIB-509NJiih9Df3mQgXyXY,11776
|
9
9
|
ostk/astrodynamics/pytrajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
@@ -17,7 +17,7 @@ ostk/astrodynamics/test/test_event_condition.py,sha256=mhMTH7wAoYFWRYt_8l2d1vjNP
|
|
17
17
|
ostk/astrodynamics/test/test_import.py,sha256=py_hALBR0IYuUzv9dfgQZzrrLHJIpnyKvt3Oi1XBqCg,1251
|
18
18
|
ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
|
19
19
|
ostk/astrodynamics/test/test_trajectory.py,sha256=WC9X-O_prHeVLIZlmmYzgkskrs5ZwvmOfhz8yth2lgI,1345
|
20
|
-
ostk/astrodynamics/test/test_utilities.py,sha256=
|
20
|
+
ostk/astrodynamics/test/test_utilities.py,sha256=kw8quvFTRuoXTbdNdac6IWrjnmA897btNntTMBn-30Q,3614
|
21
21
|
ostk/astrodynamics/test/test_viewer.py,sha256=rbVAiclzBZ1bS4Zdh4xUNJ-STCN4G0O7Gr8suSPJrSc,3986
|
22
22
|
ostk/astrodynamics/test/access/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
23
23
|
ostk/astrodynamics/test/access/test_generator.py,sha256=7l_MJCZIhWIyPpZ-XouBXlSd5-BfqFDGVOMMxjoRIHA,8032
|
@@ -42,7 +42,7 @@ ostk/astrodynamics/test/event_condition/test_instant_condition.py,sha256=Qr5dN6n
|
|
42
42
|
ostk/astrodynamics/test/event_condition/test_logical_condition.py,sha256=09h5TYWtwGt4NQW3k_tziiVs0Q2981rNII9wyKg7p2Q,3321
|
43
43
|
ostk/astrodynamics/test/event_condition/test_real_condition.py,sha256=tle6HVzMFMIIkfRY7CuaA0mPtw3riJBG_JQkc1L0dpk,1374
|
44
44
|
ostk/astrodynamics/test/flight/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
45
|
-
ostk/astrodynamics/test/flight/test_maneuver.py,sha256=
|
45
|
+
ostk/astrodynamics/test/flight/test_maneuver.py,sha256=6LhnNhaiwId-IveUraHnhx8dYxeOgzntP_WPtv9GFjQ,6197
|
46
46
|
ostk/astrodynamics/test/flight/test_profile.py,sha256=RULN-34ERmlZjgNQe6Kj797dklJBKAm-QYUIqitxvwA,5185
|
47
47
|
ostk/astrodynamics/test/flight/test_system.py,sha256=MVaE7lJYisH4vmJPD-G-Hw4wNj-Xe8yMksgu8IXCLvg,1322
|
48
48
|
ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
@@ -56,9 +56,9 @@ ostk/astrodynamics/test/solvers/test_finite_difference_solver.py,sha256=49hS9EF7
|
|
56
56
|
ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py,sha256=ukDuIiEbBBvfqbHfiMIsPk5eyeRsWywCvNT1A3YnmIQ,4862
|
57
57
|
ostk/astrodynamics/test/trajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
58
58
|
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py,sha256=d72J50UGG9m0Atei0UQ8sITU1WdJmws5xgUiacLZMbw,2515
|
59
|
-
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=
|
59
|
+
ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=33SuZgkXEgYwXhFftRBaSr9Vv60DDJBi5MiXD5H-n6A,2173
|
60
60
|
ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
61
|
-
ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=
|
61
|
+
ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=iKVgScEo1osMIXjON4ToURCgp2LDZV18fKQuy49RktI,6484
|
62
62
|
ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=dG31S5FY0NjJ5bnisqJ_HdL7amj_AZAWWLiOmdHfJAc,14233
|
63
63
|
ostk/astrodynamics/test/trajectory/test_segment.py,sha256=ACVMYvjlTyCQHZ2-hFEurK08-LQxt6VlcGTMOrgDHaE,9333
|
64
64
|
ostk/astrodynamics/test/trajectory/test_sequence.py,sha256=gswWqEBTYvbi5TQjF0DNPkAj5COo9Nb9IK7TdwJ_5C0,12882
|
@@ -66,7 +66,7 @@ ostk/astrodynamics/test/trajectory/test_state.py,sha256=PZUpGZKMFRDIyDAfKvSMmmOk
|
|
66
66
|
ostk/astrodynamics/test/trajectory/test_state_builder.py,sha256=PSlXtmGURCrlf0w50tn3dEBRo6p0x4NmIF9gJsNOR3k,4782
|
67
67
|
ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
68
68
|
ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
69
|
-
ostk/astrodynamics/test/trajectory/orbit/test_pass.py,sha256=
|
69
|
+
ostk/astrodynamics/test/trajectory/orbit/test_pass.py,sha256=LTHDGW26I0kujifCXFMcUFu9yaHMeUoIM-7jt6kJkJU,2492
|
70
70
|
ostk/astrodynamics/test/trajectory/orbit/message/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
71
71
|
ostk/astrodynamics/test/trajectory/orbit/message/spacex/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
72
72
|
ostk/astrodynamics/test/trajectory/orbit/message/spacex/conftest.py,sha256=O75ywkPJjoFp0uKptCu4C2tGMRaGN-8NVFVhps85eWE,379
|
@@ -85,14 +85,14 @@ ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py,sha256=H42bc4
|
|
85
85
|
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
|
86
86
|
ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py,sha256=jkyRr5NJQMaSpI3ey7cKcH0E-BlalaUlf_mZPYTSow8,11482
|
87
87
|
ostk/astrodynamics/test/trajectory/state/test_coordinate_broker.py,sha256=ho5FBfB3IvIjfQl7EYoIN1KBuH9lu76IiNMuweq8cqg,2844
|
88
|
-
ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py,sha256=
|
88
|
+
ostk/astrodynamics/test/trajectory/state/test_coordinate_subset.py,sha256=KjltLEPbxMfyebwjG5mulyGCT5INtiItPq6ID6sP9jI,1289
|
89
89
|
ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py,sha256=_t4OKnYLzTjOhSkVTgT2307DQkz_DnGxqqLx8mmzLRA,9389
|
90
90
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_angular_velocity.py,sha256=xjyGREKpxDuT8gjtBPkV4osfW-6UyWv9hgvBXZVb_wk,625
|
91
91
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_attitude_quaternion.py,sha256=UEu9ApzQLmT87eeISw6_gcHTlX-4b2scIvHz-uE1p_c,393
|
92
92
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_position.py,sha256=XvHdk1KjacTwtkgx2jUAc9I9N3nvjPDv03FAanpv8jQ,2702
|
93
93
|
ostk/astrodynamics/test/trajectory/state/coordinate_subset/test_cartesian_velocity.py,sha256=-kd5TZO5TICihbkqDTew2i_tDpggdpe3Yf23046FATM,3057
|
94
|
-
open_space_toolkit_astrodynamics-9.
|
95
|
-
open_space_toolkit_astrodynamics-9.
|
96
|
-
open_space_toolkit_astrodynamics-9.
|
97
|
-
open_space_toolkit_astrodynamics-9.
|
98
|
-
open_space_toolkit_astrodynamics-9.
|
94
|
+
open_space_toolkit_astrodynamics-9.5.1.dist-info/METADATA,sha256=SnSApapQCvGrDtsRxuvNDEMnBLFIKveAo7veASPUWyQ,1942
|
95
|
+
open_space_toolkit_astrodynamics-9.5.1.dist-info/WHEEL,sha256=uB5vyLu5FjXBtaffidQd32CfRXuOj_Nofldz4r8m62s,112
|
96
|
+
open_space_toolkit_astrodynamics-9.5.1.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
|
97
|
+
open_space_toolkit_astrodynamics-9.5.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
|
98
|
+
open_space_toolkit_astrodynamics-9.5.1.dist-info/RECORD,,
|
Binary file
|
ostk/astrodynamics/converters.py
CHANGED
@@ -61,9 +61,7 @@ def coerce_to_instant(value: Instant | datetime | str) -> Instant:
|
|
61
61
|
raise TypeError("Argument must be a datetime, an Instant, or a str.")
|
62
62
|
|
63
63
|
|
64
|
-
def coerce_to_iso(
|
65
|
-
value: Instant | datetime | str, timespec: str = "microseconds"
|
66
|
-
) -> Instant:
|
64
|
+
def coerce_to_iso(value: Instant | datetime | str, timespec: str = "microseconds") -> str:
|
67
65
|
"""
|
68
66
|
Return an ISO string from value.
|
69
67
|
|
Binary file
|
@@ -131,23 +131,20 @@ class TestManeuver:
|
|
131
131
|
self,
|
132
132
|
maneuver: Maneuver,
|
133
133
|
):
|
134
|
-
assert
|
135
|
-
|
136
|
-
assert
|
137
|
-
1.26e-4, rel=1e-4
|
138
|
-
)
|
139
|
-
|
140
|
-
assert float(
|
134
|
+
assert maneuver.calculate_delta_v() is not None
|
135
|
+
assert maneuver.calculate_delta_mass().in_kilograms() is not None
|
136
|
+
assert (
|
141
137
|
maneuver.calculate_average_thrust(
|
142
138
|
initial_spacecraft_mass=Mass(100.0, Mass.Unit.Kilogram)
|
143
139
|
)
|
144
|
-
|
145
|
-
|
146
|
-
assert
|
140
|
+
is not None
|
141
|
+
)
|
142
|
+
assert (
|
147
143
|
maneuver.calculate_average_specific_impulse(
|
148
144
|
initial_spacecraft_mass=Mass(100.0, Mass.Unit.Kilogram)
|
149
145
|
)
|
150
|
-
|
146
|
+
is not None
|
147
|
+
)
|
151
148
|
|
152
149
|
def test_to_tabulated_dynamics(
|
153
150
|
self,
|
@@ -86,9 +86,9 @@ class TestUtility:
|
|
86
86
|
position: Position,
|
87
87
|
environment: Environment,
|
88
88
|
):
|
89
|
-
time_lla_aer: float[
|
90
|
-
|
91
|
-
|
89
|
+
time_lla_aer: float[Instant, float, float, float, float, float, float] = (
|
90
|
+
utilities.compute_time_lla_aer_state(state, position, environment)
|
91
|
+
)
|
92
92
|
|
93
93
|
assert time_lla_aer is not None
|
94
94
|
assert len(time_lla_aer) == 7
|
@@ -41,6 +41,15 @@ class TestPass:
|
|
41
41
|
def test_get_duration(self, pass_: Pass):
|
42
42
|
assert pass_.get_duration() is not None
|
43
43
|
|
44
|
+
def test_get_start_instant(self, pass_: Pass):
|
45
|
+
assert pass_.get_start_instant() is not None
|
46
|
+
|
47
|
+
def test_get_end_instant(self, pass_: Pass):
|
48
|
+
assert pass_.get_end_instant() is not None
|
49
|
+
|
50
|
+
def test_get_interval(self, pass_: Pass):
|
51
|
+
assert pass_.get_interval() is not None
|
52
|
+
|
44
53
|
def test_get_instant_at_ascending_node(self, pass_: Pass):
|
45
54
|
assert pass_.get_instant_at_ascending_node() is not None
|
46
55
|
|
@@ -30,6 +30,9 @@ class TestCoordinateSubset:
|
|
30
30
|
def test_ne(self, coordinate_subset: CoordinateSubset):
|
31
31
|
assert (coordinate_subset != coordinate_subset) == False
|
32
32
|
|
33
|
+
def test_hash(self, coordinate_subset: CoordinateSubset):
|
34
|
+
assert hash(coordinate_subset) is not None
|
35
|
+
|
33
36
|
def test_get_id(self, coordinate_subset: CoordinateSubset):
|
34
37
|
assert coordinate_subset.get_id() is not None
|
35
38
|
|
@@ -46,12 +46,12 @@ class TestLocalOrbitalFrameFactory:
|
|
46
46
|
assert LocalOrbitalFrameFactory.TNW(Frame.GCRF()) is not None
|
47
47
|
assert LocalOrbitalFrameFactory.VVLH(Frame.GCRF()) is not None
|
48
48
|
|
49
|
-
def
|
49
|
+
def test_accessors(
|
50
50
|
self,
|
51
51
|
parent_frame: Frame,
|
52
52
|
local_orbital_frame_factory: LocalOrbitalFrameFactory,
|
53
53
|
):
|
54
|
-
assert parent_frame == local_orbital_frame_factory.
|
54
|
+
assert parent_frame == local_orbital_frame_factory.access_parent_frame()
|
55
55
|
|
56
56
|
def test_generate_frame(
|
57
57
|
self,
|
@@ -58,6 +58,22 @@ class TestOrbit:
|
|
58
58
|
assert state is not None
|
59
59
|
assert isinstance(state, State)
|
60
60
|
|
61
|
+
@pytest.mark.parametrize(
|
62
|
+
"frame_type",
|
63
|
+
[
|
64
|
+
(Orbit.FrameType.NED),
|
65
|
+
(Orbit.FrameType.LVLH),
|
66
|
+
(Orbit.FrameType.VVLH),
|
67
|
+
(Orbit.FrameType.LVLHGD),
|
68
|
+
(Orbit.FrameType.LVLHGDGT),
|
69
|
+
(Orbit.FrameType.QSW),
|
70
|
+
(Orbit.FrameType.TNW),
|
71
|
+
(Orbit.FrameType.VNC),
|
72
|
+
],
|
73
|
+
)
|
74
|
+
def test_get_orbital_frame(self, orbit: Orbit, frame_type: Orbit.FrameType):
|
75
|
+
assert orbit.get_orbital_frame(frame_type) is not None
|
76
|
+
|
61
77
|
def test_get_revolution_number_at(self, orbit: Orbit):
|
62
78
|
assert (
|
63
79
|
orbit.get_revolution_number_at(
|
@@ -82,6 +98,20 @@ class TestOrbit:
|
|
82
98
|
assert isinstance(pass_, Pass)
|
83
99
|
assert pass_.is_defined()
|
84
100
|
|
101
|
+
assert (
|
102
|
+
orbit.get_pass_with_revolution_number(2, Duration.minutes(10.0)) is not None
|
103
|
+
)
|
104
|
+
|
105
|
+
def test_get_passes_within_interval(self, orbit: Orbit):
|
106
|
+
passes: list[Pass] = orbit.get_passes_within_interval(
|
107
|
+
Interval.closed(
|
108
|
+
Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
109
|
+
Instant.date_time(DateTime(2018, 1, 1, 0, 10, 0), Scale.UTC),
|
110
|
+
)
|
111
|
+
)
|
112
|
+
|
113
|
+
assert len(passes) > 0
|
114
|
+
|
85
115
|
def test_undefined(self):
|
86
116
|
assert Orbit.undefined().is_defined() is False
|
87
117
|
|
@@ -151,6 +181,16 @@ class TestOrbit:
|
|
151
181
|
argument_of_latitude=Angle.degrees(50.0),
|
152
182
|
).is_defined()
|
153
183
|
|
154
|
-
def test_compute_passes(self,
|
155
|
-
passes: list[tuple[int, Pass]] =
|
184
|
+
def test_compute_passes(self, states: list[State]):
|
185
|
+
passes: list[tuple[int, Pass]] = Orbit.compute_passes(states, 1)
|
156
186
|
assert passes is not None
|
187
|
+
|
188
|
+
def test_compute_passes_with_model(self, orbit: Orbit):
|
189
|
+
passes: list[tuple[int, Pass]] = Orbit.compute_passes_with_model(
|
190
|
+
model=orbit.access_kepler_model(),
|
191
|
+
start_instant=Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
|
192
|
+
end_instant=Instant.date_time(DateTime(2018, 1, 1, 0, 10, 0), Scale.UTC),
|
193
|
+
initial_revolution_number=1,
|
194
|
+
)
|
195
|
+
|
196
|
+
assert len(passes) > 0
|
File without changes
|
File without changes
|
File without changes
|