open-space-toolkit-astrodynamics 2.4.1__py311-none-any.whl → 5.0.0__py311-none-any.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.
Files changed (77) hide show
  1. {open_space_toolkit_astrodynamics-2.4.1.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/METADATA +2 -2
  2. open_space_toolkit_astrodynamics-5.0.0.dist-info/RECORD +25 -0
  3. ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so +0 -0
  4. ostk/astrodynamics/__init__.py +6 -0
  5. ostk/astrodynamics/converters.py +1 -1
  6. ostk/astrodynamics/{libopen-space-toolkit-astrodynamics.so.2 → libopen-space-toolkit-astrodynamics.so.5} +0 -0
  7. ostk/astrodynamics/pytrajectory/pystate.py +36 -0
  8. ostk/astrodynamics/test/test_access.py +1 -1
  9. ostk/astrodynamics/test/test_converters.py +1 -1
  10. ostk/astrodynamics/test/test_event_condition.py +27 -2
  11. ostk/astrodynamics/test/test_import.py +2 -2
  12. ostk/astrodynamics/test/test_trajectory.py +1 -1
  13. ostk/astrodynamics/viewer.py +1 -1
  14. open_space_toolkit_astrodynamics-2.4.1.dist-info/RECORD +0 -83
  15. ostk/astrodynamics/test/access/__init__.py +0 -1
  16. ostk/astrodynamics/test/access/test_generator.py +0 -248
  17. ostk/astrodynamics/test/conjunction/messages/ccsds/__init__.py +0 -1
  18. ostk/astrodynamics/test/conjunction/messages/ccsds/conftest.py +0 -325
  19. ostk/astrodynamics/test/conjunction/messages/ccsds/data/cdm.json +0 -303
  20. ostk/astrodynamics/test/conjunction/messages/ccsds/test_cdm.py +0 -416
  21. ostk/astrodynamics/test/event_condition/test_angular_condition.py +0 -113
  22. ostk/astrodynamics/test/event_condition/test_boolean_condition.py +0 -55
  23. ostk/astrodynamics/test/event_condition/test_coe_condition.py +0 -91
  24. ostk/astrodynamics/test/event_condition/test_instant_condition.py +0 -48
  25. ostk/astrodynamics/test/event_condition/test_logical_condition.py +0 -120
  26. ostk/astrodynamics/test/event_condition/test_real_condition.py +0 -53
  27. ostk/astrodynamics/test/flight/__init__.py +0 -1
  28. ostk/astrodynamics/test/flight/profile/__init__.py +0 -1
  29. ostk/astrodynamics/test/flight/profile/test_state.py +0 -144
  30. ostk/astrodynamics/test/flight/system/__init__.py +0 -1
  31. ostk/astrodynamics/test/flight/system/dynamics/__init__.py +0 -1
  32. ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py +0 -128
  33. ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py +0 -58
  34. ostk/astrodynamics/test/flight/system/dynamics/test_dynamics.py +0 -37
  35. ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py +0 -51
  36. ostk/astrodynamics/test/flight/system/dynamics/test_third_body_gravity.py +0 -67
  37. ostk/astrodynamics/test/flight/system/dynamics/thruster/test_constant_thrust.py +0 -143
  38. ostk/astrodynamics/test/flight/system/test_propulsion_system.py +0 -46
  39. ostk/astrodynamics/test/flight/system/test_satellite_system.py +0 -77
  40. ostk/astrodynamics/test/flight/test_profile.py +0 -153
  41. ostk/astrodynamics/test/flight/test_system.py +0 -55
  42. ostk/astrodynamics/test/solvers/__init__.py +0 -1
  43. ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +0 -153
  44. ostk/astrodynamics/test/trajectory/__init__.py +0 -1
  45. ostk/astrodynamics/test/trajectory/orbit/__init__.py +0 -1
  46. ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py +0 -1
  47. ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py +0 -1
  48. ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py +0 -18
  49. ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml +0 -44
  50. ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py +0 -108
  51. ostk/astrodynamics/test/trajectory/orbit/models/__init__.py +0 -1
  52. ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py +0 -1
  53. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py +0 -112
  54. ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py +0 -1
  55. ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py +0 -331
  56. ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py +0 -130
  57. ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py +0 -195
  58. ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py +0 -1
  59. ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py +0 -380
  60. ostk/astrodynamics/test/trajectory/orbit/test_model.py +0 -1
  61. ostk/astrodynamics/test/trajectory/orbit/test_pass.py +0 -55
  62. ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py +0 -103
  63. ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py +0 -113
  64. ostk/astrodynamics/test/trajectory/state/test_coordinates_broker.py +0 -71
  65. ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py +0 -43
  66. ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +0 -242
  67. ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py +0 -82
  68. ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py +0 -64
  69. ostk/astrodynamics/test/trajectory/test_model.py +0 -1
  70. ostk/astrodynamics/test/trajectory/test_orbit.py +0 -92
  71. ostk/astrodynamics/test/trajectory/test_propagator.py +0 -387
  72. ostk/astrodynamics/test/trajectory/test_state.py +0 -134
  73. ostk/astrodynamics/test/trajectory/test_trajectory_segment.py +0 -136
  74. {open_space_toolkit_astrodynamics-2.4.1.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/WHEEL +0 -0
  75. {open_space_toolkit_astrodynamics-2.4.1.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/top_level.txt +0 -0
  76. {open_space_toolkit_astrodynamics-2.4.1.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/zip-safe +0 -0
  77. /ostk/{__init__.py → astrodynamics/pytrajectory/__init__.py} +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: open-space-toolkit-astrodynamics
3
- Version: 2.4.1
3
+ Version: 5.0.0
4
4
  Summary: Orbit, attitude, access.
5
5
  Author: Open Space Collective
6
6
  Author-email: contact@open-space-collective.org
@@ -11,7 +11,7 @@ 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-physics (~=2.1.0)
14
+ Requires-Dist: open-space-toolkit-physics (~=4.0.0)
15
15
 
16
16
  # Open Space Toolkit ▸ Astrodynamics
17
17
 
@@ -0,0 +1,25 @@
1
+ ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so,sha256=F7k4Rhyme-7G_yz53sJGe6TzaFl2I0cC3q93xW3KwjA,1931000
2
+ ostk/astrodynamics/__init__.py,sha256=3gWyqFIbhAfcdeMhmfBPQPlPQTmaOzm-6flkJe745Zk,251
3
+ ostk/astrodynamics/converters.py,sha256=WIOxUOFGrdFDIKfu0-N8jmCF0GOMMsw2aB_Wy0eXHAQ,3500
4
+ ostk/astrodynamics/display.py,sha256=y9FnoQbPFGM6LzkUdgXgeqtuVGhv57GuTKbeDdcFPgw,6306
5
+ ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.5,sha256=JZAnOJR_rPYM2BKc1eHSLsayC7pJBJ4TjWRBtOgMsPU,90408968
6
+ ostk/astrodynamics/utilities.py,sha256=NbeKN_CtcCRHIinhoNWTEosBMR7xc924S-ZFD97mduw,4478
7
+ ostk/astrodynamics/viewer.py,sha256=B5m-eNWQrd4vIBqmT7-400IfHldxU5lFDTLpfHiiHj4,8910
8
+ ostk/astrodynamics/pytrajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
9
+ ostk/astrodynamics/pytrajectory/pystate.py,sha256=ceNZWYCqtsXWJlE6JKDxB5qn5ixTWGOwrYXge21XPmk,1037
10
+ ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
11
+ ostk/astrodynamics/test/conftest.py,sha256=J3SbQibnMVaPktAF6Z6cwVCa7xhW3uXpkOJRom6YtCo,2719
12
+ ostk/astrodynamics/test/test_access.py,sha256=6sWINwQw-KMKKOfuJIJxyIIrmT513VjvoXt2rNPpm0w,3959
13
+ ostk/astrodynamics/test/test_converters.py,sha256=Uw_SZHwnt5OYM8OtF9_EiBK8xDPWQUE3o_mJIdyWQxU,5845
14
+ ostk/astrodynamics/test/test_display.py,sha256=8YeiYRYMpokzqprbRoDBI_xhHI5B8uxcdSzmqmF3AIc,3738
15
+ ostk/astrodynamics/test/test_event_condition.py,sha256=lehMGGST5cd5DQTDRdQnQr2eHVAmJwhXZdiIKchogNE,1423
16
+ ostk/astrodynamics/test/test_import.py,sha256=stS8jK9HiXyzRWjtDvaTqUrzCrOVnYVX5CkmQf7MJsA,1201
17
+ ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
18
+ ostk/astrodynamics/test/test_trajectory.py,sha256=pvv4GQsvtU0XfWYk-F-oQNgo8ciFQBgzeJ4FojZDW-A,1364
19
+ ostk/astrodynamics/test/test_utilities.py,sha256=edAPLXNMflCPa0gzhU4e05pa6HbAq7UV0JzMMRx3VlQ,3252
20
+ ostk/astrodynamics/test/test_viewer.py,sha256=i164XnG6n-_FteiO6rjXA7GGsJhMdmT-508DpKaveVY,3957
21
+ open_space_toolkit_astrodynamics-5.0.0.dist-info/METADATA,sha256=gvqV4dmmI5zidfxBZjenf6Ymg7x9VqpWpI9rd6ZNBRc,1779
22
+ open_space_toolkit_astrodynamics-5.0.0.dist-info/WHEEL,sha256=LypFpa2XcEE7xO2Jrj0iI4pUztksD6mL7bVYmw0rTlI,94
23
+ open_space_toolkit_astrodynamics-5.0.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
24
+ open_space_toolkit_astrodynamics-5.0.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
25
+ open_space_toolkit_astrodynamics-5.0.0.dist-info/RECORD,,
@@ -3,3 +3,9 @@
3
3
  from ostk.physics import *
4
4
 
5
5
  from .OpenSpaceToolkitAstrodynamicsPy import *
6
+
7
+ from .pytrajectory.pystate import State as PyState
8
+
9
+ trajectory.State = (
10
+ PyState # Override the pure c++ State class with the modified Python one
11
+ )
@@ -4,7 +4,7 @@ from datetime import datetime, timedelta, timezone
4
4
 
5
5
  import numpy as np
6
6
 
7
- from ostk.mathematics.geometry.d3.transformations.rotations import Quaternion
7
+ from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
8
8
 
9
9
  from ostk.physics.time import Instant
10
10
  from ostk.physics.time import Interval
@@ -0,0 +1,36 @@
1
+ # Apache License 2.0
2
+
3
+
4
+ # Python-only State functionality
5
+ import numpy as np
6
+
7
+ from ostk.physics.coordinate import Frame
8
+ from ostk.physics.time import Instant
9
+
10
+ from ostk.astrodynamics.trajectory import State, StateBuilder
11
+
12
+
13
+ @staticmethod
14
+ def custom_class_generator(frame: Frame, coordinates_subsets: list) -> type:
15
+ """
16
+ Emit a custom class type for States. This is meta-programming syntactic sugar on top of the StateBuilder class.
17
+
18
+ StateType = State.template(frame, coordinates_subsets)
19
+ state = StateType(instant, coordinates)
20
+
21
+ is equivalent to
22
+
23
+ state_builder = StateBuilder(frame, coordinates_subsets)
24
+ state = state_builder.build(instant, coordinates)
25
+ """
26
+
27
+ class StateTemplateType(State):
28
+ state_builder: StateBuilder = StateBuilder(frame, coordinates_subsets)
29
+
30
+ def __init__(self, instant: Instant, coordinates: np.ndarray):
31
+ super().__init__(StateTemplateType.state_builder.build(instant, coordinates))
32
+
33
+ return StateTemplateType
34
+
35
+
36
+ State.template = custom_class_generator
@@ -11,7 +11,7 @@ import ostk.physics as physics
11
11
  import ostk.astrodynamics as astrodynamics
12
12
 
13
13
  RealInterval = mathematics.objects.RealInterval
14
- Quaternion = mathematics.geometry.d3.transformations.rotations.Quaternion
14
+ Quaternion = mathematics.geometry.d3.transformation.rotation.Quaternion
15
15
  Length = physics.units.Length
16
16
  Angle = physics.units.Angle
17
17
  DateTime = physics.time.DateTime
@@ -4,7 +4,7 @@ from datetime import datetime, timedelta, timezone
4
4
 
5
5
  import numpy as np
6
6
 
7
- from ostk.mathematics.geometry.d3.transformations.rotations import Quaternion
7
+ from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
8
8
 
9
9
  from ostk.physics.time import Instant
10
10
  from ostk.physics.time import Interval
@@ -11,14 +11,31 @@ def name() -> str:
11
11
 
12
12
 
13
13
  @pytest.fixture
14
- def event_condition(name: str) -> EventCondition:
14
+ def evaluator() -> callable:
15
+ return lambda state: 0.0
16
+
17
+
18
+ @pytest.fixture
19
+ def target_value() -> float:
20
+ return 0.0
21
+
22
+
23
+ @pytest.fixture
24
+ def target(target_value: float) -> EventCondition.Target:
25
+ return EventCondition.Target(target_value, EventCondition.Target.Type.Absolute)
26
+
27
+
28
+ @pytest.fixture
29
+ def event_condition(
30
+ name: str, evaluator: callable, target: EventCondition.Target
31
+ ) -> EventCondition:
15
32
  class MyEventCondition(EventCondition):
16
33
  def is_satisfied(
17
34
  self, current_state_vector, current_time, previous_state_vector, previous_time
18
35
  ):
19
36
  return current_state_vector[0] > 0.0 and previous_state_vector[0] < 0.0
20
37
 
21
- return MyEventCondition(name)
38
+ return MyEventCondition(name, evaluator, target)
22
39
 
23
40
 
24
41
  class TestEventCondition:
@@ -27,3 +44,11 @@ class TestEventCondition:
27
44
 
28
45
  def test_get_name(self, event_condition: EventCondition, name: str):
29
46
  assert event_condition.get_name() == name
47
+
48
+ def test_get_evaluator(self, event_condition: EventCondition):
49
+ assert event_condition.get_evaluator() is not None
50
+
51
+ def test_get_target(
52
+ self, event_condition: EventCondition, target: EventCondition.Target
53
+ ):
54
+ assert event_condition.get_target() == target
@@ -18,8 +18,8 @@ class TestImport:
18
18
  from ostk.astrodynamics.flight import Profile
19
19
  from ostk.astrodynamics.flight import System
20
20
  from ostk.astrodynamics.flight.system import SatelliteSystem
21
- from ostk.astrodynamics.flight.system.dynamics import CentralBodyGravity
22
- from ostk.astrodynamics.flight.system.dynamics import AtmosphericDrag
21
+ from ostk.astrodynamics.dynamics import CentralBodyGravity
22
+ from ostk.astrodynamics.dynamics import AtmosphericDrag
23
23
  from ostk.astrodynamics import Access
24
24
  from ostk.astrodynamics.access import Generator
25
25
  from ostk.astrodynamics.trajectory.state import NumericalSolver
@@ -7,7 +7,7 @@ import ostk.physics as physics
7
7
  import ostk.astrodynamics as astrodynamics
8
8
 
9
9
  RealInterval = mathematics.objects.RealInterval
10
- Quaternion = mathematics.geometry.d3.transformations.rotations.Quaternion
10
+ Quaternion = mathematics.geometry.d3.transformation.rotation.Quaternion
11
11
  Length = physics.units.Length
12
12
  Angle = physics.units.Angle
13
13
  DateTime = physics.time.DateTime
@@ -14,7 +14,7 @@ try:
14
14
  except ImportError:
15
15
  ...
16
16
 
17
- from ostk.mathematics.geometry.d3.transformations.rotations import Quaternion
17
+ from ostk.mathematics.geometry.d3.transformation.rotation import Quaternion
18
18
 
19
19
  from ostk.physics.units import Length
20
20
  from ostk.physics.units import Angle
@@ -1,83 +0,0 @@
1
- ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
2
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so,sha256=Z2xE9q-OIGIYm85CZRigSJodPG6Ej3aRUIEam_i2taY,1410488
3
- ostk/astrodynamics/__init__.py,sha256=BE7yyrOnPqFCTPT3GhYEI4IWR5nzs96VSjKphhQ09ew,97
4
- ostk/astrodynamics/converters.py,sha256=sBZ3_JMjowWbQ9gBPA2cSEkbBfAwXmt1IBbLks76-Vk,3502
5
- ostk/astrodynamics/display.py,sha256=y9FnoQbPFGM6LzkUdgXgeqtuVGhv57GuTKbeDdcFPgw,6306
6
- ostk/astrodynamics/libopen-space-toolkit-astrodynamics.so.2,sha256=T_TuCtec8GdjMD4y6RUGDQwbF-YE-opFdCWDAajjo3o,69733560
7
- ostk/astrodynamics/utilities.py,sha256=NbeKN_CtcCRHIinhoNWTEosBMR7xc924S-ZFD97mduw,4478
8
- ostk/astrodynamics/viewer.py,sha256=_4uucNtZrIADtKtEYHbiu91RVVvKRG3vPULUAshPLJU,8912
9
- ostk/astrodynamics/test/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
10
- ostk/astrodynamics/test/conftest.py,sha256=J3SbQibnMVaPktAF6Z6cwVCa7xhW3uXpkOJRom6YtCo,2719
11
- ostk/astrodynamics/test/test_access.py,sha256=4I5r4Hukv0fkByHVARhaYpcDu5EOQ7dtbs-ZK7siTqg,3961
12
- ostk/astrodynamics/test/test_converters.py,sha256=ktkLH0xpeRdQ7kN6i5a_agmGqovUxVtCwlwcCdCUaa0,5847
13
- ostk/astrodynamics/test/test_display.py,sha256=8YeiYRYMpokzqprbRoDBI_xhHI5B8uxcdSzmqmF3AIc,3738
14
- ostk/astrodynamics/test/test_event_condition.py,sha256=tzs0_DzVjz7lPfq12MZ0b65iFejcTAK59u10sZnm8sU,757
15
- ostk/astrodynamics/test/test_import.py,sha256=4eRUkGnhp9BaBOOUhHi97XFX9aPk-IpAbGrhz-dbrvY,1229
16
- ostk/astrodynamics/test/test_root_solver.py,sha256=hQ8O6g-WP49gZH_H3Rdufv0F0gQorpzJyIcjBGGUQ34,1831
17
- ostk/astrodynamics/test/test_trajectory.py,sha256=4AhlAaIrCrP17ZycJqYlYskj8SC2MH7fp3_4eqWdF9s,1366
18
- ostk/astrodynamics/test/test_utilities.py,sha256=edAPLXNMflCPa0gzhU4e05pa6HbAq7UV0JzMMRx3VlQ,3252
19
- ostk/astrodynamics/test/test_viewer.py,sha256=i164XnG6n-_FteiO6rjXA7GGsJhMdmT-508DpKaveVY,3957
20
- ostk/astrodynamics/test/access/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
21
- ostk/astrodynamics/test/access/test_generator.py,sha256=6cwC5GGvnWLxPXmgRQ-N7tjorGUfPxA8qFcdGaTmpp4,8038
22
- ostk/astrodynamics/test/conjunction/messages/ccsds/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
23
- ostk/astrodynamics/test/conjunction/messages/ccsds/conftest.py,sha256=xyTd24828Ue2HgOWY8UhizIc5mzgRgoH2VSOfVfKCdw,14632
24
- ostk/astrodynamics/test/conjunction/messages/ccsds/test_cdm.py,sha256=SqtYXB8qhKzbQEWmCzz13xi0Uu64-VSKXuMObcFV7EI,18518
25
- ostk/astrodynamics/test/conjunction/messages/ccsds/data/cdm.json,sha256=-CL8Bu-ivigzkrqHs9Q5snSubHJ_D0YMroatEInkidc,12965
26
- ostk/astrodynamics/test/event_condition/test_angular_condition.py,sha256=OFlEbUDWaUs1kjUSf0AhIsOKV5qSUj6_sOxLQK5q8AU,3120
27
- ostk/astrodynamics/test/event_condition/test_boolean_condition.py,sha256=Ng6FLKD8XoUHUz6-gi3wvrYhSGNSB_iJ_n89ajN4O3s,1580
28
- ostk/astrodynamics/test/event_condition/test_coe_condition.py,sha256=fICMMZLyTYudPw1vwMjskWvDFTLH4MvqyPAZKlXKfeA,2407
29
- ostk/astrodynamics/test/event_condition/test_instant_condition.py,sha256=Qr5dN6nrK7XDff7L4vnGCqasMK-Fa6qvxwy_U0xgH5M,1438
30
- ostk/astrodynamics/test/event_condition/test_logical_condition.py,sha256=09h5TYWtwGt4NQW3k_tziiVs0Q2981rNII9wyKg7p2Q,3321
31
- ostk/astrodynamics/test/event_condition/test_real_condition.py,sha256=vlNpeLwUtCtldfmL04aYwF2uLKw-dKfywPOEBn5v7J8,1507
32
- ostk/astrodynamics/test/flight/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
33
- ostk/astrodynamics/test/flight/test_profile.py,sha256=27g5Atvr2RGslvFujdP90cA9qldkNb7C0U1RgbOAws0,5197
34
- ostk/astrodynamics/test/flight/test_system.py,sha256=YPrjoV3o67_1zCXCZqohlSAR7zkU0LXP2fF20M2s0C8,1326
35
- ostk/astrodynamics/test/flight/profile/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
36
- ostk/astrodynamics/test/flight/profile/test_state.py,sha256=49UyPz6p9Q_RYKVBiLgW_WHo4A7JUZtacGMhQ9ERCdc,4268
37
- ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
38
- ostk/astrodynamics/test/flight/system/test_propulsion_system.py,sha256=ei-25MZczwzhiV5QVB9LXdmBY3VnBHr1DEVn_Zqtb1A,1027
39
- ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=-5KOGVTWRIpY1jcRc0xGX6N9oRbUT_EexzB9jZFsZQg,2208
40
- ostk/astrodynamics/test/flight/system/dynamics/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
41
- ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py,sha256=bTFDvI1riLFlgKzs3TRt8dafFtb--L_AMEDuuRWEgGc,3793
42
- ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py,sha256=r3JIIX7cD63BhrgvLtjFaK7ew1BqHdKP5_VxwGmuv1Q,1818
43
- ostk/astrodynamics/test/flight/system/dynamics/test_dynamics.py,sha256=arNkAOj2y4CDmc9CXxItbFtC4QYjaByuJefdi5S6alw,914
44
- ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py,sha256=ZVVewpqZwqiBLDqoNQDHDgDodtj6_M0J6ZmgHe_1gz8,1646
45
- ostk/astrodynamics/test/flight/system/dynamics/test_third_body_gravity.py,sha256=Z8OkM-EFafFpWziu3bfatlSlZA4Tic2fsVLU35rDp5E,1915
46
- ostk/astrodynamics/test/flight/system/dynamics/thruster/test_constant_thrust.py,sha256=MP6ocA0umkASJfidTni62APX9tmSxxXFQ4dxvMTKrH4,4480
47
- ostk/astrodynamics/test/solvers/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
48
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py,sha256=s7r7VelXx1_b-6wO_GyOlmxlsfA4I_zpxrWojriQls8,4867
49
- ostk/astrodynamics/test/trajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
50
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_direction.py,sha256=DJltOvRcxaEJbZsH_PQe7oPdN9KRE6ufXmJ1kqUw6O4,2518
51
- ostk/astrodynamics/test/trajectory/test_local_orbital_frame_factory.py,sha256=FziYh9XxD2FEuj6WhnqOe5mF9twLTQtvcem8KzQZKXg,1864
52
- ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
53
- ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=SlCBZ_broPaJ6L8khMuvbdPem9-zmqG6IZwxr9cECB4,3155
54
- ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=e_fmvvaoMhYs0ApqCgbzfBYrYPaGOIuzouo-6x2jbK4,12504
55
- ostk/astrodynamics/test/trajectory/test_state.py,sha256=Kr4IbGBc1TNGdEOsXFLGSQGC9SwCER-lJ6E-xumqgN4,3829
56
- ostk/astrodynamics/test/trajectory/test_trajectory_segment.py,sha256=eOCI9GLcAnMrwXkdaHbd0thnyNDCyBgAemhuMO6B7xY,3863
57
- ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
58
- ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
59
- ostk/astrodynamics/test/trajectory/orbit/test_pass.py,sha256=MtPRKhVz4hCzfFuE0p1x89Ps68M9s7miT7VtPIDVeOo,1898
60
- ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
61
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
62
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py,sha256=O75ywkPJjoFp0uKptCu4C2tGMRaGN-8NVFVhps85eWE,379
63
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py,sha256=wfxuccqIF2odRA9Dc-8wtKZ8t__4KJ9HVhN-il284OU,3893
64
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml,sha256=DqIdfLCPD9oV4qDvgq35fIT8Gb8zgtrHr5Nx53InSQM,1363
65
- ostk/astrodynamics/test/trajectory/orbit/models/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
66
- ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py,sha256=sf1FpdYyiGyWcal-CwVfelW1k-HYGlIdbJdcbOi9-lY,3372
67
- ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py,sha256=S5tndRVlNd-_1WvKlH_Jo2SX5gEzVkPC3lKdYpzBfx0,6720
68
- ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
69
- ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py,sha256=tL3gGDitdEYCCRwGtu2RP-9d4JWsujV53ck9DRkyeG4,11183
70
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
71
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py,sha256=uWgUO9zHrcqEKGJ-SWUiHfEbWDm8YcgptnS2I2y_V1U,2728
72
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
73
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py,sha256=lbPqHd87ExTNbBFcFSTMWRnWbpe_4BDJ2g2APlQLJkY,11486
74
- ostk/astrodynamics/test/trajectory/state/test_coordinates_broker.py,sha256=kB_gsJHxvCDY9kfuqVkwHt5ZmMuaAoRk_3YZGxoXOwg,2515
75
- ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py,sha256=eMmifR5rJMk2yFN7pfAHq2Ub3FPvknb6gvS-nBDidro,1201
76
- ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py,sha256=ZTWRSVFOJnjzQP7JDsHZxvZ4ldyDHmXTptG2csC7_ic,7480
77
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py,sha256=V5d7UnV6KIJjJvh5R0i3imRfyN04JCDvCUsKdvfKmhE,2708
78
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py,sha256=5a7yeOVt7gY4oQdINSElb_U2jznJmuWPrT_YJrI6KaM,3070
79
- open_space_toolkit_astrodynamics-2.4.1.dist-info/METADATA,sha256=DAXVfJGTx8JV0XG2LD28nREtjAXnKGISMsDbD7P4HTY,1779
80
- open_space_toolkit_astrodynamics-2.4.1.dist-info/WHEEL,sha256=LypFpa2XcEE7xO2Jrj0iI4pUztksD6mL7bVYmw0rTlI,94
81
- open_space_toolkit_astrodynamics-2.4.1.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
82
- open_space_toolkit_astrodynamics-2.4.1.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
83
- open_space_toolkit_astrodynamics-2.4.1.dist-info/RECORD,,
@@ -1 +0,0 @@
1
- # Apache License 2.0
@@ -1,248 +0,0 @@
1
- # Apache License 2.0
2
-
3
- import pytest
4
-
5
- from ostk.mathematics.objects import RealInterval
6
-
7
- from ostk.physics.units import Length
8
- from ostk.physics.units import Angle
9
- from ostk.physics.time import DateTime
10
- from ostk.physics.time import Scale
11
- from ostk.physics.time import Duration
12
- from ostk.physics.time import Instant
13
- from ostk.physics.time import Interval
14
- from ostk.physics import Environment
15
- from ostk.physics.environment.objects import Celestial
16
-
17
- from ostk.astrodynamics import Trajectory
18
- from ostk.astrodynamics.trajectory import Orbit
19
- from ostk.astrodynamics.trajectory.orbit.models import Kepler
20
- from ostk.astrodynamics.trajectory.orbit.models.kepler import COE
21
- from ostk.astrodynamics import Access
22
- from ostk.astrodynamics.access import Generator
23
-
24
-
25
- @pytest.fixture
26
- def environment() -> Environment:
27
- return Environment.default()
28
-
29
-
30
- @pytest.fixture
31
- def earth(environment: Environment) -> Celestial:
32
- return environment.access_celestial_object_with_name("Earth")
33
-
34
-
35
- @pytest.fixture
36
- def generator(environment: Environment) -> Generator:
37
- return Generator(
38
- environment=environment,
39
- aer_filter=lambda aer: True,
40
- access_filter=lambda access: True,
41
- state_filter=lambda state_1, state_2: True,
42
- )
43
-
44
-
45
- @pytest.fixture
46
- def from_trajectory(earth: Celestial) -> Trajectory:
47
- return Orbit(
48
- model=Kepler(
49
- coe=COE(
50
- semi_major_axis=Length.kilometers(7000.0),
51
- eccentricity=0.0,
52
- inclination=Angle.degrees(45.0),
53
- raan=Angle.degrees(0.0),
54
- aop=Angle.degrees(0.0),
55
- true_anomaly=Angle.degrees(0.0),
56
- ),
57
- epoch=Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
58
- celestial_object=earth,
59
- perturbation_type=Kepler.PerturbationType.No,
60
- ),
61
- celestial_object=earth,
62
- )
63
-
64
-
65
- @pytest.fixture
66
- def to_trajectory(earth: Celestial) -> Trajectory:
67
- return Orbit(
68
- model=Kepler(
69
- coe=COE(
70
- semi_major_axis=Length.kilometers(7000.0),
71
- eccentricity=0.0,
72
- inclination=Angle.degrees(45.0),
73
- raan=Angle.degrees(180.0),
74
- aop=Angle.degrees(0.0),
75
- true_anomaly=Angle.degrees(180.0),
76
- ),
77
- epoch=Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
78
- celestial_object=earth,
79
- perturbation_type=Kepler.PerturbationType.No,
80
- ),
81
- celestial_object=earth,
82
- )
83
-
84
-
85
- class TestGenerator:
86
- def test_constructor_success_environment(self, environment: Environment):
87
- generator = Generator(
88
- environment=environment,
89
- )
90
-
91
- assert generator is not None
92
- assert isinstance(generator, Generator)
93
-
94
- def test_constructor_success_environment_aer_filter(self, environment: Environment):
95
- generator = Generator(
96
- environment=environment,
97
- aer_filter=lambda aer: True,
98
- )
99
-
100
- assert generator is not None
101
- assert isinstance(generator, Generator)
102
-
103
- def test_constructor_success_environment_access_filter(
104
- self,
105
- environment: Environment,
106
- ):
107
- generator = Generator(
108
- environment=environment,
109
- access_filter=lambda access: True,
110
- )
111
-
112
- assert generator is not None
113
- assert isinstance(generator, Generator)
114
-
115
- def test_constructor_success_environment_state_filter(
116
- self,
117
- environment: Environment,
118
- ):
119
- generator = Generator(
120
- environment=environment,
121
- state_filter=lambda state_1, state_2: True,
122
- )
123
-
124
- assert generator is not None
125
- assert isinstance(generator, Generator)
126
-
127
- def test_constructor_success_environment_step_tolerance(
128
- self,
129
- environment: Environment,
130
- ):
131
- generator = Generator(
132
- environment=environment,
133
- step=Duration.seconds(1.0),
134
- tolerance=Duration.minutes(1.0),
135
- )
136
-
137
- assert generator is not None
138
- assert isinstance(generator, Generator)
139
- assert generator.get_step() == Duration.seconds(1.0)
140
- assert generator.get_tolerance() == Duration.minutes(1.0)
141
-
142
- def test_getters_success(self, generator: Generator):
143
- assert generator.get_step() == Duration.minutes(1.0)
144
- assert generator.get_tolerance() == Duration.microseconds(1.0)
145
- assert generator.get_aer_filter() is not None
146
- assert generator.get_access_filter() is not None
147
- assert generator.get_state_filter() is not None
148
-
149
- def test_get_condition_function_success(
150
- self,
151
- generator: Generator,
152
- from_trajectory: Trajectory,
153
- to_trajectory: Trajectory,
154
- ):
155
- condition_function = generator.get_condition_function(
156
- from_trajectory=from_trajectory,
157
- to_trajectory=to_trajectory,
158
- )
159
-
160
- assert condition_function is not None
161
- assert (
162
- condition_function(
163
- Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC)
164
- )
165
- is True
166
- )
167
-
168
- def test_compute_accesses_success(
169
- self,
170
- generator: Generator,
171
- from_trajectory: Trajectory,
172
- to_trajectory: Trajectory,
173
- ):
174
- accesses = generator.compute_accesses(
175
- interval=Interval.closed(
176
- Instant.date_time(DateTime(2018, 1, 1, 0, 0, 0), Scale.UTC),
177
- Instant.date_time(DateTime(2018, 1, 1, 2, 0, 0), Scale.UTC),
178
- ),
179
- from_trajectory=from_trajectory,
180
- to_trajectory=to_trajectory,
181
- )
182
-
183
- assert accesses is not None
184
- assert isinstance(accesses, list)
185
- assert accesses[0] is not None
186
- assert isinstance(accesses[0], Access)
187
-
188
- def test_set_step_success(self, generator: Generator):
189
- generator.set_step(Duration.seconds(1.0))
190
-
191
- def test_set_tolerance_success(self, generator: Generator):
192
- generator.set_tolerance(Duration.seconds(1.0))
193
-
194
- def test_set_aer_filter_success(self, generator: Generator):
195
- generator.set_aer_filter(aer_filter=lambda aer: True)
196
-
197
- def test_set_access_filter_success(self, generator: Generator):
198
- generator.set_access_filter(access_filter=lambda access: True)
199
-
200
- def test_set_state_filter_success(self, generator: Generator):
201
- generator.set_state_filter(state_filter=lambda state_1, state_2: True)
202
-
203
- def test_undefined_success(self):
204
- generator = Generator.undefined()
205
-
206
- assert generator is not None
207
- assert isinstance(generator, Generator)
208
- assert generator.is_defined() is False
209
-
210
- def test_aer_ranges_success(self, environment: Environment):
211
- # Construct arbitrary AER ranges
212
- azimuth_interval = RealInterval.closed(0.0, 360.0)
213
- elevation_interval = RealInterval.closed(0.0, 90.0)
214
- range_interval = RealInterval.closed(0.0, 7000e3)
215
-
216
- generator = Generator.aer_ranges(
217
- azimuth_range=azimuth_interval,
218
- elevation_range=elevation_interval,
219
- range_range=range_interval,
220
- environment=environment,
221
- )
222
-
223
- assert generator is not None
224
- assert isinstance(generator, Generator)
225
- assert generator.is_defined()
226
-
227
- def test_aer_mask_success(self, environment: Environment):
228
- # Construct arbitrary anAzimuthElevationMask using python dict
229
- an_azimuth_elevation_mask = {
230
- 0.0: 30.0,
231
- 90.0: 60.0,
232
- 180.0: 60.0,
233
- 270.0: 30.0,
234
- 359.0: 30.0,
235
- }
236
-
237
- # Construct arbitrary aRangerange
238
- a_range_range = RealInterval(0.0, 10e4, RealInterval.Type.Closed)
239
-
240
- generator = Generator.aer_mask(
241
- azimuth_elevation_mask=an_azimuth_elevation_mask,
242
- range_range=a_range_range,
243
- environment=environment,
244
- )
245
-
246
- assert generator is not None
247
- assert isinstance(generator, Generator)
248
- assert generator.is_defined()
@@ -1 +0,0 @@
1
- # Apache License 2.0