Skip to main content

Track Earth satellites given TLE data, using up-to-date 2020 SGP4 routines.

Project description

This package compiles the official C++ code from Revisiting Spacetrack Report #3 (AIAA 2006-6753) — specifically, the 2023 May 09 release from David Vallado’s Fundamentals of Astrodynamics and Applications webpage — and uses it to compute the positions of satellites in Earth orbit. Satellite orbital elements can be loaded from either a legacy TLE file or from a modern OMM element set, both of which you can fetch from a site like CelesTrak.

What we today call ‘SGP4’ in fact merges together what in the 1970s were originally two separate satellite propagation routines, but which are now selected automatically:

  • SGP4 — the ‘Simplified General Perturbations’ model is used for satellites close enough to Earth that their orbit takes less than 225 minutes (3 hours 45 minutes) to complete.

  • SDP4 — the ‘Simplified Deep Space Perturbations’ model is used for satellites farther from Earth, which take 225 minutes or longer to compete an orbit.

If your machine can’t install or compile the C++ code, then this package falls back to using a slower pure-Python implementation of the library. Tests make sure that its positions agree to within 0.1 mm with the standard version of the algorithm — an error far less than the 1–3 km/day by which satellites themselves deviate from the ideal orbits described in TLE files.

An accelerated routine is available that, given a series of times and of satellites, computes a whole array of output positions using a fast C++ loop. See the “Array Acceleration” section below.

Note that the SGP4 propagator returns raw x,y,z Cartesian coordinates in a “True Equator Mean Equinox” (TEME) reference frame that’s centered on the Earth but does not rotate with it — an “Earth centered inertial” (ECI) reference frame. The SGP4 propagator itself does not implement the math to convert these positions into more official ECI frames like J2000 or the ICRS, nor into any Earth-centered Earth-fixed (ECEF) frames like the ITRS, nor into latitudes and longitudes through an Earth ellipsoid like WGS84. For conversions into these other coordinate frames, look for a comprehensive astronomy library, like the Skyfield library that is built atop this one (see the section on Earth satellites in its documentation).

Usage

You will probably first want to to check whether your machine has successfully installed the fast SGP4 C++ code, or is using the slow Python version (in which case this value will be false):

>>> from sgp4.api import accelerated
>>> print(accelerated)
True

This library uses the same function names as the official C++ code, to help users who are already familiar with SGP4 in other languages. Here is how to compute the x,y,z position and velocity for the International Space Station at 20:42:00 on 2019 December 9:

>>> from sgp4.api import Satrec
>>>
>>> s = '1 25544U 98067A   19343.69339541  .00001764  00000-0  38792-4 0  9991'
>>> t = '2 25544  51.6439 211.2001 0007417  17.6667  85.6398 15.50103472202482'
>>> satellite = Satrec.twoline2rv(s, t)
>>>
>>> jd, fr = 2458826.5, 0.8625
>>> e, r, v = satellite.sgp4(jd, fr)
>>> e
0
>>> print(r)  # True Equator Mean Equinox position (km)
(-6088.92..., -936.13..., -2866.44...)
>>> print(v)  # True Equator Mean Equinox velocity (km/s)
(-1.525..., -5.538..., 5.068...)

As input, you can provide either:

  • A simple floating-point Julian Date for jd and the value 0.0 for fr, if you are happy with the precision of a 64-bit floating point number. Note that modern Julian Dates are greater than 2,450,000 which means that nearly half of the precision of a 64-bit float will be consumed by the whole part that specifies the day. The remaining digits will provide a precision for the fraction of around 20.1 µs. This should be no problem for the accuracy of your result — satellite positions are usually off by a few kilometers anyway, far less than a satellite moves in 20.1 µs — but if you run a solver that dives down into the microseconds while searching for a rising or setting time, the solver might be bothered by the 20.1 µs plateau between each jump in the satellite’s position.

  • Or, you can provide a coarse date jd plus a very precise fraction fr that supplies the rest of the value. The Julian Date for which the satellite position is computed is the sum of the two values. One common practice is to provide the whole number as jd and the fraction as fr; another is to have jd carry the fraction 0.5 since UTC midnight occurs halfway through each Julian Date. Either way, splitting the value allows a solver to run all the way down into the nanoseconds and still see SGP4 respond smoothly to tiny date adjustments with tiny changes in the resulting satellite position.

Here is how to intrepret the results:

  • e will be a non-zero error code if the satellite position could not be computed for the given date. You can from sgp4.api import SGP4_ERRORS to access a dictionary mapping error codes to error messages explaining what each code means.

  • r measures the satellite position in kilometers from the center of the earth in the idiosyncratic True Equator Mean Equinox coordinate frame used by SGP4.

  • v velocity is the rate at which the position is changing, expressed in kilometers per second.

If your application does not natively handle Julian dates, you can compute jd and fr from calendar dates using jday().

>>> from sgp4.api import jday
>>> jd, fr = jday(2019, 12, 9, 20, 42, 0)
>>> jd
2458826.5
>>> fr
0.8625

Double-checking your TLE lines

Because TLE is an old punch-card fixed-width format, it’s very sensitive to whether exactly the right number of spaces are positioned in exactly the right columns. If you suspect that your satellite elements aren’t getting loaded correctly, try calling the slow pure-Python version of twoline2rv(), which performs extra checks that the fast C++ doesn’t:

>>> from sgp4.earth_gravity import wgs72
>>> from sgp4.io import twoline2rv
>>> assert twoline2rv(s, t, wgs72)

Any TLE formatting errors will be raised as a ValueError.

Using OMM elements instead of TLE

The industry is migrating away from the original TLE format, because it will soon run out of satellite numbers.

  • Some TLE files now use a new “Alpha-5” convention that expands the range of satellite numbers by using an initial letter; for example, “E8493” means satellite 148493. This library supports the Alpha-5 convention and should return the correct integer in Python.

  • Some authorities are now distributing satellite elements in an “OMM” Orbit Mean Elements Message format that replaces the TLE format. You can learn about OMM in Dr. T.S. Kelso’s “A New Way to Obtain GP Data” at the CelesTrak site.

You can already try out experimental support for OMM:

>>> from sgp4 import omm

