{ "info": { "author": "Brandon Rhodes", "author_email": "brandon@rhodesmill.org", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Scientific/Engineering :: Astronomy" ], "description": "\nThis package can load and use a Jet Propulsion Laboratory (JPL)\nephemeris for predicting the position and velocity of a planet or other\nSolar System body. It only needs `NumPy `_,\nwhich ``pip`` will automatically attempt to install alongside\n``pyephem`` when you run::\n\n $ pip install jplephem\n\nIf you see NumPy compilation errors, then try downloading and installing\nNumPy directly from `its web site `_ or simply\nuse a distribution of Python with science tools already installed, like\n`Anaconda `_.\n\nNote that ``jplephem`` offers only the logic necessary to produce plain\nthree-dimensional vectors. Most programmers interested in astronomy\nwill want to look at `Skyfield `_\ninstead, which uses ``jplephem`` but converts the numbers into more\ntraditional measurements like right ascension and declination.\n\nMost users will use ``jplephem`` with the Satellite Planet Kernel (SPK)\nfiles that the NAIF facility at NASA JPL offers for use with their own\nSPICE toolkit. They have collected their most useful kernels beneath\nthe directory:\n\nhttp://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/\n\nTo learn more about SPK files, the official `SPK Required Reading\n`_\ndocument is available from the NAIF facility\u2019s web site under the NASA\nJPL domain.\n\n\nCommand Line Tool\n-----------------\n\nIf you have downloaded a ``.bsp`` file, you can run ``jplephem`` from\nthe command line to display the data inside of it::\n\n python -m jplephem comment de430.bsp\n python -m jplephem dap de430.bsp\n python -m jplephem spk de430.bsp\n\nYou can also take a large ephemeris and produce a smaller excerpt by\nlimiting the range of dates that it covers::\n\n python -m jplephem excerpt 2018/1/1 2018/4/1 de421.bsp outjup.bsp\n\nIf the input ephemeris is a URL, then `jplephem` will try to save\nbandwidth by fetching only the blocks of the remote file that are\nnecessary to cover the dates you have specified. For example, the\nJupiter satellite ephemeris `jup310.bsp` is famously large, weighing in\na nearly a gigabyte. But if all you need are Jupiter's satellites for a\nfew months, you can download considerably less data::\n\n $ python -m jplephem excerpt 2018/1/1 2018/4/1 \\\n https://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/satellites/jup310.bsp \\\n excerpt.bsp\n $ ls -lh excerpt.bsp\n -rw-r----- 1 brandon brandon 1.2M Feb 11 13:36 excerpt.bsp\n\nIn this case only about one-thousandth of the ephemeris's data needed to\nbe downloaded, a download which took less than one minute.\n\nGetting Started With DE430\n--------------------------\n\nThe recent DE430 ephemeris is a useful starting point. It weighs in at\n115\u00a0MB, but provides predictions across the generous range of years\n1550\u20132650:\n\nhttp://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/de430.bsp\n\nAfter the kernel has downloaded, you can use ``jplephem`` to load this\nSPK file and learn about the segments it offers:\n\n>>> from jplephem.spk import SPK\n>>> kernel = SPK.open('de430.bsp')\n>>> print(kernel)\nFile type DAF/SPK and format LTL-IEEE with 14 segments:\n2287184.50..2688976.50 Solar System Barycenter (0) -> Mercury Barycenter (1)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Venus Barycenter (2)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Earth Barycenter (3)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Mars Barycenter (4)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Jupiter Barycenter (5)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Saturn Barycenter (6)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Uranus Barycenter (7)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Neptune Barycenter (8)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Pluto Barycenter (9)\n2287184.50..2688976.50 Solar System Barycenter (0) -> Sun (10)\n2287184.50..2688976.50 Earth Barycenter (3) -> Moon (301)\n2287184.50..2688976.50 Earth Barycenter (3) -> Earth (399)\n2287184.50..2688976.50 Mercury Barycenter (1) -> Mercury (199)\n2287184.50..2688976.50 Venus Barycenter (2) -> Venus (299)\n\nEach segment of the file lets you predict the position of an object with\nrespect to some other reference point. If you want the coordinates of\nMars at 2457061.5 (2015 February\u00a08) with respect to the center of the\nsolar system, this ephemeris only requires you to take a single step:\n\n>>> position = kernel[0,4].compute(2457061.5)\n>>> print(position)\n[ 2.05700211e+08 4.25141646e+07 1.39379183e+07]\n\nBut learning the position of Mars with respect to the Earth takes three\nsteps, from Mars to the Solar System barycenter to the Earth-Moon\nbarycenter and finally to Earth itself:\n\n>>> position = kernel[0,4].compute(2457061.5)\n>>> position -= kernel[0,3].compute(2457061.5)\n>>> position -= kernel[3,399].compute(2457061.5)\n>>> print(position)\n[ 3.16065185e+08 -4.67929557e+07 -2.47554111e+07]\n\nYou can see that the output of this ephemeris is in kilometers. If you\nuse another ephemeris, check its documentation to be sure of the units\nthat it employs.\n\nIf you supply the date as a NumPy array, then each component that is\nreturned will itself be a vector as long as your date:\n\n>>> import numpy as np\n>>> jd = np.array([2457061.5, 2457062.5, 2457063.5, 2457064.5])\n>>> position = kernel[0,4].compute(jd)\n>>> print(position)\n[[ 2.05700211e+08 2.05325363e+08 2.04928663e+08 2.04510189e+08]\n [ 4.25141646e+07 4.45315179e+07 4.65441136e+07 4.85517457e+07]\n [ 1.39379183e+07 1.48733243e+07 1.58071381e+07 1.67392630e+07]]\n\nSome ephemerides include velocity inline by returning a 6-vector instead\nof a 3-vector. For an ephemeris that does not, you can ask for the\nChebyshev polynomial to be differentiated to produce a velocity, which\nis delivered as a second return value:\n\n>>> position, velocity = kernel[0,4].compute_and_differentiate(2457061.5)\n>>> print(position)\n[ 2.05700211e+08 4.25141646e+07 1.39379183e+07]\n>>> print(velocity)\n[ -363896.06287889 2019662.99596519 936169.77271558]\n\n\nDetails of the API\n------------------\n\nHere are a few details for people ready to go beyond the high-level API\nprovided above and read through the code to learn more.\n\n* Instead of reading an entire ephemeris into memory, ``jplephem``\n memory-maps the underlying file so that the operating system can\n efficiently page into RAM only the data that your code is using.\n\n* Once the metadata has been parsed from the binary SPK file, the\n polynomial coefficients themselves are loaded by building a NumPy\n array object that has access to the raw binary file contents.\n Happily, NumPy already knows how to interpret a packed array of\n double-precision floats. You can learn about the underlying DAF\n \u201cDouble Precision Array File\u201d format, in case you ever need to open\n other such array files in Python, through the ``DAF`` class in the\n module ``jplephem.daf``.\n\n* An SPK file is made of segments. When you first create an ``SPK``\n kernel object ``k``, it examines the file and creates a list of\n ``Segment`` objects that it keeps in a list under an attribute named\n ``k.segments`` which you are free to examine in your own code by\n looping over it.\n\n* There is more information about each segment beyond the one-line\n summary that you get when you print out the SPK file, which you can\n see by asking the segment to print itself verbosely:\n\n >>> segment = kernel[3,399]\n >>> print(segment.describe())\n 2287184.50..2688976.50 Earth Barycenter (3) -> Earth (399)\n frame=1 data_type=2 source=DE-0430LE-0430\n\n* Each ``Segment`` loaded from the kernel has a number of attributes\n that are loaded from the SPK file:\n\n >>> help(segment)\n Help on Segment in module jplephem.spk object:\n ...\n | segment.source - official ephemeris name, like 'DE-0430LE-0430'\n | segment.start_second - initial epoch, as seconds from J2000\n | segment.end_second - final epoch, as seconds from J2000\n | segment.start_jd - start_second, converted to a Julian Date\n | segment.end_jd - end_second, converted to a Julian Date\n | segment.center - integer center identifier\n | segment.target - integer target identifier\n | segment.frame - integer frame identifier\n | segment.data_type - integer data type identifier\n | segment.start_i - index where segment starts\n | segment.end_i - index where segment ends\n ...\n\n* If you want to access the raw coefficients, use the segment\n ``load_array()`` method. It returns two floats and a NumPy array:\n\n >>> initial_epoch, interval_length, coefficients = segment.load_array()\n >>> print(coefficients.shape)\n (3, 100448, 13)\n\n* The square-bracket lookup mechanism ``kernel[3,399]`` is a\n non-standard convenience that returns only the last matching segment\n in the file. While the SPK standard does say that the last segment\n takes precedence, it also says that earlier segments for a particular\n center-target pair should be fallen back upon for dates that the last\n segment does not cover. So, if you ever tackle a complicated kernel,\n you will need to implement fallback rules that send some dates to the\n final segment for a given center and target, but that send other dates\n to earlier segments that are qualified to cover them.\n\n* If you are accounting for light travel time and require repeated\n computation of the position, but then need the velocity at the end,\n and want to avoid repeating the expensive position calculation, then\n try out the ``segment.generate()`` method - it will let you ask for\n the position, and then only proceed to the velocity once you are sure\n that the light-time error is now small enough.\n\nHigh-Precision Dates\n--------------------\n\nSince all modern Julian dates are numbers larger than 2.4 million, a\nstandard 64-bit Python or NumPy float necessarily leaves only a limited\nnumber of bits available for the fractional part. *Technical Note\n2011-02* from the United States Naval Observatory's Astronomical\nApplications Department suggests that the `precision possible with a\n64-bit floating point Julian date is around 20.1\u00a0\u00b5s\n`_.\n\nIf you need to supply times and receive back planetary positions with\ngreater precision than 20.1\u00a0\u00b5s, then you have two options.\n\nFirst, you can supply times using the special ``float96`` NumPy type,\nwhich is also aliased to the name ``longfloat``. If you provide either\na ``float96`` scalar or a ``float96`` array as your ``tdb`` parameter to\nany ``jplephem`` routine, you should get back a high-precision result.\n\nSecond, you can split your date or dates into two pieces, and supply\nthem as a pair of arguments two ``tdb`` and ``tdb2``. One popular\napproach for how to split your date is to use the ``tdb`` float for the\ninteger Julian date, and ``tdb2`` for the fraction that specifies the\ntime of day. Nearly all ``jplephem`` routines accept this optional\n``tdb2`` argument if you wish to provide it, thanks to the work of\nMarten van Kerkwijk!\n\n\nLegacy Ephemeris Packages\n-------------------------\n\nBack before I learned about SPICE and SPK files, I had run across the\ntext-file formatted JPL ephemerides at:\n\nftp://ssd.jpl.nasa.gov/pub/eph/planets/ascii/\n\nI laboriously assembled the data in these text files into native NumPy\narray files and wrapped them each in a Python package so that users\ncould install an ephemeris with a simple command::\n\n pip install de421\n\nIf you want to use one of these pip-installable ephemerides, you will be\nusing a slightly older API, and will lose the benefit of the efficient\nmemory-mapping that the newer SPK code performs. With the old API, here\nis how you would load DE421 and compute a position, given a barycentric\ndynamical time expressed as a Julian date::\n\n import de421\n from jplephem import Ephemeris\n\n eph = Ephemeris(de421)\n x, y, z = eph.position('mars', 2444391.5) # 1980.06.01\n\nFor more information about the legacy API, consult the ``jplephem``\nentry on PyPI for the final release of the 1.x series:\n\nhttps://pypi.python.org/pypi/jplephem/1.2\n\nThe ephemerides that were made available as Python packages (the\nfollowing links explain the differences between them) are:\n\n* `DE405 `_ (May 1997)\n \u2014 54\u00a0MB covering years 1600 through 2200\n* `DE406 `_ (May 1997)\n \u2014 190\u00a0MB covering years -3000 through 3000\n* `DE421 `_ (February 2008)\n \u2014 27\u00a0MB covering years 1900 through 2050\n* `DE422 `_ (September 2009)\n \u2014 531\u00a0MB covering years -3000 through 3000\n* `DE423 `_ (February 2010)\n \u2014 36\u00a0MB covering years 1800 through 2200\n\n\nReporting issues\n----------------\n\nYou can report any issues, bugs, or problems at the GitHub repository:\n\nhttps://github.com/brandon-rhodes/python-jplephem/\n\n\nChangelog\n---------\n\n**2019 January 3 \u2014 Version 2.9**\n\n* Added the ``load_array()`` method to the segment class.\n\n**2018 July 22 \u2014 Version 2.8**\n\n* Switched to a making a single memory map of the entire file, to avoid\n running out of file descriptors when users load an ephemeris with\n hundreds of segments.\n\n**2018 February 11 \u2014 Version 2.7**\n\n* Expanded the command line tool, most notably with the ability to fetch\n over HTTP only those sections of a large ephemeris that cover a\n specific range of dates, producing a smaller ``.bsp`` file.\n\n**2016 December 19 \u2014 Version 2.6**\n\n* Fixed the ability to invoke the module from the command line with\n ``python -m jplephem``, and added a test to keep it fixed.\n\n**2015 November 9 \u2014 Version 2.5**\n\n* Move ``fileno()`` call out of the ``DAF`` constructor to support\n fetching at least summary information from ``StringIO`` objects.\n\n**2015 November 1 \u2014 Version 2.4**\n\n* Add Windows compatibility by switching ``mmap()`` from using\n ``PAGESIZE`` to ``ALLOCATIONGRANULARITY``.\n\n* Avoid a new NumPy deprecation warning by being careful to use only\n integers in the NumPy ``shape`` tuple.\n\n* Add names \"TDB\" and \"TT\" to the names database for DE430.\n\n**2015 August 16 \u2014 Version 2.3**\n\n* Added auto-detection and support for old NAIF/DAF kernels like\n ``de405.bsp`` to the main ``DAF`` class itself, instead of requiring\n the awkward use of an entirely different alternative class.\n\n**2015 August 5 \u2014 Version 2.2**\n\n* You can now invoke ``jplephem`` from the command line.\n\n* Fixes an exception that was raised for SPK segments with a coefficient\n count of only 2, like the DE421 and DE430 segments that provide the\n offset of Mercury from the Mercury barycenter.\n\n* Supports old NAIF/DAF kernels like ``de405.bsp``.\n\n* The ``SPK()`` constructor is now simpler, taking a ``DAF`` object\n instead of an open file. This is considered an internal API change \u2014\n the public API is the constructor ``SPK.open()``.\n\n**2015 February 24 \u2014 Version 2.1**\n\n* Switched from mapping an entire SPK file into memory at once to\n memory-mapping each segment separately on demand.\n\n**2015 February 8 \u2014 Version 2.0**\n\n* Added support for SPICE SPK kernel files downloaded directly from\n NASA, and designated old Python-packaged ephemerides as \u201clegacy.\u201d\n\n**2013 November 26 \u2014 Version 1.2**\n\n* Helge Eichhorn fixed the default for the ``position_and_velocity()``\n argument ``tdb2`` so it defaults to zero days instead of 2.0 days.\n Tests were added to prevent any future regression.\n\n**2013 July 10 \u2014 Version 1.1**\n\n* Deprecates the old ``compute()`` method in favor of separate\n ``position()`` and ``position_and_velocity()`` methods.\n\n* Supports computing position and velocity in two separate phases by\n saving a \u201cbundle\u201d of coefficients returned by ``compute_bundle()``.\n\n* From Marten van Kerkwijk: a second ``tdb2`` time argument, for users\n who want to build higher precision dates out of two 64-bit floats.\n\n**2013 January 18 \u2014 Version 1.0**\n\n* Initial release\n\n\nReferences\n----------\n\nThe Jet Propulsion Laboratory's \u201cSolar System Dynamics\u201d page introduces\nthe various options for doing solar system position computations:\nhttp://ssd.jpl.nasa.gov/?ephemerides\n\nThe plain ASCII format element sets from which the ``jplephem`` Python\nephemeris packages are built, along with documentation, can be found at:\nftp://ssd.jpl.nasa.gov/pub/eph/planets/ascii/\n\nEquivalent FORTRAN code for using the ephemerides be found at the same\nFTP site: ftp://ssd.jpl.nasa.gov/pub/eph/planets/fortran/\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "jplephem", "package_url": "https://pypi.org/project/jplephem/", "platform": "", "project_url": "https://pypi.org/project/jplephem/", "project_urls": null, "release_url": "https://pypi.org/project/jplephem/2.9/", "requires_dist": null, "requires_python": "", "summary": "Use a JPL ephemeris to predict planet positions.", "version": "2.9" }, "last_serial": 4658756, "releases": { "0.1": [ { "comment_text": "", "digests": { "md5": "a68973076251c407666b67e1a59bf411", "sha256": "154f894b18f770759a0ef63594fbc43c0664cf11eb376bb56494d84169330cf0" }, "downloads": -1, "filename": "jplephem-0.1.tar.gz", "has_sig": false, "md5_digest": "a68973076251c407666b67e1a59bf411", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3763, "upload_time": "2012-03-30T18:28:01", "url": "https://files.pythonhosted.org/packages/01/a3/10917715ffc512043e8221083c800f7fc9ecf7b26291c32b60f401f6a6b1/jplephem-0.1.tar.gz" } ], "1.0": [ { "comment_text": "", "digests": { "md5": "5336db6641d37e62bffb1d467df8e6f7", "sha256": "932e03d9ea000682938540564116d1772746fc6811a30d16880a0c6e04d18b3a" }, "downloads": -1, "filename": "jplephem-1.0.tar.gz", "has_sig": false, "md5_digest": "5336db6641d37e62bffb1d467df8e6f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5481, "upload_time": "2013-01-18T16:42:03", "url": "https://files.pythonhosted.org/packages/e7/f5/0cc12eb9a6ac35be8051fd4cfd56a86e3c0010a7df2c47fd95be618d562c/jplephem-1.0.tar.gz" } ], "1.1": [ { "comment_text": "", "digests": { "md5": "76daa26dbc508a8e1916889fc9b83f1e", "sha256": "5dfc842fa704ce6762904534b8790b6059ae209ab8c57f88903eaea17c7681d5" }, "downloads": -1, "filename": "jplephem-1.1.tar.gz", "has_sig": false, "md5_digest": "76daa26dbc508a8e1916889fc9b83f1e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9228, "upload_time": "2013-07-10T22:41:42", "url": "https://files.pythonhosted.org/packages/0b/79/0aeb12c2e6ea8356231c7ffd68cd356ee4e793f2cd5b3771c4c31cf3113c/jplephem-1.1.tar.gz" } ], "1.2": [ { "comment_text": "", "digests": { "md5": "99325441f9cd0c3d821ae7728e20ac04", "sha256": "66f3c2a33d71f6705c479873c3c077065bc9a69ec97290fba9255701e69d6daa" }, "downloads": -1, "filename": "jplephem-1.2.tar.gz", "has_sig": false, "md5_digest": "99325441f9cd0c3d821ae7728e20ac04", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9448, "upload_time": "2013-11-26T22:56:23", "url": "https://files.pythonhosted.org/packages/cc/cf/c0f30d11e0d95b6e82e5a4dc7994a6939846e32a139e1e4b5b78e93a0727/jplephem-1.2.tar.gz" } ], "2.0": [ { "comment_text": "", "digests": { "md5": "d641b36f3ddb486cd99d3fed67ff691d", "sha256": "5b4d449f568f6f396a75368645d9e78b83132356ea31a0b1114f0ae69d233343" }, "downloads": -1, "filename": "jplephem-2.0.tar.gz", "has_sig": false, "md5_digest": "d641b36f3ddb486cd99d3fed67ff691d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 21126, "upload_time": "2015-02-08T20:23:44", "url": "https://files.pythonhosted.org/packages/9c/0f/8f1ad79fe13b113d139de830f69e5017dc21634d4caf0edfd5223073e33a/jplephem-2.0.tar.gz" } ], "2.1": [ { "comment_text": "", "digests": { "md5": "d20989d5ea2fea493805a9d11ec02aae", "sha256": "d4ba2ca6a8db1eb4b06726b8d797ef0612b68780a33ef84c80b07979bf3757ec" }, "downloads": -1, "filename": "jplephem-2.1.tar.gz", "has_sig": false, "md5_digest": "d20989d5ea2fea493805a9d11ec02aae", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 24187, "upload_time": "2015-02-24T06:56:39", "url": "https://files.pythonhosted.org/packages/71/76/ca14da0d858ede740973deb96bd6320a594d55063fba30c0d0477c6c61f0/jplephem-2.1.tar.gz" } ], "2.2": [ { "comment_text": "", "digests": { "md5": "b2b5ab962edb9256ad50eac9778d2759", "sha256": "67a7d2c941b5646d547fac807e7a8d99e7c98d4b81af66b00d25bac767768823" }, "downloads": -1, "filename": "jplephem-2.2.tar.gz", "has_sig": false, "md5_digest": "b2b5ab962edb9256ad50eac9778d2759", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26206, "upload_time": "2015-08-05T15:18:15", "url": "https://files.pythonhosted.org/packages/c1/23/7f14d50c703564230abe9852c222b22e2d4988d0b348130f79a075a15b99/jplephem-2.2.tar.gz" } ], "2.3": [ { "comment_text": "", "digests": { "md5": "33ab33cf9725f2dad6bae70d53015a6b", "sha256": "a82759772221b80c04f2fa4085553028c5e33574da04634afabd899f4164bef8" }, "downloads": -1, "filename": "jplephem-2.3.tar.gz", "has_sig": false, "md5_digest": "33ab33cf9725f2dad6bae70d53015a6b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26194, "upload_time": "2015-08-17T06:03:50", "url": "https://files.pythonhosted.org/packages/22/5c/479d7f19033090cddc40c94ac4ad25faf9d8347af50634ceeabd313f176b/jplephem-2.3.tar.gz" } ], "2.4": [ { "comment_text": "", "digests": { "md5": "e0abab66562f00d21fe9e0e8ccf11a57", "sha256": "36d80594acfebb3bc77685815700538e82d40bad203e824b72f26a6c06218711" }, "downloads": -1, "filename": "jplephem-2.4.tar.gz", "has_sig": false, "md5_digest": "e0abab66562f00d21fe9e0e8ccf11a57", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26527, "upload_time": "2015-11-02T02:22:25", "url": "https://files.pythonhosted.org/packages/a6/6d/9fc3e6438e96a975d3ac52b7479d17e75739222b347440480151f68698b0/jplephem-2.4.tar.gz" } ], "2.5": [ { "comment_text": "", "digests": { "md5": "2880f4a443cbc3ec3c9d90a9bc8e7d22", "sha256": "a0ecf3b0f1891d616e78d51592c77452d93c6117562c406faf9a03f7134885a5" }, "downloads": -1, "filename": "jplephem-2.5.tar.gz", "has_sig": false, "md5_digest": "2880f4a443cbc3ec3c9d90a9bc8e7d22", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 26977, "upload_time": "2015-11-09T21:55:19", "url": "https://files.pythonhosted.org/packages/13/3d/21349c3ff1240a0f50fe8019c7e675e14706e094f651ea495cacd55a4987/jplephem-2.5.tar.gz" } ], "2.6": [ { "comment_text": "", "digests": { "md5": "5959775cba483a88dd879a74e0b52971", "sha256": "b1be79d85d7a2fa06a122c979ab0d30d7a0c295e8c197b05c85d16a5484b2143" }, "downloads": -1, "filename": "jplephem-2.6.tar.gz", "has_sig": false, "md5_digest": "5959775cba483a88dd879a74e0b52971", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 27587, "upload_time": "2016-12-20T05:40:01", "url": "https://files.pythonhosted.org/packages/bc/7a/87f083aa15b1f5b20c335e875d76e5ce9065a6438adbea5c4dec9ed66632/jplephem-2.6.tar.gz" } ], "2.7": [ { "comment_text": "", "digests": { "md5": "fd8e19e397a5751f1e3bd6b936272b1a", "sha256": "328d8561ee4189f259d9a807a01b3f2b5a4ff91484b79f5cf6f99cab3354c825" }, "downloads": -1, "filename": "jplephem-2.7.tar.gz", "has_sig": false, "md5_digest": "fd8e19e397a5751f1e3bd6b936272b1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32731, "upload_time": "2018-02-11T20:36:49", "url": "https://files.pythonhosted.org/packages/96/99/566e13fb57d293d37e8d001c35894236720540b1509964fb02b23258b964/jplephem-2.7.tar.gz" } ], "2.8": [ { "comment_text": "", "digests": { "md5": "1c792b9da8e26653bfe63d2a0327c08e", "sha256": "ccb21595d59867dff5aaddd9fb812ce2e870c26a65e161e310bb85e819e4a1d6" }, "downloads": -1, "filename": "jplephem-2.8.tar.gz", "has_sig": false, "md5_digest": "1c792b9da8e26653bfe63d2a0327c08e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 32899, "upload_time": "2018-07-22T20:17:41", "url": "https://files.pythonhosted.org/packages/97/85/b4e37409c586ce0735f142d677458ed0b661c645064cb5bd05b4f54f3981/jplephem-2.8.tar.gz" } ], "2.9": [ { "comment_text": "", "digests": { "md5": "d30bb040b155ce6dcbfa94d5f6abe80b", "sha256": "9dffb9f3d3f6d996ade875102431fe385e8ea422da25c8ba17b0508d9ca1282b" }, "downloads": -1, "filename": "jplephem-2.9.tar.gz", "has_sig": false, "md5_digest": "d30bb040b155ce6dcbfa94d5f6abe80b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31494, "upload_time": "2019-01-04T04:35:00", "url": "https://files.pythonhosted.org/packages/14/6f/354fd50e625a66c7be3f08095c0e1fa389c75453858acf2689ffa9c4fc54/jplephem-2.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d30bb040b155ce6dcbfa94d5f6abe80b", "sha256": "9dffb9f3d3f6d996ade875102431fe385e8ea422da25c8ba17b0508d9ca1282b" }, "downloads": -1, "filename": "jplephem-2.9.tar.gz", "has_sig": false, "md5_digest": "d30bb040b155ce6dcbfa94d5f6abe80b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 31494, "upload_time": "2019-01-04T04:35:00", "url": "https://files.pythonhosted.org/packages/14/6f/354fd50e625a66c7be3f08095c0e1fa389c75453858acf2689ffa9c4fc54/jplephem-2.9.tar.gz" } ] }