satkit 0.2.4__tar.gz

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 (118) hide show
  1. satkit-0.2.4/Cargo.toml +51 -0
  2. satkit-0.2.4/LICENSE +21 -0
  3. satkit-0.2.4/MANIFEST.in +5 -0
  4. satkit-0.2.4/PKG-INFO +95 -0
  5. satkit-0.2.4/README.md +76 -0
  6. satkit-0.2.4/pyproject.toml +105 -0
  7. satkit-0.2.4/python/satkit/__init__.py +8 -0
  8. satkit-0.2.4/python/satkit/__init__.pyi +1367 -0
  9. satkit-0.2.4/python/satkit/astro-data/py.typed +0 -0
  10. satkit-0.2.4/python/satkit/density/__init__.pyi +74 -0
  11. satkit-0.2.4/python/satkit/density/py.typed +0 -0
  12. satkit-0.2.4/python/satkit/frametransform/__init__.pyi +242 -0
  13. satkit-0.2.4/python/satkit/frametransform/py.typed +0 -0
  14. satkit-0.2.4/python/satkit/jplephem/__init__.pyi +118 -0
  15. satkit-0.2.4/python/satkit/jplephem/py.typed +0 -0
  16. satkit-0.2.4/python/satkit/moon/__init__.py +52 -0
  17. satkit-0.2.4/python/satkit/moon/py.typed +0 -0
  18. satkit-0.2.4/python/satkit/py.typed +0 -0
  19. satkit-0.2.4/python/satkit/satprop/__init__.pyi +327 -0
  20. satkit-0.2.4/python/satkit/satprop/py.typed +0 -0
  21. satkit-0.2.4/python/satkit/sun/__init__.pyi +159 -0
  22. satkit-0.2.4/python/satkit/sun/py.typed +0 -0
  23. satkit-0.2.4/python/satkit/utils/__init__.pyi +85 -0
  24. satkit-0.2.4/python/satkit/utils/py.typed +0 -0
  25. satkit-0.2.4/python/satkit.egg-info/PKG-INFO +95 -0
  26. satkit-0.2.4/python/satkit.egg-info/SOURCES.txt +116 -0
  27. satkit-0.2.4/python/satkit.egg-info/dependency_links.txt +1 -0
  28. satkit-0.2.4/python/satkit.egg-info/requires.txt +1 -0
  29. satkit-0.2.4/python/satkit.egg-info/top_level.txt +2 -0
  30. satkit-0.2.4/python/test/download_data.py +27 -0
  31. satkit-0.2.4/python/test/download_from_json.py +23 -0
  32. satkit-0.2.4/python/test/download_testvecs.py +27 -0
  33. satkit-0.2.4/python/test/orbitprop_gps_fit.py +77 -0
  34. satkit-0.2.4/python/test/sp3file.py +37 -0
  35. satkit-0.2.4/python/test/test.py +532 -0
  36. satkit-0.2.4/setup.cfg +4 -0
  37. satkit-0.2.4/src/astrotime.rs +783 -0
  38. satkit-0.2.4/src/consts.rs +36 -0
  39. satkit-0.2.4/src/duration.rs +199 -0
  40. satkit-0.2.4/src/earth_orientation_params.rs +268 -0
  41. satkit-0.2.4/src/earthgravity.rs +640 -0
  42. satkit-0.2.4/src/frametransform/ierstable.rs +120 -0
  43. satkit-0.2.4/src/frametransform/mod.rs +427 -0
  44. satkit-0.2.4/src/frametransform/qcirs2gcrs.rs +139 -0
  45. satkit-0.2.4/src/itrfcoord.rs +620 -0
  46. satkit-0.2.4/src/jplephem.rs +722 -0
  47. satkit-0.2.4/src/lib.rs +81 -0
  48. satkit-0.2.4/src/lpephem/mod.rs +4 -0
  49. satkit-0.2.4/src/lpephem/moon.rs +92 -0
  50. satkit-0.2.4/src/lpephem/sun.rs +277 -0
  51. satkit-0.2.4/src/nrlmsise.rs +179 -0
  52. satkit-0.2.4/src/ode/harmonic_oscillator.rs +17 -0
  53. satkit-0.2.4/src/ode/mod.rs +38 -0
  54. satkit-0.2.4/src/ode/nalgebra.rs +44 -0
  55. satkit-0.2.4/src/ode/rk_adaptive.rs +296 -0
  56. satkit-0.2.4/src/ode/rk_adaptive_settings.rs +26 -0
  57. satkit-0.2.4/src/ode/rk_explicit.rs +113 -0
  58. satkit-0.2.4/src/ode/rkf45.rs +106 -0
  59. satkit-0.2.4/src/ode/rkts54.rs +161 -0
  60. satkit-0.2.4/src/ode/rkv65.rs +76 -0
  61. satkit-0.2.4/src/ode/rkv65_table.rs +192 -0
  62. satkit-0.2.4/src/ode/rkv87.rs +76 -0
  63. satkit-0.2.4/src/ode/rkv87_table.rs +471 -0
  64. satkit-0.2.4/src/ode/rkv98.rs +100 -0
  65. satkit-0.2.4/src/ode/rkv98_nointerp.rs +83 -0
  66. satkit-0.2.4/src/ode/rkv98_nointerp_table.rs +349 -0
  67. satkit-0.2.4/src/ode/rkv98_table.rs +686 -0
  68. satkit-0.2.4/src/ode/types.rs +94 -0
  69. satkit-0.2.4/src/orbitprop/drag.rs +140 -0
  70. satkit-0.2.4/src/orbitprop/mod.rs +14 -0
  71. satkit-0.2.4/src/orbitprop/point_gravity.rs +37 -0
  72. satkit-0.2.4/src/orbitprop/propagator.rs +727 -0
  73. satkit-0.2.4/src/orbitprop/satproperties.rs +62 -0
  74. satkit-0.2.4/src/orbitprop/satstate.rs +333 -0
  75. satkit-0.2.4/src/orbitprop/settings.rs +69 -0
  76. satkit-0.2.4/src/pybindings/mod.rs +148 -0
  77. satkit-0.2.4/src/pybindings/mod_utils.rs +105 -0
  78. satkit-0.2.4/src/pybindings/pyastrotime.rs +565 -0
  79. satkit-0.2.4/src/pybindings/pyconsts.rs +75 -0
  80. satkit-0.2.4/src/pybindings/pydensity.rs +95 -0
  81. satkit-0.2.4/src/pybindings/pyduration.rs +97 -0
  82. satkit-0.2.4/src/pybindings/pyframetransform.rs +221 -0
  83. satkit-0.2.4/src/pybindings/pygravity.rs +230 -0
  84. satkit-0.2.4/src/pybindings/pyitrfcoord.rs +328 -0
  85. satkit-0.2.4/src/pybindings/pyjplephem.rs +115 -0
  86. satkit-0.2.4/src/pybindings/pylpephem_moon.rs +26 -0
  87. satkit-0.2.4/src/pybindings/pylpephem_sun.rs +94 -0
  88. satkit-0.2.4/src/pybindings/pynrlmsise.rs +56 -0
  89. satkit-0.2.4/src/pybindings/pypropagate.rs +298 -0
  90. satkit-0.2.4/src/pybindings/pypropsettings.rs +92 -0
  91. satkit-0.2.4/src/pybindings/pyquaternion.rs +281 -0
  92. satkit-0.2.4/src/pybindings/pysatproperties.rs +89 -0
  93. satkit-0.2.4/src/pybindings/pysatstate.rs +191 -0
  94. satkit-0.2.4/src/pybindings/pysgp4.rs +294 -0
  95. satkit-0.2.4/src/pybindings/pysolarsystem.rs +66 -0
  96. satkit-0.2.4/src/pybindings/pytle.rs +150 -0
  97. satkit-0.2.4/src/pybindings/pyutils.rs +210 -0
  98. satkit-0.2.4/src/sgp4/dpper.rs +258 -0
  99. satkit-0.2.4/src/sgp4/dscom.rs +373 -0
  100. satkit-0.2.4/src/sgp4/dsinit.rs +393 -0
  101. satkit-0.2.4/src/sgp4/dspace.rs +265 -0
  102. satkit-0.2.4/src/sgp4/getgravconst.rs +78 -0
  103. satkit-0.2.4/src/sgp4/initl.rs +208 -0
  104. satkit-0.2.4/src/sgp4/mod.rs +36 -0
  105. satkit-0.2.4/src/sgp4/satrec.rs +270 -0
  106. satkit-0.2.4/src/sgp4/sgp4.rs +278 -0
  107. satkit-0.2.4/src/sgp4/sgp4_lowlevel.rs +514 -0
  108. satkit-0.2.4/src/sgp4/sgp4init.rs +667 -0
  109. satkit-0.2.4/src/solarsystem.rs +37 -0
  110. satkit-0.2.4/src/spaceweather.rs +278 -0
  111. satkit-0.2.4/src/tle.rs +467 -0
  112. satkit-0.2.4/src/types.rs +2 -0
  113. satkit-0.2.4/src/utils/datadir.rs +125 -0
  114. satkit-0.2.4/src/utils/download.rs +67 -0
  115. satkit-0.2.4/src/utils/mod.rs +34 -0
  116. satkit-0.2.4/src/utils/skerror.rs +38 -0
  117. satkit-0.2.4/src/utils/test.rs +31 -0
  118. satkit-0.2.4/src/utils/update_data.rs +166 -0