Reading OMM data takes two steps, because OMM supports several different text formats. First, parse the input text to recover the field names and values that it stores; second, build a Python satellite object from those field values. The fastest and most efficient format is usually CSV, since the column names are only given once, on the first line:

>>> with open('sample_omm.csv') as f:
...     for fields in omm.parse_csv(f):
...         sat = Satrec()
...         omm.initialize(sat, fields)

The JSON format is more verbose because it repeats the field names over again in every single record:

>>> import json
>>> with open('sample_omm.json') as f:
...     record_list = json.load(f)
>>> for fields in record_list:
...     sat = Satrec()
...     omm.initialize(sat, fields)

The most verbose format is XML:

>>> with open('sample_omm.xml') as f:
...     for fields in omm.parse_xml(f):
...         sat = Satrec()
...         omm.initialize(sat, fields)

Either way, the satellite object should wind up properly initialized and ready to start producing positions.

If you are interested in saving satellite parameters using the new OMM format, then read the section on “Export” below.

Epoch

Over a given satellite’s lifetime, dozens or hundreds of different TLE records will be produced as its orbit evolves. Each TLE record specifies the “epoch date” for which it is most accurate. Typically a TLE is only useful for a couple of weeks to either side of its epoch date, beyond which its predictions become unreliable.

Satellite objects natively provide their epoch as a two-digit year and then a fractional number of days into the year:

>>> satellite.epochyr
19
>>> satellite.epochdays
343.69339541

Because Sputnik was launched in 1957, satellite element sets will never refer to an earlier year, so years 57 through 99 mean 1957–1999 while 0 through 56 mean 2000–2056. The TLE format will presumably be obsolete in 2057 and have to be upgraded to 4-digit years.

To turn the number of days and its fraction into a calendar date and time, use the days2mdhms() function.

>>> from sgp4.api import days2mdhms
>>> month, day, hour, minute, second = days2mdhms(19, 343.69339541)
>>> month
12
>>> day
9
>>> hour
16
>>> minute
38
>>> second
29.363424

The SGP4 library also translates those two numbers into a Julian date and fractional Julian date, since Julian dates are more commonly used in astronomy.

>>> satellite.jdsatepoch
2458826.5
>>> satellite.jdsatepochF
0.69339541

Finally, a convenience function is available in the library if you need the epoch date and time as Python datetime.

>>> from sgp4.conveniences import sat_epoch_datetime
>>> sat_epoch_datetime(satellite)
datetime.datetime(2019, 12, 9, 16, 38, 29, 363423, tzinfo=UTC)

Array Acceleration

To avoid the expense of running a Python loop when you have many dates and times for which you want a position, you can pass your Julian dates as arrays. The array routine is only faster if your machine has successfully installed or compiled the SGP4 C++ code, so you might want to check first:

>>> from sgp4.api import accelerated
>>> print(accelerated)
True

To call the array routine, make NumPy arrays for jd and fr that are the same length:

>>> import numpy as np
>>> np.set_printoptions(precision=2)
>>> jd = np.array((2458826, 2458826, 2458826, 2458826))
>>> fr = np.array((0.0001, 0.0002, 0.0003, 0.0004))
>>> e, r, v = satellite.sgp4_array(jd, fr)
>>> print(e)
[0 0 0 0]
>>> print(r)
[[-3431.31  2620.15 -5252.97]
 [-3478.86  2575.14 -5243.87]
 [-3526.09  2529.89 -5234.28]
 [-3572.98  2484.41 -5224.19]]
>>> print(v)
[[-5.52 -5.19  1.02]
 [-5.49 -5.22  1.08]
 [-5.45 -5.25  1.14]
 [-5.41 -5.28  1.2 ]]

To avoid the expense of Python loops when you have many satellites and dates, build a SatrecArray from several individual satellites. Its sgp4() method will expect both jd and fr to be NumPy arrays, so if you only have one date, be sure to provide NumPy arrays of length one. Here is a sample computation for 2 satellites and 4 dates:

>>> u = '1 20580U 90037B   19342.88042116  .00000361  00000-0  11007-4 0  9996'
>>> w = '2 20580  28.4682 146.6676 0002639 185.9222 322.7238 15.09309432427086'
>>> satellite2 = Satrec.twoline2rv(u, w)
>>> from sgp4.api import SatrecArray
>>> a = SatrecArray([satellite, satellite2])
>>> e, r, v = a.sgp4(jd, fr)
>>> np.set_printoptions(precision=2)
>>> print(e)
[[0 0 0 0]
 [0 0 0 0]]
>>> print(r)
[[[-3431.31  2620.15 -5252.97]
  [-3478.86  2575.14 -5243.87]
  [-3526.09  2529.89 -5234.28]
  [-3572.98  2484.41 -5224.19]]
<BLANKLINE>
 [[ 5781.85  2564.   -2798.22]
  [ 5749.36  2618.59 -2814.63]
  [ 5716.35  2672.94 -2830.78]
  [ 5682.83  2727.05 -2846.68]]]
>>> print(v)
[[[-5.52 -5.19  1.02]
  [-5.49 -5.22  1.08]
  [-5.45 -5.25  1.14]
  [-5.41 -5.28  1.2 ]]
<BLANKLINE>
 [[-3.73  6.33 -1.91]
  [-3.79  6.3  -1.88]
  [-3.85  6.28 -1.85]
  [-3.91  6.25 -1.83]]]

Export

If you have a Satrec you want to share with friends or persist to a file, there’s an export routine that will turn it back into a TLE:

>>> from sgp4 import exporter
>>> line1, line2 = exporter.export_tle(satellite)
>>> line1
'1 25544U 98067A   19343.69339541  .00001764  00000-0  38792-4 0  9991'
>>> line2
'2 25544  51.6439 211.2001 0007417  17.6667  85.6398 15.50103472202482'

Happily, these are exactly the two TLE lines that we used to create this satellite object:

>>> (s == line1) and (t == line2)
True

Another export routine is available that produces the fields defined by the new OMM format (see the “OMM” section above):

