open-space-toolkit-astrodynamics 2.2.0__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 (71) hide show
  1. {open_space_toolkit_astrodynamics-2.2.0.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.2.0.dist-info/RECORD +0 -77
  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_boolean_condition.py +0 -55
  22. ostk/astrodynamics/test/event_condition/test_coe_condition.py +0 -126
  23. ostk/astrodynamics/test/event_condition/test_instant_condition.py +0 -48
  24. ostk/astrodynamics/test/event_condition/test_logical_condition.py +0 -120
  25. ostk/astrodynamics/test/event_condition/test_real_condition.py +0 -53
  26. ostk/astrodynamics/test/flight/__init__.py +0 -1
  27. ostk/astrodynamics/test/flight/profile/__init__.py +0 -1
  28. ostk/astrodynamics/test/flight/profile/test_state.py +0 -144
  29. ostk/astrodynamics/test/flight/system/__init__.py +0 -1
  30. ostk/astrodynamics/test/flight/system/dynamics/__init__.py +0 -1
  31. ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py +0 -89
  32. ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py +0 -58
  33. ostk/astrodynamics/test/flight/system/dynamics/test_dynamics.py +0 -37
  34. ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py +0 -51
  35. ostk/astrodynamics/test/flight/system/dynamics/test_third_body_gravity.py +0 -67
  36. ostk/astrodynamics/test/flight/system/test_satellite_system.py +0 -77
  37. ostk/astrodynamics/test/flight/test_profile.py +0 -153
  38. ostk/astrodynamics/test/flight/test_system.py +0 -55
  39. ostk/astrodynamics/test/solvers/__init__.py +0 -1
  40. ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py +0 -153
  41. ostk/astrodynamics/test/trajectory/__init__.py +0 -1
  42. ostk/astrodynamics/test/trajectory/orbit/__init__.py +0 -1
  43. ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py +0 -1
  44. ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py +0 -1
  45. ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py +0 -18
  46. ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml +0 -44
  47. ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py +0 -108
  48. ostk/astrodynamics/test/trajectory/orbit/models/__init__.py +0 -1
  49. ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py +0 -1
  50. ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py +0 -112
  51. ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py +0 -1
  52. ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py +0 -331
  53. ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py +0 -130
  54. ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py +0 -195
  55. ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py +0 -1
  56. ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py +0 -380
  57. ostk/astrodynamics/test/trajectory/orbit/test_model.py +0 -1
  58. ostk/astrodynamics/test/trajectory/orbit/test_pass.py +0 -55
  59. ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py +0 -103
  60. ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py +0 -113
  61. ostk/astrodynamics/test/trajectory/state/test_coordinates_broker.py +0 -71
  62. ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py +0 -43
  63. ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py +0 -242
  64. ostk/astrodynamics/test/trajectory/test_model.py +0 -1
  65. ostk/astrodynamics/test/trajectory/test_orbit.py +0 -92
  66. ostk/astrodynamics/test/trajectory/test_propagator.py +0 -234
  67. ostk/astrodynamics/test/trajectory/test_state.py +0 -121
  68. {open_space_toolkit_astrodynamics-2.2.0.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/WHEEL +0 -0
  69. {open_space_toolkit_astrodynamics-2.2.0.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/top_level.txt +0 -0
  70. {open_space_toolkit_astrodynamics-2.2.0.dist-info → open_space_toolkit_astrodynamics-5.0.0.dist-info}/zip-safe +0 -0
  71. /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.2.0
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,77 +0,0 @@
1
- ostk/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
2
- ostk/astrodynamics/OpenSpaceToolkitAstrodynamicsPy.cpython-311-x86_64-linux-gnu.so,sha256=GjkVuMXD3VtRnjtzXlZpOHrfP83KD6mLsxjTfOI71-o,1291608
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=0CR9k46YVnL28vvV12f6FNFkGHubVQw1NJNUH_xh1-Q,60253816
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_boolean_condition.py,sha256=Ng6FLKD8XoUHUz6-gi3wvrYhSGNSB_iJ_n89ajN4O3s,1580
27
- ostk/astrodynamics/test/event_condition/test_coe_condition.py,sha256=p8-djvgkWNibKuUuQTh6a9tO3h1B_0ix0O8DdJb0K9g,3649
28
- ostk/astrodynamics/test/event_condition/test_instant_condition.py,sha256=Qr5dN6nrK7XDff7L4vnGCqasMK-Fa6qvxwy_U0xgH5M,1438
29
- ostk/astrodynamics/test/event_condition/test_logical_condition.py,sha256=09h5TYWtwGt4NQW3k_tziiVs0Q2981rNII9wyKg7p2Q,3321
30
- ostk/astrodynamics/test/event_condition/test_real_condition.py,sha256=vlNpeLwUtCtldfmL04aYwF2uLKw-dKfywPOEBn5v7J8,1507
31
- ostk/astrodynamics/test/flight/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
32
- ostk/astrodynamics/test/flight/test_profile.py,sha256=27g5Atvr2RGslvFujdP90cA9qldkNb7C0U1RgbOAws0,5197
33
- ostk/astrodynamics/test/flight/test_system.py,sha256=YPrjoV3o67_1zCXCZqohlSAR7zkU0LXP2fF20M2s0C8,1326
34
- ostk/astrodynamics/test/flight/profile/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
35
- ostk/astrodynamics/test/flight/profile/test_state.py,sha256=49UyPz6p9Q_RYKVBiLgW_WHo4A7JUZtacGMhQ9ERCdc,4268
36
- ostk/astrodynamics/test/flight/system/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
37
- ostk/astrodynamics/test/flight/system/test_satellite_system.py,sha256=-5KOGVTWRIpY1jcRc0xGX6N9oRbUT_EexzB9jZFsZQg,2208
38
- ostk/astrodynamics/test/flight/system/dynamics/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
39
- ostk/astrodynamics/test/flight/system/dynamics/test_atmospheric_drag.py,sha256=nZ2lBGq5Ni3ypuqGbTfluxTXYERpwol49d0DrgnYsIo,3115
40
- ostk/astrodynamics/test/flight/system/dynamics/test_central_body_gravity.py,sha256=r3JIIX7cD63BhrgvLtjFaK7ew1BqHdKP5_VxwGmuv1Q,1818
41
- ostk/astrodynamics/test/flight/system/dynamics/test_dynamics.py,sha256=arNkAOj2y4CDmc9CXxItbFtC4QYjaByuJefdi5S6alw,914
42
- ostk/astrodynamics/test/flight/system/dynamics/test_position_derivative.py,sha256=ZVVewpqZwqiBLDqoNQDHDgDodtj6_M0J6ZmgHe_1gz8,1646
43
- ostk/astrodynamics/test/flight/system/dynamics/test_third_body_gravity.py,sha256=Z8OkM-EFafFpWziu3bfatlSlZA4Tic2fsVLU35rDp5E,1915
44
- ostk/astrodynamics/test/solvers/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
45
- ostk/astrodynamics/test/solvers/test_temporal_condition_solver.py,sha256=s7r7VelXx1_b-6wO_GyOlmxlsfA4I_zpxrWojriQls8,4867
46
- ostk/astrodynamics/test/trajectory/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
47
- ostk/astrodynamics/test/trajectory/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
48
- ostk/astrodynamics/test/trajectory/test_orbit.py,sha256=SlCBZ_broPaJ6L8khMuvbdPem9-zmqG6IZwxr9cECB4,3155
49
- ostk/astrodynamics/test/trajectory/test_propagator.py,sha256=-w-CWhuJ09tdJY35n3YR4CSo2aRnvx3eYtTLEPlZy5E,7626
50
- ostk/astrodynamics/test/trajectory/test_state.py,sha256=okpjRPixi7AUSV1YG8hNFFEo0AayfIK50X2vor9yOB0,3199
51
- ostk/astrodynamics/test/trajectory/orbit/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
52
- ostk/astrodynamics/test/trajectory/orbit/test_model.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
53
- ostk/astrodynamics/test/trajectory/orbit/test_pass.py,sha256=MtPRKhVz4hCzfFuE0p1x89Ps68M9s7miT7VtPIDVeOo,1898
54
- ostk/astrodynamics/test/trajectory/orbit/messages/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
55
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
56
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/conftest.py,sha256=O75ywkPJjoFp0uKptCu4C2tGMRaGN-8NVFVhps85eWE,379
57
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/test_opm.py,sha256=wfxuccqIF2odRA9Dc-8wtKZ8t__4KJ9HVhN-il284OU,3893
58
- ostk/astrodynamics/test/trajectory/orbit/messages/spacex/data/opm_1.yaml,sha256=DqIdfLCPD9oV4qDvgq35fIT8Gb8zgtrHr5Nx53InSQM,1363
59
- ostk/astrodynamics/test/trajectory/orbit/models/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
60
- ostk/astrodynamics/test/trajectory/orbit/models/test_kepler.py,sha256=sf1FpdYyiGyWcal-CwVfelW1k-HYGlIdbJdcbOi9-lY,3372
61
- ostk/astrodynamics/test/trajectory/orbit/models/test_propagated.py,sha256=S5tndRVlNd-_1WvKlH_Jo2SX5gEzVkPC3lKdYpzBfx0,6720
62
- ostk/astrodynamics/test/trajectory/orbit/models/test_sgp4.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
63
- ostk/astrodynamics/test/trajectory/orbit/models/test_tabulated.py,sha256=tL3gGDitdEYCCRwGtu2RP-9d4JWsujV53ck9DRkyeG4,11183
64
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
65
- ostk/astrodynamics/test/trajectory/orbit/models/kepler/test_coe.py,sha256=uWgUO9zHrcqEKGJ-SWUiHfEbWDm8YcgptnS2I2y_V1U,2728
66
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/__init__.py,sha256=epnVn2PwdQkUDZ1msqBRO5nEZIOUBIq-IfK3IlNPijE,21
67
- ostk/astrodynamics/test/trajectory/orbit/models/sgp4/test_tle.py,sha256=lbPqHd87ExTNbBFcFSTMWRnWbpe_4BDJ2g2APlQLJkY,11486
68
- ostk/astrodynamics/test/trajectory/state/test_coordinates_broker.py,sha256=kB_gsJHxvCDY9kfuqVkwHt5ZmMuaAoRk_3YZGxoXOwg,2515
69
- ostk/astrodynamics/test/trajectory/state/test_coordinates_subset.py,sha256=eMmifR5rJMk2yFN7pfAHq2Ub3FPvknb6gvS-nBDidro,1201
70
- ostk/astrodynamics/test/trajectory/state/test_numerical_solver.py,sha256=ZTWRSVFOJnjzQP7JDsHZxvZ4ldyDHmXTptG2csC7_ic,7480
71
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_position.py,sha256=V5d7UnV6KIJjJvh5R0i3imRfyN04JCDvCUsKdvfKmhE,2708
72
- ostk/astrodynamics/test/trajectory/state/coordinates_subset/test_cartesian_velocity.py,sha256=5a7yeOVt7gY4oQdINSElb_U2jznJmuWPrT_YJrI6KaM,3070
73
- open_space_toolkit_astrodynamics-2.2.0.dist-info/METADATA,sha256=tnns8QmStuEwQw-c3UHlzGZnW_jy-QzbV9zdaVVszzs,1779
74
- open_space_toolkit_astrodynamics-2.2.0.dist-info/WHEEL,sha256=LypFpa2XcEE7xO2Jrj0iI4pUztksD6mL7bVYmw0rTlI,94
75
- open_space_toolkit_astrodynamics-2.2.0.dist-info/top_level.txt,sha256=zOR18699uDYnafgarhL8WU_LmTZY_5NVqutv-flp_x4,5
76
- open_space_toolkit_astrodynamics-2.2.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
77
- open_space_toolkit_astrodynamics-2.2.0.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