@@ -0,0 +1,51 @@
1
+ [package]
2
+ name = "satkit"
3
+ version = "0.2.4"
4
+ edition = "2021"
5
+ description = "Satellite Toolkit"
6
+ readme = "README.md"
7
+ licence = "MIT"
8
+ license-file = "LICENSE"
9
+ homepage = "https://github.com/ssmichael1/satkit"
10
+ repository = "https://github.com/ssmichael1/satkit"
11
+ documentation = "https://docs.rs/satkit"
12
+ keywords = ["satellite", "orbit", "ephemeris", "tle", "astrodynamics"]
13
+ categories = ["aerospace", "algorithms", "mathematics", "science"]
14
+
15
+
16
+ # See more keys and their definitions at
17
+ # https://doc.rust-lang.org/cargo/reference/manifest.html
18
+ [lib]
19
+ name = "satkit"
20
+
21
+
22
+ [dependencies]
23
+ nalgebra = "0.32.3"
24
+ ndarray = "0.15.6"
25
+ libc = "0.2"
26
+ chrono = "0.4.19"
27
+ cty = "0.2.2"
28
+ num-traits = "0.2"
29
+ thiserror = "1.0"
30
+ simba = "0.8"
31
+ once_cell = "1.6.0"
32
+ numpy = { version = "0.20.0", optional = true }
33
+ pyo3 = { version = "0.20.0", features = ["extension-module"], optional = true }
34
+ ureq = "2.9.1"
35
+ json = "0.12.4"
36
+ process_path = "0.1.4"
37
+
38
+ [build-dependencies]
39
+ cc = { version = "1.0.74", features = ["parallel"] }
40
+ chrono = "0.4.19"
41
+ pyo3-build-config = { version = "0.20.0", optional = true }
42
+
43
+ [dev-dependencies]
44
+ rand = "0.8.5"
45
+ approx = "0.5.1"
46
+
47
+ [features]
48
+ pybindings = ["pyo3", "numpy", "pyo3-build-config"]
49
+
50
+ [profile.test]
51
+ opt-level = 3
satkit-0.2.4/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2022 Steven Michael
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,5 @@
1
+ include Cargo.toml
2
+ recursive-include src *.rs python extern
3
+ include LICENSE
4
+ include README.md
5
+ include pyproject.toml
satkit-0.2.4/PKG-INFO ADDED
@@ -0,0 +1,95 @@
1
+ Metadata-Version: 2.1
2
+ Name: satkit
3
+ Version: 0.2.4
4
+ Summary: Satellite Orbital Dynamics Toolkit
5
+ Author-email: Steven Michael <ssmichael@gmail.com>
6
+ Maintainer-email: Steven Michael <ssmichael@gmail.com>
7
+ Keywords: satellite,orbit,astrodynamics,SGP4,TLE,JPL,Ephemeris
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: License :: OSI Approved :: MIT License
10
+ Classifier: Programming Language :: Python :: 3.8
11
+ Classifier: Programming Language :: Python :: 3.9
12
+ Classifier: Programming Language :: Python :: 3.10
13
+ Classifier: Programming Language :: Python :: 3.11
14
+ Classifier: Programming Language :: Python :: 3.12
15
+ Requires-Python: >=3.8
16
+ Description-Content-Type: text/markdown
17
+ License-File: LICENSE
18
+ Requires-Dist: numpy>=1.20.0
19
+
20
+ # Satellite Toolkit with Rust
21
+
22
+ ![Build Passing?](https://github.com/ssmichael1/satkit/actions/workflows/build.yml/badge.svg)
23
+ ![Wheel Passing?](https://github.com/ssmichael1/satkit/actions/workflows/wheels.yml/badge.svg)
24
+ ![GitHub License](https://img.shields.io/github/license/ssmichael1/satkit)
25
+ <br/>
26
+ An accurate, high-performance satellite orbital kinematics toolkit, written in Rust with a sensible interface.
27
+
28
+ ## Language Bindings
29
+
30
+ - **Native Rust** bindings
31
+ - **Python bindings** for compiled rust code ... speed of Rust with convenience of Python
32
+
33
+ ## Features
34
+
35
+ - Timescale transformations (UTC, GPS, UT1, TBD, TT, ...)
36
+ - High-precision coordinate transforms between:
37
+ - International Terrestrial Reference Frame (ITRF)
38
+ - Geocentric Celestial Reference Frame (GCRF) using IAU-2000 reduction
39
+ - True-Equinox Mean Equator (TEME) frame used in SGP4 propagation of TLEs
40
+ - Celestial Intermediate Reference Frame (CIRF)
41
+ - Terrestrial Intermediate Reference Frame (TIRF)
42
+ - Terrestrial Geodetic frame (latitude, longitude)
43
+ - Geodesic distances
44
+ - SGP4, and Keplerian orbit propagation
45
+ - JPL high-precision planetary ephemerides
46
+ - High-order gravity models
47
+ - High-precision, high-speed numerical satellite orbit propagation with high-order efficient Runga-Kutta solvers, ability to solve for state transition matrix, and inclusion following forces:
48
+ - High-order Earth gravity with multiple models
49
+ - Solar gravity
50
+ - Lunar gravity
51
+ - Drag (NRL MISE-00 density model)
52
+ - Radiation pressure
53
+
54
+ ## ODE Solvers
55
+
56
+ The high-precision numerical satellite orbit propagation makes use of standard Runga-Kutta methods for integration of ordinary differential equations. The ODE solver is included as part of the library.
57
+
58
+ The methods use Runga-Kutta pairs for ODE integration and error estimation generated by Jim Verner: [https://www.sfu.ca/~jverner/](https://www.sfu.ca/~jverner/)
59
+
60
+ ## References, Models, and External Software.
61
+
62
+ ### The equations and many of the unit tests underlying this work are drawn from the following sources:
63
+
64
+ - **"Fundamentals of Astrodynamics and Applications, Fourth Edition"**, D. Vallado, Microcosm Press and Springer, 2013.<br>
65
+ [https://celestrak.org/software/vallado-sw.php](https://celestrak.org/software/vallado-sw.php)
66
+ - **"Satellite Orbits: Models, Methods, Applications"**, O. Montenbruck and E. Gill, Springer, 2000.<br>
67
+ [https://doi.org/10.1007/978-3-642-58351-3](https://doi.org/10.1007/978-3-642-58351-3)
68
+
69
+ ### This code makes reference to and relies on models generated by the following:
70
+
71
+ - **SGP4 Orbit Propagator** - https://celestrak.org/software/tskelso-sw.php<br/>
72
+ NORAD / SGP4 orbit propagator used to generate position and velocity states from orbital ephemerides described by Two-Line Element Sets (TLEs). This code base includes a pure-rust translation of the SGP4 orbit propagator
73
+ - **NRL MSISE-00 Density Model** - https://ccmc.gsfc.nasa.gov/models/NRLMSIS~00/<br/>
74
+ NRL model of air density, including density at high altitudes, used in to compute satellite drag
75
+ - **Gravity Models** - http://icgem.gfz-potsdam.de/home<br/>
76
+ International Center for Global Earth Models (ICEGM), collection and archive in a common format of all existing global gravity field models
77
+ - **Space Weather** - https://celestrak.org/SpaceData/<br/>
78
+ Space weather used to modulate the air density used in drag calculations
79
+ - **Earth Orientation Parameters** - https://celestrak.org/SpaceData/<br/>
80
+ Time-varying Earth orientation parameters used for time epoch conversions and high-precision rotations between the inertial and Earth-fixed coordinate frames
81
+ - **IERS Conventions** - https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html<br/>
82
+ International Earth Rotation and Reference Systems Service Technical Note 36 for rotation between inertial and Earth-fixed coordinate systems.
83
+
84
+ ## Verification
85
+
86
+ The code includes rust test modules and python test modules for verification of nearly calculations, including but not limited to:
87
+
88
+ - **JPL Ephemeris** - Via JPL-provided test vectors for Chebychev polynomial calculation
89
+ - **SGP4** - Via SGP4 test vectors provided with original C<sup>++</sup> distribution
90
+
91
+ ## Author
92
+
93
+ Steven Michael (ssmichael@gmail.com)
94
+
95
+ Please reach out of you find errors in code or calculations, are interested in contributing to this repository, or have suggestions for improvements to the API.
satkit-0.2.4/README.md ADDED
@@ -0,0 +1,76 @@
1
+ # Satellite Toolkit with Rust
2
+
3
+ ![Build Passing?](https://github.com/ssmichael1/satkit/actions/workflows/build.yml/badge.svg)
4
+ ![Wheel Passing?](https://github.com/ssmichael1/satkit/actions/workflows/wheels.yml/badge.svg)
5
+ ![GitHub License](https://img.shields.io/github/license/ssmichael1/satkit)
6
+ <br/>
7
+ An accurate, high-performance satellite orbital kinematics toolkit, written in Rust with a sensible interface.
8
+
9
+ ## Language Bindings
10
+
11
+ - **Native Rust** bindings
12
+ - **Python bindings** for compiled rust code ... speed of Rust with convenience of Python
13
+
14
+ ## Features
15
+
16
+ - Timescale transformations (UTC, GPS, UT1, TBD, TT, ...)
17
+ - High-precision coordinate transforms between:
18
+ - International Terrestrial Reference Frame (ITRF)
19
+ - Geocentric Celestial Reference Frame (GCRF) using IAU-2000 reduction
20
+ - True-Equinox Mean Equator (TEME) frame used in SGP4 propagation of TLEs
21
+ - Celestial Intermediate Reference Frame (CIRF)
22
+ - Terrestrial Intermediate Reference Frame (TIRF)
23
+ - Terrestrial Geodetic frame (latitude, longitude)
24
+ - Geodesic distances
25
+ - SGP4, and Keplerian orbit propagation
26
+ - JPL high-precision planetary ephemerides
27
+ - High-order gravity models
28
+ - High-precision, high-speed numerical satellite orbit propagation with high-order efficient Runga-Kutta solvers, ability to solve for state transition matrix, and inclusion following forces:
29
+ - High-order Earth gravity with multiple models
30
+ - Solar gravity
31
+ - Lunar gravity
32
+ - Drag (NRL MISE-00 density model)
33
+ - Radiation pressure
34
+
35
+ ## ODE Solvers
36
+
37
+ The high-precision numerical satellite orbit propagation makes use of standard Runga-Kutta methods for integration of ordinary differential equations. The ODE solver is included as part of the library.
38
+
39
+ The methods use Runga-Kutta pairs for ODE integration and error estimation generated by Jim Verner: [https://www.sfu.ca/~jverner/](https://www.sfu.ca/~jverner/)
40
+
41
+ ## References, Models, and External Software.
42
+
43
+ ### The equations and many of the unit tests underlying this work are drawn from the following sources:
44
+
45
+ - **"Fundamentals of Astrodynamics and Applications, Fourth Edition"**, D. Vallado, Microcosm Press and Springer, 2013.<br>
46
+ [https://celestrak.org/software/vallado-sw.php](https://celestrak.org/software/vallado-sw.php)
47
+ - **"Satellite Orbits: Models, Methods, Applications"**, O. Montenbruck and E. Gill, Springer, 2000.<br>
48
+ [https://doi.org/10.1007/978-3-642-58351-3](https://doi.org/10.1007/978-3-642-58351-3)
49
+
50
+ ### This code makes reference to and relies on models generated by the following:
51
+
52
+ - **SGP4 Orbit Propagator** - https://celestrak.org/software/tskelso-sw.php<br/>
53
+ NORAD / SGP4 orbit propagator used to generate position and velocity states from orbital ephemerides described by Two-Line Element Sets (TLEs). This code base includes a pure-rust translation of the SGP4 orbit propagator
54
+ - **NRL MSISE-00 Density Model** - https://ccmc.gsfc.nasa.gov/models/NRLMSIS~00/<br/>
55
+ NRL model of air density, including density at high altitudes, used in to compute satellite drag
56
+ - **Gravity Models** - http://icgem.gfz-potsdam.de/home<br/>
57
+ International Center for Global Earth Models (ICEGM), collection and archive in a common format of all existing global gravity field models
58
+ - **Space Weather** - https://celestrak.org/SpaceData/<br/>
59
+ Space weather used to modulate the air density used in drag calculations
60
+ - **Earth Orientation Parameters** - https://celestrak.org/SpaceData/<br/>
61
+ Time-varying Earth orientation parameters used for time epoch conversions and high-precision rotations between the inertial and Earth-fixed coordinate frames
62
+ - **IERS Conventions** - https://www.iers.org/IERS/EN/Publications/TechnicalNotes/tn36.html<br/>
63
+ International Earth Rotation and Reference Systems Service Technical Note 36 for rotation between inertial and Earth-fixed coordinate systems.
64
+
65
+ ## Verification
66
+
67
+ The code includes rust test modules and python test modules for verification of nearly calculations, including but not limited to:
68
+
69
+ - **JPL Ephemeris** - Via JPL-provided test vectors for Chebychev polynomial calculation
70
+ - **SGP4** - Via SGP4 test vectors provided with original C<sup>++</sup> distribution
71
+
72
+ ## Author
73
+
74
+ Steven Michael (ssmichael@gmail.com)
75
+
76
+ Please reach out of you find errors in code or calculations, are interested in contributing to this repository, or have suggestions for improvements to the API.
@@ -0,0 +1,105 @@
1
+ [build-system]
2
+ requires = ["setuptools", "setuptools-rust"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "satkit"
7
+ version = "0.2.4"
8
+ dependencies = ["numpy>=1.20.0"]
9
+ requires-python = ">= 3.8"
10
+ authors = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
11
+ maintainers = [{ name = "Steven Michael", email = "ssmichael@gmail.com" }]
12
+ readme = "README.md"
13
+ description = "Satellite Orbital Dynamics Toolkit"
14
+ keywords = [
15
+ "satellite",
16
+ "orbit",
17
+ "astrodynamics",
18
+ "SGP4",
19
+ "TLE",
20
+ "JPL",
21
+ "Ephemeris",
22
+ ]
23
+ classifiers = [
24
+ # How mature is this project? Common values are
25
+ # 3 - Alpha
26
+ # 4 - Beta
27
+ # 5 - Production/Stable
28
+ "Development Status :: 3 - Alpha",
29
+
30
+ # Pick your license as you wish (see also "license" above)
31
+ "License :: OSI Approved :: MIT License",
32
+
33
+ # Specify the Python versions you support here.
34
+ "Programming Language :: Python :: 3.8",
35
+ "Programming Language :: Python :: 3.9",
36
+ "Programming Language :: Python :: 3.10",
37
+ "Programming Language :: Python :: 3.11",
38
+ "Programming Language :: Python :: 3.12",
39
+ ]
40
+
41
+ [tool.setuptools.packages]
42
+ find = { where = ["python"] }
43
+
44
+ [tool.cibuildwheel]
45
+ build = ["cp312-*", "cp311-* cp310-* cp39-* cp38-*"]
46
+
47
+ [tool.cibuildwheel.macos]
48
+ archs = ["x86_64", "arm64"]
49
+ before-build = [
50
+ "pip install -U setuptools-rust",
51
+ "rustup default stable",
52
+ "rustup target add aarch64-apple-darwin",
53
+ "rustup show",
54
+ ]
55
+ environment = { PATH = "$PATH:$HOME/.cargo/bin" }
56
+ # Skip trying to test arm64 builds on Intel Macs
57
+ test-skip = "*-macosx_arm64 *-macosx_universal2:arm64"
58
+ test-requires = "pytest"
59
+ test-command = [
60
+ "ASTRO_DATA={package}/astro-data SATKIT_TESTVEC_ROOT={package}/satkit-testvecs pytest {project}/python/test/test.py",
61
+ ]
62
+
63
+
64
+ [tool.cibuildwheel.linux]
65
+ environment = { PATH = "$PATH:$HOME/.cargo/bin" }
66
+ archs = ["x86_64"]
67
+ skip = ["pp*", "*_i686", "*_s390x", "*_aarch64", "*_ppc64le", "*-musllinux*"]
68
+ before-build = [
69
+ "pip install -U setuptools-rust",
70
+ "curl https://sh.rustup.rs -sSf | sh -s -- --default-toolchain=stable --profile=minimal -y",
71
+ "rustup show",
72
+ ]
73
+ test-requires = "pytest"
74
+ test-command = [
75
+ "ASTRO_DATA={package}/astro-data SATKIT_TESTVEC_ROOT={package}/satkit-testvecs pytest {project}/python/test/test.py",
76
+ ]
77
+
78
+ [tool.cibuildwheel.windows]
79
+ environment = { PATH = '$UserProfile\.cargo\bin;$PATH' }
80
+ before-build = [
81
+ "pip install -U setuptools-rust",
82
+ "rustup toolchain install stable-x86_64-pc-windows-msvc",
83
+ "rustup default stable-x86_64-pc-windows-msvc",
84
+ "rustup override set stable-x86_64-pc-windows-msvc",
85
+ "rustup show",
86
+ ]
87
+ archs = ["AMD64"]
88
+ skip = ["pp*"]
89
+ test-requires = "pytest"
90
+ before-test = [
91
+ "set ASTRO_DATA={package}\\astro-data",
92
+ "set SATKIT_TESTVEC_ROOT={package}\\satkit-testvecs",
93
+ ]
94
+ test-command = [
95
+ "set ASTRO_DATA={package}\\astro-data&&set SATKIT_TESTVEC_ROOT={package}\\satkit-testvecs&&pytest {project}\\python\\test\\test.py",
96
+ ]
97
+
98
+
99
+ [[tool.setuptools-rust.ext-modules]]
100
+ features = ["pybindings"]
101
+ args = ["--crate-type", "cdylib"]
102
+ target = "satkit/satkit"
103
+ path = "Cargo.toml"
104
+ binding = "PyO3"
105
+ py-limited-api = "auto"
@@ -0,0 +1,8 @@
1
+ from .satkit import *
2
+
3
+ if utils.datadir() == None:
4
+ print(f"Could not find necessary data files.")
5
+ print(f'Run "satkit.utils.update_datafiles()" to download necessary files')
6
+ print(f"This includes JPL ephemeris, gravity, space weather, ")
7
+ print(f"Earth orientation parameters, leap seconds, and coefficients")
8
+ print(f"for inertial-to-Earth-fixed transforms")