>>> from pprint import pprint
>>> fields = exporter.export_omm(satellite, 'ISS (ZARYA)')
>>> pprint(fields)
{'ARG_OF_PERICENTER': 17.6667,
 'BSTAR': 3.8792e-05,
 'CENTER_NAME': 'EARTH',
 'CLASSIFICATION_TYPE': 'U',
 'ECCENTRICITY': 0.0007417,
 'ELEMENT_SET_NO': 999,
 'EPHEMERIS_TYPE': 0,
 'EPOCH': '2019-12-09T16:38:29.363423',
 'INCLINATION': 51.6439,
 'MEAN_ANOMALY': 85.6398,
 'MEAN_ELEMENT_THEORY': 'SGP4',
 'MEAN_MOTION': 15.501034720000002,
 'MEAN_MOTION_DDOT': 0.0,
 'MEAN_MOTION_DOT': 1.764e-05,
 'NORAD_CAT_ID': 25544,
 'OBJECT_ID': '1998-067A',
 'OBJECT_NAME': 'ISS (ZARYA)',
 'RA_OF_ASC_NODE': 211.2001,
 'REF_FRAME': 'TEME',
 'REV_AT_EPOCH': 20248,
 'TIME_SYSTEM': 'UTC'}

Gravity

The SGP4 algorithm operates atop a set of constants specifying how strong the Earth’s gravity is. The most recent official paper on SGP4 (see below) specifies that “We use WGS-72 as the default value”, so this Python module uses the same default. But in case you want to use either the old legacy version of the WGS-72 constants, or else the non-standard but more modern WGS-84 constants, the twoline2rv() constructor takes an optional argument:

>>> from sgp4.api import WGS72OLD, WGS72, WGS84
>>> satellite3 = Satrec.twoline2rv(s, t, WGS84)

You will in general get less accurate results if you choose WGS-84. Even though it reflects more recent and accurate measures of the Earth, satellite TLEs across the industry are most likely generated with WGS-72 as their basis. The positions you generate will better agree with the real positions of each satellite if you use the same underlying gravity constants as were used to generate the TLE.

Providing your own elements

If instead of parsing a TLE you want to specify orbital elements directly, you can pass them as floating point numbers to a satellite object’s sgp4init() method. For example, here’s how to build the same International Space Station orbit that we loaded from a TLE in the first code example above:

>>> satellite2 = Satrec()
>>> satellite2.sgp4init(
...     WGS72,                # gravity model
...     'i',                  # 'a' = old AFSPC mode, 'i' = improved mode
...     25544,                # satnum: Satellite number
...     25545.69339541,       # epoch: days since 1949 December 31 00:00 UT
...     3.8792e-05,           # bstar: drag coefficient (1/earth radii)
...     0.0,                  # ndot: ballistic coefficient (radians/minute^2)
...     0.0,                  # nddot: mean motion 2nd derivative (radians/minute^3)
...     0.0007417,            # ecco: eccentricity
...     0.3083420829620822,   # argpo: argument of perigee (radians 0..2pi)
...     0.9013560935706996,   # inclo: inclination (radians 0..pi)
...     1.4946964807494398,   # mo: mean anomaly (radians 0..2pi)
...     0.06763602333248933,  # no_kozai: mean motion (radians/minute)
...     3.686137125541276,    # nodeo: R.A. of ascending node (radians 0..2pi)
... )

You might notice that these numbers don’t look the same as the numbers in the TLE above. For example, the inclination was 51.6439 in the TLE, but is 0.901356 here. That’s because sgp4init() uses different units than the TLE format: angles are in radians rather than degrees. But this is the same orbit and will produce the same positions.

If you want to double-check that your elements are valid, you can run the function check_satrec(), which will raise a ValueError with an informative error message if any of the angles are out of bounds. If the satellite is fine, it simply returns, without raising an exception:

>>> from sgp4.conveniences import check_satrec
>>> check_satrec(satellite2)

Note that ndot and nddot are ignored by the SGP4 propagator, so you can leave them 0.0 without any effect on the resulting satellite positions. But they do at least get saved to the satellite object, and written out if you write the parameters to a TLE or OMM file (see the “Export” section, above).

To compute the “epoch” argument, take the epoch’s Julian date and subtract 2433281.5 days.

While the underlying sgp4init() routine leaves the attributes epochyr, epochdays, jdsatepoch, and jdsatepochF unset, this library goes ahead and sets them anyway for you, using the epoch you provided.

See the next section for the complete list of attributes that are available from the satellite record once it has been initialized.

Attributes

There are several dozen Satrec attributes that expose data from the underlying C++ SGP4 record. They fall into the following categories.

Identification

These are copied directly from the TLE record but aren’t used by the propagation math.

satnum_str — Satellite number, as a 5-character string.
satnum — Satellite number, converted to an integer.
classification'U', 'C', or 'S' indicating the element set is Unclassified, Classified, or Secret.
ephtype — Integer “ephemeris type”, used internally by space agencies to mark element sets that are not ready for publication; this field should always be 0 in published TLEs.
elnum — Element set number.
revnum — Satellite’s revolution number at the moment of the epoch, presumably counting from 1 following launch.

Orbital Elements

These are the orbital parameters, copied verbatim from the text of the TLE record. They describe the orbit at the moment of the TLE’s epoch and so remain constant even as the satellite record is used over and over again to propagate positions for different times.

epochyr — Epoch date: the last two digits of the year.
epochdays — Epoch date: the number of days into the year, including a decimal fraction for the UTC time of day.
ndot — First time derivative of the mean motion (loaded from the TLE, but otherwise ignored).
nddot — Second time derivative of the mean motion (loaded from the TLE, but otherwise ignored).
bstar — Ballistic drag coefficient B* (1/earth radii).
inclo — Inclination (radians 0 ≤ i < pi).
nodeo — Right ascension of ascending node (radians 0 ≤ Ω < 2pi).
ecco — Eccentricity.
argpo — Argument of perigee (radians 0 ≤ ω < 2pi).
mo — Mean anomaly (radians 0 ≤ M < 2pi).
no_kozai — Mean motion (radians/minute).
no — Alias for no_kozai, for compatibility with old code.

You can also access the epoch as a Julian date:

jdsatepoch — Whole part of the epoch’s Julian date.
jdsatepochF — Fractional part of the epoch’s Julian date.

Computed Orbit Properties

These are computed when the satellite is first loaded, as a convenience for callers who might be interested in them. They aren’t used by the SGP4 propagator itself.

