Name | cysgp4 JSON |
Version |
0.3.6
JSON |
| download |
home_page | None |
Summary | cysgp4: a wrapper around the SGP4 package, for sat TLE calculations |
upload_time | 2024-04-17 13:40:35 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.8 |
license | GPLv3 |
keywords |
astronomy
science
|
VCS |
|
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
******
cysgp4
******
.. container::
|License-GPL| |License-Apache| |License-BSD3|
.. container::
|PyPI Badge| |PyPI Downloads|
.. container::
|Conda-Version| |Conda-Platforms-Badge| |Conda-Downloads-Badge|
- *Version:* 0.3.6
- *Lead author/package maintainer:* Benjamin Winkel
- *Contributor(s):* Gyula I.G. Józsa
- *Repository:* `on GitHub <https://github.com/bwinkel/cysgp4>`__
- *Bug tracker:* `on GitHub <https://github.com/bwinkel/cysgp4/issues>`__
- *User manual:* `stable <https://bwinkel.github.io/cysgp4/>`__ | `developer <https://bwinkel.github.io/cysgp4/latest/>`__
Project Status
==============
.. container::
|Azure Status|
Purpose
=======
The `cysgp4` package is a `Cython <https://www.cython.org>`_-powered wrapper
of the `sgp4lib <https://www.danrw.com/sgp4/>`_ library (by Daniel Warner) to
compute satellite positions from two-line elements (TLE).
It provides similar functionality as the well-known `sgp4
<https://pypi.org/project/sgp4/>`_ Python package (by Brandon Rhodes), which
uses `Numba <http://numba.pydata.org/>`_ internally to speed-up the
calculations. In contrast to `sgp4`_, `cysgp4` can work well with arrays of
TLEs and/or times and make use of multi-core platforms (via OpenMP) to boost
processing times a lot.
Installation
============
We highly recommend to use `cysgp4` with the `Anaconda Python distribution <https://www.anaconda.com/>`_, in which
case installiation is as easy as ::
conda install -c conda-forge cysgp4
Otherwise, you should install cysgp4 via `pip`::
python -m pip install cysgp4
The installation is also possible from source. `Detailed installation
instructions <https://bwinkel.github.io/cysgp4/latest/install.html>`_
can be found in the user manual.
Dependencies
------------
We kept the dependencies as minimal as possible. The following packages are
required:
- `Python 3.8` or later
- `numpy 1.20` or later
If you want to run the notebooks yourself, you will also need the Jupyter
server and install matplotlib. To run the tests, you'll need `sgp4
<https://pypi.org/project/sgp4/>`_.
Note, for compiling the C-extension, OpenMP is used for parallelization. If you use gcc, for example, you should have at least version 4.8 otherwise the setup-script may fail. Again, see `Detailed installation instructions` for
more information.
Usage
=====
Using cysgp4 is possible via an object-oriented interface or with a
fast numpy-array functional approach. The former works like this:
.. code-block:: python
import cysgp4
# Define a date/time and an observer
pydt = cysgp4.PyDateTime.from_mjd(58805.57)
lon_deg, lat_deg = 6.88375, 50.525
alt_km = 0.366
obs = cysgp4.PyObserver(lon_deg, lat_deg, alt_km)
# Define satellite properties/orbit via two-line element string (TLE)
hst_tle = cysgp4.PyTle(
'HST',
'1 20580U 90037B 19321.38711875 .00000471 00000-0 17700-4 0 9991',
'2 20580 28.4699 288.8102 0002495 321.7771 171.5855 15.09299865423838',
)
# Create a satellite object for querying coordinates
sat = cysgp4.Satellite(hst_tle, obs, pydt)
sat.eci_pos().loc # ECI cartesian position, km
(5879.5931344459295, 1545.7455647032068, 3287.4155452595)
sat.eci_pos().vel # ECI cartesian velocity, km/s
(-1.8205895517672226, 7.374044252723081, -0.20697960810978586)
sat.geo_pos() # geographic (geodetic) position, lon/lat/alt
<PyCoordGeodetic: 112.2146d, 28.5509d, 538.0186km>
sat.topo_pos() # topocentric position, az/el/dist/dist_rate
<PyCoordTopocentric: 60.2453d, -35.6844d, 8314.5683km, 3.5087km/s>
# One can change time to determine positions at another moment
sat.mjd += 1 / 720. # one minute later
sat.topo_pos()
<PyCoordTopocentric: 54.8446d, -38.2749d, 8734.9195km, 3.4885km/s>
In many cases, however, one probably wants to calculate coordinates for a
(large) number of satellites, observer locations, and/or observing times. For
this, the function `~cysgp4.propagate_many` is useful. This is an array
interface to the sgp4 calculations, which allows to perform calculations for
different satellite TLEs, observers and times in a parallelized manner.
`~numpy` broadcasting `rules
<https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html>`_ apply:
.. code-block:: python
import requests
import numpy as np
from cysgp4 import PyTle, PyObserver, propagate_many
# Download many TLEs from a website
url = 'http://celestrak.com/NORAD/elements/science.txt'
ctrak_science = requests.get(url)
all_lines = ctrak_science.text.split('\\r\\n')
# Need to convert them to a list of tuples (each tuple consisting
# of the three TLE strings)
tle_list = list(zip(*tuple(
all_lines[idx::3] for idx in range(3)
)))
# Create an array of PyTle and PyObserver objects, and MJDs
tles = np.array([
PyTle(*tle) for tle in tle_list
])[np.newaxis, np.newaxis, :20] # use first 20 TLEs
observers = np.array([
PyObserver(6.88375, 50.525, 0.366),
PyObserver(16.88375, 50.525, 0.366),
])[np.newaxis, :, np.newaxis]
mjds = np.linspace(
58805.5, 58806.5, 1000 # 1000 time steps
)[:, np.newaxis, np.newaxis]
# The result is a dictionary
result = propagate_many(mjds, tles, observers)
print(result.keys())
dict_keys(['eci_pos', 'eci_vel', 'geo', 'topo'])
# Returned array shapes are as follows; last array dimension
# contains the coordinate pairs.
print(np.broadcast(mjds, tles, observers).shape)
(1000, 2, 20)
print(result['eci_pos'].shape, result['topo'].shape)
(1000, 2, 20, 3) (1000, 2, 20, 4)
# One can also skip over coordinate frames.
result = propagate_many(
mjds, tles, observers,
do_eci_pos=False, do_eci_vel=False, do_geo=False, do_topo=True
)
print(result.keys())
dict_keys(['topo'])
More use-cases and tutorials
----------------------------
Check out the `user manual <https://bwinkel.github.io/cysgp4/latest/>`_ or the
`Jupyter tutorial notebooks <https://github.com/bwinkel/cysgp4/tree/master/notebooks>`_
in the repository for further examples of how to use `cysgp4`. Note that you
can only view the notebooks on GitHub, if you want to edit something
it is necessary to clone the repository or download a notebook to run it on
your machine.
Who do I talk to?
=================
If you encounter any problems or have questions, do not hesitate to raise an
issue or make a pull request. Moreover, you can contact the devs directly:
- <bwinkel@mpifr.de>
Licenses
========
`cysgp4` itself is published under `GPL v3 <https://www.github.com/bwinkel/cysgp4/blob/master/COPYING.GPLv3.txt>`_, an open-source license. The package
is a `Cython <https://www.cython.org>`_-powered wrapper of the `sgp4lib
<https://www.danrw.com/sgp4/>`_ library (by Daniel Warner) to compute
satellite positions from two-line elements (TLE). The sgp4lib source code is
licensed under `Apache-2.0 license
<https://www.github.com/bwinkel/cysgp4/blob/master/COPYING.Apache2>`_
The package is partly based on the `Astropy-affiliated package template <https://github.com/astropy/package-template>`_, which is under `BSD 3-clause <https://github.com/bwinkel/cysgp4/blob/master/TEMPLATE_LICENCE.rst>`_ license.
.. |PyPI Badge| image:: https://img.shields.io/pypi/v/cysgp4.svg
:target: https://pypi.python.org/pypi/cysgp4
:alt: PyPI tag
.. |PyPI Downloads| image:: https://img.shields.io/pypi/dm/cysgp4
:target: https://pypi.python.org/pypi/cysgp4
:alt: PyPI - Downloads
.. |License-GPL| image:: https://img.shields.io/badge/License-GPLv3-blue.svg
:target: https://www.github.com/bwinkel/cysgp4/blob/master/COPYING.GPLv3.txt
:alt: License-GPL3
.. |License-Apache| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg
:target: https://www.github.com/bwinkel/cysgp4/blob/master/COPYING.Apache2
:alt: License-Apache
.. |License-BSD3| image:: https://img.shields.io/badge/License-BSD%203--Clause-blue.svg
:target: https://www.github.com/bwinkel/cysgp4/blob/master/TEMPLATE_LICENCE.rst
:alt: License-BSD3
.. |Conda-Version| image:: https://anaconda.org/conda-forge/cysgp4/badges/version.svg
:target: https://anaconda.org/conda-forge/cysgp4
:alt: conda-forge platforms: Version on conda-forge
.. |Conda-Platforms-Badge| image:: https://anaconda.org/conda-forge/cysgp4/badges/platforms.svg
:target: https://anaconda.org/conda-forge/cysgp4
:alt: conda-forge platforms: linux-64, osx-64, win-64
.. |Conda-Downloads-Badge| image:: https://anaconda.org/conda-forge/cysgp4/badges/downloads.svg
:target: https://anaconda.org/conda-forge/cysgp4
:alt: conda-forge downloads
.. |Azure Status| image:: https://dev.azure.com/bwinkel78/Benjamin-Winkel-Projects/_apis/build/status/bwinkel.cysgp4?branchName=master
:target: https://dev.azure.com/bwinkel78/Benjamin-Winkel-Projects/_build
:alt: cysgp4's Azure Pipelines Status
Raw data
{
"_id": null,
"home_page": null,
"name": "cysgp4",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.8",
"maintainer_email": null,
"keywords": "astronomy, science",
"author": null,
"author_email": "Benjamin Winkel <bwinkel@mpifr.de>",
"download_url": null,
"platform": null,
"description": "******\ncysgp4\n******\n\n.. container::\n\n |License-GPL| |License-Apache| |License-BSD3|\n\n.. container::\n\n |PyPI Badge| |PyPI Downloads|\n\n.. container::\n\n |Conda-Version| |Conda-Platforms-Badge| |Conda-Downloads-Badge|\n\n- *Version:* 0.3.6\n- *Lead author/package maintainer:* Benjamin Winkel\n- *Contributor(s):* Gyula I.G. J\u00f3zsa\n- *Repository:* `on GitHub <https://github.com/bwinkel/cysgp4>`__\n- *Bug tracker:* `on GitHub <https://github.com/bwinkel/cysgp4/issues>`__\n- *User manual:* `stable <https://bwinkel.github.io/cysgp4/>`__ | `developer <https://bwinkel.github.io/cysgp4/latest/>`__\n\nProject Status\n==============\n\n.. container::\n\n |Azure Status|\n\nPurpose\n=======\n\nThe `cysgp4` package is a `Cython <https://www.cython.org>`_-powered wrapper\nof the `sgp4lib <https://www.danrw.com/sgp4/>`_ library (by Daniel Warner) to\ncompute satellite positions from two-line elements (TLE).\n\nIt provides similar functionality as the well-known `sgp4\n<https://pypi.org/project/sgp4/>`_ Python package (by Brandon Rhodes), which\nuses `Numba <http://numba.pydata.org/>`_ internally to speed-up the\ncalculations. In contrast to `sgp4`_, `cysgp4` can work well with arrays of\nTLEs and/or times and make use of multi-core platforms (via OpenMP) to boost\nprocessing times a lot.\n\nInstallation\n============\n\nWe highly recommend to use `cysgp4` with the `Anaconda Python distribution <https://www.anaconda.com/>`_, in which\ncase installiation is as easy as ::\n\n conda install -c conda-forge cysgp4\n\nOtherwise, you should install cysgp4 via `pip`::\n\n python -m pip install cysgp4\n\nThe installation is also possible from source. `Detailed installation\ninstructions <https://bwinkel.github.io/cysgp4/latest/install.html>`_\ncan be found in the user manual.\n\nDependencies\n------------\n\nWe kept the dependencies as minimal as possible. The following packages are\nrequired:\n\n- `Python 3.8` or later\n- `numpy 1.20` or later\n\nIf you want to run the notebooks yourself, you will also need the Jupyter\nserver and install matplotlib. To run the tests, you'll need `sgp4\n<https://pypi.org/project/sgp4/>`_.\n\nNote, for compiling the C-extension, OpenMP is used for parallelization. If you use gcc, for example, you should have at least version 4.8 otherwise the setup-script may fail. Again, see `Detailed installation instructions` for\nmore information.\n\nUsage\n=====\n\nUsing cysgp4 is possible via an object-oriented interface or with a\nfast numpy-array functional approach. The former works like this:\n\n.. code-block:: python\n\n import cysgp4\n\n # Define a date/time and an observer\n pydt = cysgp4.PyDateTime.from_mjd(58805.57)\n lon_deg, lat_deg = 6.88375, 50.525\n alt_km = 0.366\n obs = cysgp4.PyObserver(lon_deg, lat_deg, alt_km)\n\n # Define satellite properties/orbit via two-line element string (TLE)\n hst_tle = cysgp4.PyTle(\n 'HST',\n '1 20580U 90037B 19321.38711875 .00000471 00000-0 17700-4 0 9991',\n '2 20580 28.4699 288.8102 0002495 321.7771 171.5855 15.09299865423838',\n )\n\n # Create a satellite object for querying coordinates\n sat = cysgp4.Satellite(hst_tle, obs, pydt)\n sat.eci_pos().loc # ECI cartesian position, km\n (5879.5931344459295, 1545.7455647032068, 3287.4155452595)\n sat.eci_pos().vel # ECI cartesian velocity, km/s\n (-1.8205895517672226, 7.374044252723081, -0.20697960810978586)\n sat.geo_pos() # geographic (geodetic) position, lon/lat/alt\n <PyCoordGeodetic: 112.2146d, 28.5509d, 538.0186km>\n sat.topo_pos() # topocentric position, az/el/dist/dist_rate\n <PyCoordTopocentric: 60.2453d, -35.6844d, 8314.5683km, 3.5087km/s>\n\n # One can change time to determine positions at another moment\n sat.mjd += 1 / 720. # one minute later\n sat.topo_pos()\n <PyCoordTopocentric: 54.8446d, -38.2749d, 8734.9195km, 3.4885km/s>\n\nIn many cases, however, one probably wants to calculate coordinates for a\n(large) number of satellites, observer locations, and/or observing times. For\nthis, the function `~cysgp4.propagate_many` is useful. This is an array\ninterface to the sgp4 calculations, which allows to perform calculations for\ndifferent satellite TLEs, observers and times in a parallelized manner.\n`~numpy` broadcasting `rules\n<https://docs.scipy.org/doc/numpy/user/basics.broadcasting.html>`_ apply:\n\n.. code-block:: python\n\n import requests\n import numpy as np\n from cysgp4 import PyTle, PyObserver, propagate_many\n\n # Download many TLEs from a website\n url = 'http://celestrak.com/NORAD/elements/science.txt'\n ctrak_science = requests.get(url)\n all_lines = ctrak_science.text.split('\\\\r\\\\n')\n\n # Need to convert them to a list of tuples (each tuple consisting\n # of the three TLE strings)\n tle_list = list(zip(*tuple(\n all_lines[idx::3] for idx in range(3)\n )))\n # Create an array of PyTle and PyObserver objects, and MJDs\n tles = np.array([\n PyTle(*tle) for tle in tle_list\n ])[np.newaxis, np.newaxis, :20] # use first 20 TLEs\n observers = np.array([\n PyObserver(6.88375, 50.525, 0.366),\n PyObserver(16.88375, 50.525, 0.366),\n ])[np.newaxis, :, np.newaxis]\n mjds = np.linspace(\n 58805.5, 58806.5, 1000 # 1000 time steps\n )[:, np.newaxis, np.newaxis]\n\n # The result is a dictionary\n result = propagate_many(mjds, tles, observers)\n print(result.keys())\n dict_keys(['eci_pos', 'eci_vel', 'geo', 'topo'])\n\n # Returned array shapes are as follows; last array dimension\n # contains the coordinate pairs.\n print(np.broadcast(mjds, tles, observers).shape)\n (1000, 2, 20)\n print(result['eci_pos'].shape, result['topo'].shape)\n (1000, 2, 20, 3) (1000, 2, 20, 4)\n\n # One can also skip over coordinate frames.\n result = propagate_many(\n mjds, tles, observers,\n do_eci_pos=False, do_eci_vel=False, do_geo=False, do_topo=True\n )\n print(result.keys())\n dict_keys(['topo'])\n\n\nMore use-cases and tutorials\n----------------------------\n\nCheck out the `user manual <https://bwinkel.github.io/cysgp4/latest/>`_ or the\n`Jupyter tutorial notebooks <https://github.com/bwinkel/cysgp4/tree/master/notebooks>`_\nin the repository for further examples of how to use `cysgp4`. Note that you\ncan only view the notebooks on GitHub, if you want to edit something\nit is necessary to clone the repository or download a notebook to run it on\nyour machine.\n\nWho do I talk to?\n=================\n\nIf you encounter any problems or have questions, do not hesitate to raise an\nissue or make a pull request. Moreover, you can contact the devs directly:\n\n- <bwinkel@mpifr.de>\n\nLicenses\n========\n\n`cysgp4` itself is published under `GPL v3 <https://www.github.com/bwinkel/cysgp4/blob/master/COPYING.GPLv3.txt>`_, an open-source license. The package\nis a `Cython <https://www.cython.org>`_-powered wrapper of the `sgp4lib\n<https://www.danrw.com/sgp4/>`_ library (by Daniel Warner) to compute\nsatellite positions from two-line elements (TLE). The sgp4lib source code is\nlicensed under `Apache-2.0 license\n<https://www.github.com/bwinkel/cysgp4/blob/master/COPYING.Apache2>`_\n\nThe package is partly based on the `Astropy-affiliated package template <https://github.com/astropy/package-template>`_, which is under `BSD 3-clause <https://github.com/bwinkel/cysgp4/blob/master/TEMPLATE_LICENCE.rst>`_ license.\n\n\n\n\n.. |PyPI Badge| image:: https://img.shields.io/pypi/v/cysgp4.svg\n :target: https://pypi.python.org/pypi/cysgp4\n :alt: PyPI tag\n\n.. |PyPI Downloads| image:: https://img.shields.io/pypi/dm/cysgp4\n :target: https://pypi.python.org/pypi/cysgp4\n :alt: PyPI - Downloads\n\n.. |License-GPL| image:: https://img.shields.io/badge/License-GPLv3-blue.svg\n :target: https://www.github.com/bwinkel/cysgp4/blob/master/COPYING.GPLv3.txt\n :alt: License-GPL3\n\n.. |License-Apache| image:: https://img.shields.io/badge/License-Apache%202.0-blue.svg\n :target: https://www.github.com/bwinkel/cysgp4/blob/master/COPYING.Apache2\n :alt: License-Apache\n\n.. |License-BSD3| image:: https://img.shields.io/badge/License-BSD%203--Clause-blue.svg\n :target: https://www.github.com/bwinkel/cysgp4/blob/master/TEMPLATE_LICENCE.rst\n :alt: License-BSD3\n\n.. |Conda-Version| image:: https://anaconda.org/conda-forge/cysgp4/badges/version.svg\n :target: https://anaconda.org/conda-forge/cysgp4\n :alt: conda-forge platforms: Version on conda-forge\n\n.. |Conda-Platforms-Badge| image:: https://anaconda.org/conda-forge/cysgp4/badges/platforms.svg\n :target: https://anaconda.org/conda-forge/cysgp4\n :alt: conda-forge platforms: linux-64, osx-64, win-64\n\n.. |Conda-Downloads-Badge| image:: https://anaconda.org/conda-forge/cysgp4/badges/downloads.svg\n :target: https://anaconda.org/conda-forge/cysgp4\n :alt: conda-forge downloads\n\n\n.. |Azure Status| image:: https://dev.azure.com/bwinkel78/Benjamin-Winkel-Projects/_apis/build/status/bwinkel.cysgp4?branchName=master\n :target: https://dev.azure.com/bwinkel78/Benjamin-Winkel-Projects/_build\n :alt: cysgp4's Azure Pipelines Status\n\n\n",
"bugtrack_url": null,
"license": "GPLv3",
"summary": "cysgp4: a wrapper around the SGP4 package, for sat TLE calculations",
"version": "0.3.6",
"project_urls": {
"Changelog": "https://github.com/bwinkel/cysgp4/CHANGES.rst",
"Documentation": "https://bwinkel.github.io/cysgp4/",
"Homepage": "https://pypi.org/project/cysgp4/",
"Issues": "https://github.com/bwinkel/cysgp4/issues",
"Repository": "https://github.com/bwinkel/cysgp4"
},
"split_keywords": [
"astronomy",
" science"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "364ed4d93e8e207eb43bd0df31066cbccf3386b467756d9181ad8d17a8af4535",
"md5": "310b1f520393ce5061eec65dbf7af87b",
"sha256": "c0c8584f606b0d9363f1797f55d1cc8b1a038476329f3faef8efacffd85b979c"
},
"downloads": -1,
"filename": "cysgp4-0.3.6-cp310-cp310-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "310b1f520393ce5061eec65dbf7af87b",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 723447,
"upload_time": "2024-04-17T13:40:35",
"upload_time_iso_8601": "2024-04-17T13:40:35.087904Z",
"url": "https://files.pythonhosted.org/packages/36/4e/d4d93e8e207eb43bd0df31066cbccf3386b467756d9181ad8d17a8af4535/cysgp4-0.3.6-cp310-cp310-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "475f6c25c0041021e2e94ea47e72c644f8690c73cc6abeb944cceb9ba213e6db",
"md5": "0e180a3eaf8b12b4324ca98bd2ba8658",
"sha256": "eb574bf6d844248adf963dda66b9bd1dea3b5c492c387a99dab3c2f785f29c66"
},
"downloads": -1,
"filename": "cysgp4-0.3.6-cp310-cp310-win_amd64.whl",
"has_sig": false,
"md5_digest": "0e180a3eaf8b12b4324ca98bd2ba8658",
"packagetype": "bdist_wheel",
"python_version": "cp310",
"requires_python": ">=3.8",
"size": 688102,
"upload_time": "2024-04-17T13:43:24",
"upload_time_iso_8601": "2024-04-17T13:43:24.711218Z",
"url": "https://files.pythonhosted.org/packages/47/5f/6c25c0041021e2e94ea47e72c644f8690c73cc6abeb944cceb9ba213e6db/cysgp4-0.3.6-cp310-cp310-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "43ec142c6f4c2baf8cdcb21ba288ab1f2d00f08ff70a303727ba87ac8712ed5a",
"md5": "0fe48851e09d1423455598efc808b9ba",
"sha256": "6c2293d8f700f22f49468ad257095bf32fdd5d63690d7e406be35669ffab4d50"
},
"downloads": -1,
"filename": "cysgp4-0.3.6-cp311-cp311-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "0fe48851e09d1423455598efc808b9ba",
"packagetype": "bdist_wheel",
"python_version": "cp311",
"requires_python": ">=3.8",
"size": 724787,
"upload_time": "2024-04-17T13:38:35",
"upload_time_iso_8601": "2024-04-17T13:38:35.226074Z",
"url": "https://files.pythonhosted.org/packages/43/ec/142c6f4c2baf8cdcb21ba288ab1f2d00f08ff70a303727ba87ac8712ed5a/cysgp4-0.3.6-cp311-cp311-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "373fed63e053a31ff5bb807094cfbc398df31535e32aa129d667db9aee46a06e",
"md5": "76d9378e6fd4b28d2cf2212e36adfc21",
"sha256": "74a7327fc1e8b95ec3e83de53cfc520e18439b01bd6789fb3c4bd601878d707f"
},
"downloads": -1,
"filename": "cysgp4-0.3.6-cp312-cp312-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "76d9378e6fd4b28d2cf2212e36adfc21",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 728581,
"upload_time": "2024-04-17T13:43:38",
"upload_time_iso_8601": "2024-04-17T13:43:38.114768Z",
"url": "https://files.pythonhosted.org/packages/37/3f/ed63e053a31ff5bb807094cfbc398df31535e32aa129d667db9aee46a06e/cysgp4-0.3.6-cp312-cp312-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "505ec1bd193813b551c51dc513ef80c7c8850d02ed679e1e6f3520cb3611333c",
"md5": "171d906ccd650de8c0b0c71dac114bab",
"sha256": "729daf9f411beb6dd18f1c4fcb20091e195a2806e430083a563ae651d2b4fe63"
},
"downloads": -1,
"filename": "cysgp4-0.3.6-cp312-cp312-win_amd64.whl",
"has_sig": false,
"md5_digest": "171d906ccd650de8c0b0c71dac114bab",
"packagetype": "bdist_wheel",
"python_version": "cp312",
"requires_python": ">=3.8",
"size": 686237,
"upload_time": "2024-04-17T13:44:49",
"upload_time_iso_8601": "2024-04-17T13:44:49.883323Z",
"url": "https://files.pythonhosted.org/packages/50/5e/c1bd193813b551c51dc513ef80c7c8850d02ed679e1e6f3520cb3611333c/cysgp4-0.3.6-cp312-cp312-win_amd64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f0444ccf1b00e082134d1644ccdde913a3d603d287644fde1facc52a91d05811",
"md5": "06121cdac8d19f9495f2941aa2db6b3f",
"sha256": "2b0449e69b9d85ebb1582cdba3a0dfc6f32a6b01c430c091745fcf37390a1564"
},
"downloads": -1,
"filename": "cysgp4-0.3.6-cp38-cp38-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "06121cdac8d19f9495f2941aa2db6b3f",
"packagetype": "bdist_wheel",
"python_version": "cp38",
"requires_python": ">=3.8",
"size": 724450,
"upload_time": "2024-04-17T13:38:38",
"upload_time_iso_8601": "2024-04-17T13:38:38.472404Z",
"url": "https://files.pythonhosted.org/packages/f0/44/4ccf1b00e082134d1644ccdde913a3d603d287644fde1facc52a91d05811/cysgp4-0.3.6-cp38-cp38-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "46ca26fc2f474c5d2bad47bb7d4423a99869d99e42dd1f46e7174ee7d0377ddd",
"md5": "55154dbad0b02739b2736d3a2dc5161b",
"sha256": "9ae7a1d07fd28dcc6d05d7900e689aacbc3107efc14a0a10c7241d5a676993fb"
},
"downloads": -1,
"filename": "cysgp4-0.3.6-cp39-cp39-macosx_10_9_x86_64.whl",
"has_sig": false,
"md5_digest": "55154dbad0b02739b2736d3a2dc5161b",
"packagetype": "bdist_wheel",
"python_version": "cp39",
"requires_python": ">=3.8",
"size": 724286,
"upload_time": "2024-04-17T13:42:46",
"upload_time_iso_8601": "2024-04-17T13:42:46.899032Z",
"url": "https://files.pythonhosted.org/packages/46/ca/26fc2f474c5d2bad47bb7d4423a99869d99e42dd1f46e7174ee7d0377ddd/cysgp4-0.3.6-cp39-cp39-macosx_10_9_x86_64.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-04-17 13:40:35",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "bwinkel",
"github_project": "cysgp4",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"tox": true,
"lcname": "cysgp4"
}