a — Semi-major axis (earth radii).
altp — Altitude of the satellite at perigee (earth radii, assuming a spherical Earth).
alta — Altitude of the satellite at apogee (earth radii, assuming a spherical Earth).
argpdot — Rate at which the argument of perigee is changing (radians/minute).
gsto — Greenwich Sidereal Time at the satellite’s epoch (radians).
mdot — Rate at which the mean anomaly is changing (radians/minute)
nodedot — Rate at which the right ascension of the ascending node is changing (radians/minute).

Propagator Mode

operationmode — A single character that directs SGP4 to either operate in its modern 'i' improved mode or in its legacy 'a' AFSPC mode.
method — A single character, chosen automatically when the orbital elements were loaded, that indicates whether SGP4 has chosen to use its built-in 'n' Near Earth or 'd' Deep Space mode for this satellite.

Result of Most Recent Propagation

t — The time you gave when you most recently asked SGP4 to compute this satellite’s position, measured in minutes before (negative) or after (positive) the satellite’s epoch.
error — Error code produced by the most recent SGP4 propagation you performed with this element set.

The possible error codes are:

  1. No error.

  2. Mean eccentricity is outside the range 0 ≤ e < 1.

  3. Mean motion has fallen below zero.

  4. Perturbed eccentricity is outside the range 0 ≤ e ≤ 1.

  5. Length of the orbit’s semi-latus rectum has fallen below zero.

  6. (No longer used.)

  7. Orbit has decayed: the computed position is underground. (The position is still returned, in case the vector is helpful to software that might be searching for the moment of re-entry.)

Mean Elements From Most Recent Propagation

Each time the SGP4 routine generates a satellite position, it also saves a set of “singly averaged mean elements” that describe shape of the satellite’s orbit at that moment. They are averaged with respect to the mean anomaly and include the effects of secular gravity, atmospheric drag, and — in Deep Space mode — of those pertubations from the Sun and Moon that SGP4 averages over an entire revolution of each of those bodies. They omit both the shorter-term and longer-term periodic pertubations from the Sun and Moon that SGP4 applies right before computing each position.

am — Average semi-major axis (earth radii).
em — Average eccentricity.
im — Average inclination (radians).
Om — Average right ascension of ascending node (radians).
om — Average argument of perigee (radians).
mm — Average mean anomaly (radians).
nm — Average mean motion (radians/minute).

Gravity Model Parameters

When the satellite record is initialized, your choice of gravity model results in a slate of eight constants being copied in:

tumin — Minutes in one “time unit”.
xke — The reciprocal of tumin.
mu — Earth’s gravitational parameter (km³/s²).
radiusearthkm — Radius of the earth (km).
j2, j3, j4 — Un-normalized zonal harmonic values J₂, J₃, and J₄.
j3oj2 — The ratio J₃/J₂.

Printing satellite attributes

If you want to print out a satellite, this library provides a convenient “attribute dump” routine that takes a satellite and generates lines that list its attributes:

from sys import stdout
from sgp4.conveniences import dump_satrec

stdout.writelines(dump_satrec(satellite))

If you want to compare two satellites, then simply pass a second argument; the second satellite’s attributes will be printed in a second column next to those of the first.

stdout.writelines(dump_satrec(satellite, satellite2))

Validation against the official algorithm

This implementation passes all of the automated tests in the August 2010 release of the reference implementation of SGP4 by Vallado et al., who originally published their revision of SGP4 in 2006:

Vallado, David A., Paul Crawford, Richard Hujsak, and T.S. Kelso, “Revisiting Spacetrack Report #3,” presented at the AIAA/AAS Astrodynamics Specialist Conference, Keystone, CO, 2006 August 21–24.

If you would like to review the paper, it is available online. You can always download the latest version of their code for comparison against this Python module (or other implementations) at AIAA-2006-6753.zip.

For developers

Developers can check out this full project from GitHub:

https://github.com/brandon-rhodes/python-sgp4

To run its unit tests, install Python 2, Python 3, and the tox testing tool. The tests runing in Python 2 will exercise the fallback pure-Python version of the routines, while Python 3 exercises the fast new C++ accelerated code:

cd python-sgp4
tox

Legacy API

Before this library pivoted to wrapping Vallado’s official C++ code and was operating in pure Python only, it had a slightly quirkier API, which is still supported for compatibility with older clients. You can learn about it by reading the documentation from version 1.4 or earlier:

https://pypi.org/project/sgp4/1.4/

Changelog

2024-02-15 — 2.24

  • The documentation now specifies the acceptable range for orbital element angles like inclination and mean anomaly, and a new function check_satrec(sat) will tell the caller if any of the angles are out of bounds.

  • The documentation now gives an example of loading elements from JSON.

  • Tweaked the fallback Python code to accept TLE lines without a final checksum character in the 69th column, to match the C++ code.

2023-10-01 — 2.23

  • Tweaked tests to resolve breakage introduced by Python 3.12.

2023-04-27 — 2.22

  • Added a satnum_str attribute, exposing the fact that the C++ now stores the satellite number as a string; and check that satnum is never greater than 339999.

  • Fixed the units of the nddot attribute when the value is loaded from an OMM record. (Since the TLE computation itself ignores this attribute, this did not affect any satellite positions.)

  • Enhanced the fallback Python version of twoline2rv() to verify that TLE lines are ASCII, and added documentation using it to double-check TLEs that might suffer from non-ASCII characters.

  • If the user doesn’t set a satellite’s classification, it now defaults to 'U' for ‘unclassified’.

2022-04-06 — 2.21

  • Added dump_satrec() to the sgp4.conveniences module.

  • Fixed the Satrec attribute .error, which was previously building a nonsense integer from the wrong data in memory.

  • Removed .whichconst from Python Satrec, to help users avoid writing code that will break when the C++ extension is available.

2021-07-01 — 2.20

  • Taught sgp4init() to round both epochdays and jdsatepochF to the same 8 decimal places used for the date fraction in a TLE, if the user-supplied epoch itself has 8 or fewer digits behind the decimal point. This should make it easier to build satellites that round-trip to TLE format with perfect accuracy.

  • Fixed how export_tle() formats the BSTAR field when its value, if written in scientific notation, has a positive exponent.

  • Fixed the epochyr assigned by sgp4init() so years before 2000 have two digits instead of three (for example, so that 1980 produces an epochyr of 80 instead of 980).

2021-04-22 — 2.19

  • Extended the documentation on the Python Package Index and in the module docstring so it lists every Satrec attribute that this library exposes; even the more obscure ones might be useful to folks working to analyze satellite orbits.

2021-03-08 — 2.18

  • If a TLE satellite number lacks the required 5 digits, twoline2rv() now gives the underlying C++ library a little help so it can still parse the classification and international designator correctly.

  • The Satrec attributes jdsatepoch, jdsatepochF, epochyr, and epochdays are now writeable, so users can adjust their values manually — which should make up for the fact that the sgp4init() method can’t set them with full floating point precision.

2021-02-17 — 2.17 — Fixed where in the output array the sgp4_array() method writes NaN values when an SGP4 propagation fails.
2021-02-12 — 2.16 — Fixed days2mdhms() rounding to always match TLE epoch.
2021-01-08 — 2.15 — Fixed parsing of the satnum TLE field in the Python fallback code, when the field has a leading space; added OMM export routine.
2020-12-16 — 2.14 — New data formats: added OMM message support for both XML and CSV, and added support for the new Alpha-5 extension to TLE files.
2020-10-14 — 2.13 — Enhanced sgp4init() with custom code that also sets the epochdays and epochyr satellite attributes.
2020-05-28 — 2.12 — Moved the decision of whether to set the locale during twoline2rv() from import time to runtime, for users who change locales after their application is up and running.
2020-05-24 — 2.11 — Fixed a regression in how dates are split into hours, minutes, and seconds that would sometimes produce a time whose second=60, crashing the pure-Python version of the library.
2020-05-22 — 2.10 — Switch the locale temporarily to C during the C++ accelerated twoline2rv(), since it does not protect its sscanf() calls from locales that, like German, expect comma decimal points instead of the period decimal points always used in a TLE.
2020-05-21 — 2.9 — Added sat_epoch_datetime(), expanded documentation around converting a satellite epoch to a date and time, and started rounding the epoch to exactly the digits provided in the TLE; and removed the Satrec.epoch attribute from Python fallback code to better match the C++ version.
2020-05-07 — 2.8 — New function jday_datetime() is now available in the sgp4.conveniences module, thanks to Egemen Imre.
2020-04-24 — 2.7 — New method sgp4init() (thank you, Chris Lewicki!) is available.
2020-04-20 — 2.6 — New routine export_tle() (thank you, Egemen Imre!) is available. Improved how the accelerated C++ backend parses the intldesg string and the revnum integer.
2020-03-22 — 2.5 — Gave the new accelerated twoline2rv() an optional argument that lets the user choose a non-standard set of gravity constants.
2020-02-25 — 2.4 — Improved the jday() docstring; made the old legacy Python resilient if the day of the month is out-of-range (past the end of the month) in a TLE; and Mark Rutten fixed the C++ so it compiles on Windows!
2020-02-04 — 2.3 — Removed experimental code that caused performance problems for users with Numba installed.
2020-02-02 — 2.2 — A second release on Palindrome Day: fix the Satrec .epochyr attribute so it behaves the same way in Python as it does in the official C library, where it is only the last 2 digits of the year; and make .no available in the Python fallback case as well.
2020-02-02 — 2.1 — Add vectorized array method to Satrec object; add .no attribute to new Satrec object to support old code that has not migrated to the new name .no_kozai; gave Python wrapper classes __slots__ to avoid the expense of a per-object attribute dictionary.
2020-01-30 — 2.0 — Rewrite API to use genuine Vallado C++ code on those systems where it can be compiled; add accelerated vectorized array interface; make gstime() a public function; clarify format error message.
2015-01-15 — 1.4 — Display detailed help when TLE input does not match format.
2014-06-26 — 1.3 — Return (NaN,NaN,NaN) vectors on error and set .error_message
2013-11-29 — 1.2 — Made epochyr 4 digits; add datetime for .epoch
2012-11-22 — 1.1 — Python 3 compatibility; more documentation
2012-08-27 — 1.0 — Initial release

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

sgp4-2.24.tar.gz (180.1 kB view details)

Uploaded Source

Built Distributions

sgp4-2.24-cp312-cp312-win_amd64.whl (163.5 kB view details)

Uploaded CPython 3.12 Windows x86-64

sgp4-2.24-cp312-cp312-win32.whl (161.4 kB view details)

Uploaded CPython 3.12 Windows x86

sgp4-2.24-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (235.1 kB view details)

Uploaded CPython 3.12 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

sgp4-2.24-cp312-cp312-macosx_11_0_arm64.whl (161.3 kB view details)

Uploaded CPython 3.12 macOS 11.0+ ARM64

sgp4-2.24-cp312-cp312-macosx_10_13_x86_64.whl (162.1 kB view details)

Uploaded CPython 3.12 macOS 10.13+ x86-64

sgp4-2.24-cp312-cp312-macosx_10_13_universal2.whl (186.5 kB view details)

Uploaded CPython 3.12 macOS 10.13+ universal2 (ARM64, x86-64)

sgp4-2.24-cp311-cp311-win_amd64.whl (163.5 kB view details)

Uploaded CPython 3.11 Windows x86-64

sgp4-2.24-cp311-cp311-win32.whl (161.3 kB view details)

Uploaded CPython 3.11 Windows x86

sgp4-2.24-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.5 kB view details)

Uploaded CPython 3.11 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

sgp4-2.24-cp311-cp311-macosx_11_0_arm64.whl (161.3 kB view details)

Uploaded CPython 3.11 macOS 11.0+ ARM64

sgp4-2.24-cp311-cp311-macosx_10_9_x86_64.whl (162.1 kB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

sgp4-2.24-cp311-cp311-macosx_10_9_universal2.whl (186.4 kB view details)

Uploaded CPython 3.11 macOS 10.9+ universal2 (ARM64, x86-64)

sgp4-2.24-cp310-cp310-win_amd64.whl (163.5 kB view details)

Uploaded CPython 3.10 Windows x86-64

sgp4-2.24-cp310-cp310-win32.whl (161.3 kB view details)

Uploaded CPython 3.10 Windows x86

sgp4-2.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.5 kB view details)

Uploaded CPython 3.10 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

sgp4-2.24-cp310-cp310-macosx_11_0_arm64.whl (161.3 kB view details)

Uploaded CPython 3.10 macOS 11.0+ ARM64

sgp4-2.24-cp310-cp310-macosx_10_9_x86_64.whl (162.1 kB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

sgp4-2.24-cp310-cp310-macosx_10_9_universal2.whl (186.4 kB view details)

Uploaded CPython 3.10 macOS 10.9+ universal2 (ARM64, x86-64)

sgp4-2.24-cp39-cp39-win_amd64.whl (163.5 kB view details)

Uploaded CPython 3.9 Windows x86-64

sgp4-2.24-cp39-cp39-win32.whl (161.3 kB view details)

Uploaded CPython 3.9 Windows x86

sgp4-2.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.4 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

sgp4-2.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (231.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

sgp4-2.24-cp39-cp39-macosx_11_0_arm64.whl (161.3 kB view details)

Uploaded CPython 3.9 macOS 11.0+ ARM64

sgp4-2.24-cp39-cp39-macosx_10_9_x86_64.whl (162.1 kB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

sgp4-2.24-cp39-cp39-macosx_10_9_universal2.whl (186.4 kB view details)

Uploaded CPython 3.9 macOS 10.9+ universal2 (ARM64, x86-64)

sgp4-2.24-cp38-cp38-win_amd64.whl (163.4 kB view details)

Uploaded CPython 3.8 Windows x86-64

sgp4-2.24-cp38-cp38-win32.whl (161.3 kB view details)

Uploaded CPython 3.8 Windows x86

sgp4-2.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.6 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

sgp4-2.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (232.2 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

sgp4-2.24-cp38-cp38-macosx_11_0_arm64.whl (161.2 kB view details)

Uploaded CPython 3.8 macOS 11.0+ ARM64

sgp4-2.24-cp38-cp38-macosx_10_9_x86_64.whl (162.1 kB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

sgp4-2.24-cp38-cp38-macosx_10_9_universal2.whl (186.4 kB view details)

Uploaded CPython 3.8 macOS 10.9+ universal2 (ARM64, x86-64)

sgp4-2.24-cp37-cp37m-win_amd64.whl (163.4 kB view details)

Uploaded CPython 3.7m Windows x86-64

sgp4-2.24-cp37-cp37m-win32.whl (161.3 kB view details)

Uploaded CPython 3.7m Windows x86

sgp4-2.24-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl (234.1 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ x86-64 manylinux: glibc 2.5+ x86-64

sgp4-2.24-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl (231.6 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.17+ i686 manylinux: glibc 2.5+ i686

sgp4-2.24-cp37-cp37m-macosx_10_9_x86_64.whl (162.1 kB view details)

Uploaded CPython 3.7m macOS 10.9+ x86-64

File details

Details for the file sgp4-2.24.tar.gz.

File metadata

  • Download URL: sgp4-2.24.tar.gz
  • Upload date:
  • Size: 180.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24.tar.gz
Algorithm Hash digest
SHA256 5655249f276ea23fbdae9e881ab01d82420285b45dc76d0da4f424e3647f8352
MD5 c9dd73c28a570427aa06110444fc02f1
BLAKE2b-256 10fa4251a1cac8a23ccc552ed367ae7fa7439f631022b7db5472ce99f43b49b3

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: sgp4-2.24-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 163.5 kB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 8b4c526b1fc8571472256de0e808ed72b16b0aeb588498659935eb9c64f4f01b
MD5 78b7acaf7982066b6b93af22f6691f3e
BLAKE2b-256 6696900b61651a6cf2c157ee4a17d23f205a394473e1dcefedcc48cb2d489821

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp312-cp312-win32.whl.

File metadata

  • Download URL: sgp4-2.24-cp312-cp312-win32.whl
  • Upload date:
  • Size: 161.4 kB
  • Tags: CPython 3.12, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp312-cp312-win32.whl
Algorithm Hash digest
SHA256 ecbff0d67496022580c7b6f05794a9db41ee9805d433203093464b4c7fe2991b
MD5 6ccfd248d0174b5a9c3bbfe3119564f3
BLAKE2b-256 852e5d7f3ca176f41b72caa1eca0eaed57991ad506de9e2e156296c8724e2942

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f2afc79e0206596868f509485339234e0d4426c0d69e281faa83d50bb8cf962e
MD5 e51fb94f20aea0804bbf5042a6bdf102
BLAKE2b-256 076f75e87d381fefc8493f4e2b134041181191acd7332b883c85ff2d25c892a2

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 3315a3ef0a89de9d1a89da3a623130951856791c3284edb64bbda979d45c53e8
MD5 e0223bc2db57fb837367b9141bb74341
BLAKE2b-256 726baa04a08678a9beb61d22706c362eb3280ca7e24fe8aaf9d90553d4bc290f

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp312-cp312-macosx_10_13_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp312-cp312-macosx_10_13_x86_64.whl
Algorithm Hash digest
SHA256 d7a20f62429c7dc11f6bcef93fe5f04d6c97f214c418382056ef117b8250ab02
MD5 348e79d77d63226c8c1ef8888e8d102a
BLAKE2b-256 a1e81f2d219a243adc2bcf01369d625b2ed7fbf4f3c3faed6008608f028bac82

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp312-cp312-macosx_10_13_universal2.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp312-cp312-macosx_10_13_universal2.whl
Algorithm Hash digest
SHA256 4ff1958f3380c120d2e89f92fb9182b9c5295ebb2eb79994855e7e1857973af4
MD5 8a59fb528aa498734c4dceb5a49d17e0
BLAKE2b-256 2c0a790c4df1cb22d2be3278de61bdd33044a83a19bf6640e75ee92fb53eab03

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: sgp4-2.24-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 163.5 kB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 784816ea55df243b22fde2aeef110d2084c4474f6a50d0ae6d5e35c7bd8466bf
MD5 d1f7d8fa47bfa56277ca78efeaa3ce2e
BLAKE2b-256 4b500c5156b0b3683840f2219a5150f25d3f89b44aadbe6bb5329fa9891b3977

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp311-cp311-win32.whl.

File metadata

  • Download URL: sgp4-2.24-cp311-cp311-win32.whl
  • Upload date:
  • Size: 161.3 kB
  • Tags: CPython 3.11, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp311-cp311-win32.whl
Algorithm Hash digest
SHA256 a6c5ebbbfd9ec7cc38d08aee6ec247d2ccaf31d71e3d262f5dd7a570b364170e
MD5 f4c63506d690e5ae75dcfc856e168a40
BLAKE2b-256 f9fac598af4bb58650c8b1fb1b21b5139fc8a8bb0284a514a7eba9cb0469b819

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp311-cp311-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 14322850988af17d75715bfdb3fa9fe9266fc6e1afe6d43e0eff9860034cd67b
MD5 3f8a912b35f8c15b939e13a86900409d
BLAKE2b-256 3ae0ce99279b511d523b71cd2eb55ff8cc83426683723e9c5351535d0598f7e7

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f4f5a84a9ddb1a434e55f2e23b0d80c3dc5feda7d1bdd77ee1c4cc1abd170010
MD5 753ad5f0c7ed28a77eb39be338b9dd9b
BLAKE2b-256 914ab426169889f6a52eb1b6c665f8e31bae872ddb69d05b038bb04782066e9e

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 dc313d41a24783adcb31f4fbda034215d11cb56eadbf0dd262e760c6c1881692
MD5 b5e8368ab6838e02936ccf9d449bd43e
BLAKE2b-256 84dbba9f3f98d03be382310ed15329b48825c1efbd286b0e1ab05bbc99a0ef81

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp311-cp311-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp311-cp311-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b85ce3c0b4f9050c1e3702921e770518bc2a5c41941e66b052eaf7f6f90f744b
MD5 436754fd23c589547745f8d72d9f7e0a
BLAKE2b-256 cbcd1c7673f6d48c46cc11c7024f0b686baa14205c0d78b57fc61790569a5306

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: sgp4-2.24-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 163.5 kB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a2b286ea18b46164c193e61d2bda74d9931593c072c794855cba35c15620925f
MD5 2a30e325abff2dc89ef30959c199d913
BLAKE2b-256 b7a9b9d264da92b4019897d7337de82f581700a071a2cb5992ff18dbe3e38f38

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp310-cp310-win32.whl.

File metadata

  • Download URL: sgp4-2.24-cp310-cp310-win32.whl
  • Upload date:
  • Size: 161.3 kB
  • Tags: CPython 3.10, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp310-cp310-win32.whl
Algorithm Hash digest
SHA256 c8113c329091f20e81eadf473f6db19454a4dc43538c80d3d5bc2023c428e06a
MD5 5d52ca95d6b0e8ff41908040fbd4d62e
BLAKE2b-256 b216e612597d4c2f308c33fc3925eefd4e441ce509905237a9864ca14afb6447

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 9e7e17686f92b4da5b831265dc66f2e83583e638e5dfdaf0ba36fbcda6d0172e
MD5 5d7d7c55b811b844a00dfda4d483236a
BLAKE2b-256 6d4d7ca9a7d529fdf72bbb6be10eddd312a7087881ba56b4e28b09fa4c5d007b

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6a8b09424ac89701ff87cce707224fea35713c17de4c5ae3c2947e21933efe3d
MD5 df15cb6085b596d7cb063a50de53c1b3
BLAKE2b-256 2fea9b828ff008d1780fc23aa8b3127edbc15d96b323a1c4d91015bd05f1fb83

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 af76b4803deedc023768a344eccf264ed34288d244223293dd79e4506475df61
MD5 90f614a9e93ae0fa1a41ddd4c9d95728
BLAKE2b-256 c28625c3de82b9cf4bc422ba03e83a611dd91ba65efd05df5b8fb736262e1710

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp310-cp310-macosx_10_9_universal2.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp310-cp310-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 11c84e29891908d480dc008e9e5743720eed29ee00d6546a5851284b06d646af
MD5 78b67d12615f24cfd613ca2bad1e1cbd
BLAKE2b-256 160cd9162580c2cbf106aae351776e30dd8258db8ecadc5f8393354d95eee9f2

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: sgp4-2.24-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 163.5 kB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 b9fdfdffe317943269d11f5194ec819a2ffb5c6cdfc5128a266260266d0fb83f
MD5 3a34273f367d33f4c9c166d4b0850c50
BLAKE2b-256 e0407c69e3d042596bcfb3c947fd692aeb4082f4e83898df54ac820243ecf0cb

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp39-cp39-win32.whl.

File metadata

  • Download URL: sgp4-2.24-cp39-cp39-win32.whl
  • Upload date:
  • Size: 161.3 kB
  • Tags: CPython 3.9, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp39-cp39-win32.whl
Algorithm Hash digest
SHA256 f1063191f808d696ca6aaaf003ec766268a14e77eae253b06479cc2dc5eb09d2
MD5 64399fda329303a4715c0e328e5e4dc4
BLAKE2b-256 e250f020ebf9454f9cdad52c4a03d29b18fedf5110cec778fa6fd0e77d823a3e

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp39-cp39-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f3c2e777ea5514093ad2799e04470c21f539da07fdfeb067645e0de7ded4888
MD5 631e256ca3313ada089fa7c23ccaf19e
BLAKE2b-256 99dbe6dbaceaa690290d90b3eccf9b7b8f00a28f8a16084a5b66165348a5d545

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp39-cp39-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 dd5a5ca01cb02c8b0a79d96d3439ac004fe22891abec9b6e08625fdb397c3357
MD5 414a769188db82709d5c5093185eb68d
BLAKE2b-256 c2f58caac99cdc337459652abf8c79ff6b91722e182c4fb27d9afea123e7f191

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp39-cp39-macosx_11_0_arm64.whl.

File metadata

  • Download URL: sgp4-2.24-cp39-cp39-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 161.3 kB
  • Tags: CPython 3.9, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp39-cp39-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 7e96c9fbb4025379bb4041497dd58a06d1d12bf7c84ff2faedadfb45a7b7c933
MD5 67bc390b2e3dd641607b39ed7ecd2c0f
BLAKE2b-256 cd4168a0aa5c08555919cc62c7d95454ecc5d4822ad8ecca209b2b6dfe680bae

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 12c07e8a7ea6eed90bd4353940245adb6afe6de9f8325063fc07766978749d6e
MD5 75ca1443ae08acfb0227f8063e43447e
BLAKE2b-256 2c06f315462fbbefeff729a00b961740eaf25711230011d9739e1bd05fd90b84

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp39-cp39-macosx_10_9_universal2.whl.

File metadata

  • Download URL: sgp4-2.24-cp39-cp39-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 186.4 kB
  • Tags: CPython 3.9, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp39-cp39-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 b7b64069011e04ae7ab1d7b39ba60485688e8544bebe795fd1faa5938b0baaff
MD5 bd7192f4895636cbefba2fdc4aac14a4
BLAKE2b-256 dfc01bf46b754f124caf4ca9ed8633ab0b4b0fbc6df0703ef4bb4a06fbae77a5

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: sgp4-2.24-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 163.4 kB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 13133253c7e3f0f63472d42176e3387016ea337c36b7bc1b3a3dfc0c236620a1
MD5 674f96c2beb097e9c5c6b1b17e9966d8
BLAKE2b-256 ac73103be219a270c09d1dbec34396a97f05a364aebad86f459fe456a7bbdf5b

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp38-cp38-win32.whl.

File metadata

  • Download URL: sgp4-2.24-cp38-cp38-win32.whl
  • Upload date:
  • Size: 161.3 kB
  • Tags: CPython 3.8, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp38-cp38-win32.whl
Algorithm Hash digest
SHA256 bac9c606feebeab2c7154b7b8e39a518b9d36359da41d54341eefe0088517322
MD5 31a2dfae0f2c602dc77f532301ca5e53
BLAKE2b-256 c16fa8e43ce2be67a1d91235d12f89e4a11aab9d421048394356b61d499be4ba

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp38-cp38-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 abab42868b1ac61a35a7aa3fdd3ade86684fe9fe89c690450b3c68b759ab0413
MD5 0c86409245ba96da683d4dcea4f7e394
BLAKE2b-256 49237e8721c20d752d66a562caa517f1990b909cbdd07ea6a3da11da8dd9f91a

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp38-cp38-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 8c79a0aa347a0eb227f8ab9b0694410f71a4ed44d0facfc2a2a7dd08e48e212c
MD5 a15d73ff37b519c7ea5768e82a3cc020
BLAKE2b-256 633b8951903d37b975539dc9a38150e65d08d0fa34e1eddae67e5eba42ac3f73

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp38-cp38-macosx_11_0_arm64.whl.

File metadata

  • Download URL: sgp4-2.24-cp38-cp38-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 161.2 kB
  • Tags: CPython 3.8, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp38-cp38-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 143f5089892bdca1d3683a032504164b7d1771e5f47a433fe014f674c22accab
MD5 aef897cb887c32238a03037824231b90
BLAKE2b-256 be7b835c9166d0047533ad737c73e4080b56f8b0aa2d44c63a72bda4e5bfc06a

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 c38070609d4592c96dd6633151ae96ffa93f3e47d715203062c051f0dee7cb87
MD5 a3a45e196d703556fc4d127e93fba636
BLAKE2b-256 a0fc31b7c40eeaa3ba923c11a2eb093958b07383d382922636bfd65fb8a42f3b

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp38-cp38-macosx_10_9_universal2.whl.

File metadata

  • Download URL: sgp4-2.24-cp38-cp38-macosx_10_9_universal2.whl
  • Upload date:
  • Size: 186.4 kB
  • Tags: CPython 3.8, macOS 10.9+ universal2 (ARM64, x86-64)
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp38-cp38-macosx_10_9_universal2.whl
Algorithm Hash digest
SHA256 418efa2b5d797107c4675a6d4f24f10855e11ed93e78d33651b7416564161839
MD5 2c858d3657a5c3d68890a3142c9d98d0
BLAKE2b-256 fe5acc5ef8807c6eeda9672a719b4da9e1a4ab498261894753f372a7d1b0de0d

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: sgp4-2.24-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 163.4 kB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 831ff81d63e0224efa9809dbb2e6aaa630a3cf0fad6f147e0196a5b00e4f64a7
MD5 e0af5a20ac6f72201d5f3ca3acb1260f
BLAKE2b-256 268845892ec7c92851bf9d271e5f5d55a9a2e3aec0d836c0e4a35dc556018bbf

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp37-cp37m-win32.whl.

File metadata

  • Download URL: sgp4-2.24-cp37-cp37m-win32.whl
  • Upload date:
  • Size: 161.3 kB
  • Tags: CPython 3.7m, Windows x86
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.11

File hashes

Hashes for sgp4-2.24-cp37-cp37m-win32.whl
Algorithm Hash digest
SHA256 d15e0b016702cc1c50f789d965c3a45323dc0b6eeb2f658fb4598c925cbb992d
MD5 45c13f0d9dfbe5499c183b7a058fb654
BLAKE2b-256 1e2fcb6960e09c5c68f6aac6ab672588ea913637afdd4fc2e27501d960ffcf91

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 2765a9529f995160a3682b8111aa3b689fa643cb3ab9dfec47ab7afab0f6a3aa
MD5 556c6394f8ac3a4e69a4cc702e8fb52e
BLAKE2b-256 bad7c570c6e72a422f472072ca2586034096cb58d3495e0b1da6710cbca83f4f

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp37-cp37m-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl
Algorithm Hash digest
SHA256 7b678e799f5a12cd4fd2a383319a0ff6e0a800bf11085b4c4f97aad984809b0a
MD5 5235ab93c131756d1ed2850cb7dc0c24
BLAKE2b-256 e58c87c79e46c6a9e79575ce2ba2dd6be9af9dd0a0ece78b68d7f203dd738e9d

See more details on using hashes here.

File details

Details for the file sgp4-2.24-cp37-cp37m-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for sgp4-2.24-cp37-cp37m-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 e12cbd32396b7bd3611266e823760d34eb76d3e6551ef45cb0e7d184daa4e582
MD5 c121cdff2b4a5ea27e82435af5acbe2c
BLAKE2b-256 793db383d2161fd13ace74182c740e345559c9fad7aa4d329bdb879c0df7dce0

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page