{"action":"created","comment":{"url":"https://api.github.com/repos/astropy/astropy/pulls/comments/57763550","id":57763550,"diff_hunk":"@@ -0,0 +1,204 @@\n+# Licensed under a 3-clause BSD style license - see LICENSE.rst\n+\"\"\"\n+This module contains convenience functions for retrieving solar system\n+ephemerides from jplephem.\n+\"\"\"\n+\n+from __future__ import (absolute_import, division, print_function,\n+                        unicode_literals)\n+\n+import numpy as np\n+from .sky_coordinate import SkyCoord\n+from ..utils.data import download_file\n+from .. import units as u\n+from ..constants import c as speed_of_light\n+from .representation import CartesianRepresentation\n+from .builtin_frames import GCRS\n+from .earth import EarthLocation\n+\n+\n+__all__ = [\"get_planet\", \"get_moon\"]\n+\n+KERNEL = None\n+\n+\n+def _download_spk_file(show_progress=True):\n+    \"\"\"\n+    Get the Satellite Planet Kernel (SPK) file `de430.bsp` from NASA JPL.\n+\n+    Download the file from the JPL webpage once and subsequently access a\n+    cached copy. This file is ~120 MB, and covers years ~1550-2650 CE [1]_.\n+\n+    .. [1] http://naif.jpl.nasa.gov/pub/naif/generic_kernels/spk/planets/aareadme_de430-de431.txt\n+    \"\"\"\n+    de430_url = ('http://naif.jpl.nasa.gov/pub/naif/'\n+                 'generic_kernels/spk/planets/de430.bsp')\n+    return download_file(de430_url, cache=True, show_progress=show_progress)\n+\n+\n+def _get_kernel(*args, **kwargs):\n+    \"\"\"\n+    Try importing jplephem, download/retrieve from cahce the Satellite Planet\n+    Kernel.\n+    \"\"\"\n+    global KERNEL\n+\n+    try:\n+        from jplephem.spk import SPK\n+    except ImportError:\n+        raise ImportError(\"Solar system ephemeris calculations depend on\"\n+                          \"jplephem\")\n+\n+    if KERNEL is None:\n+        KERNEL = SPK.open(_download_spk_file())\n+    return KERNEL\n+\n+\n+def _get_absolute_planet_position(time, planet_index):\n+    \"\"\"\n+    Calculate the position of planet ``planet_index`` in cartesian coordinates.\n+\n+    Uses ``jplephem`` with the DE430 kernel.\n+\n+    Parameters\n+    ----------\n+    time : `~astropy.time.Time`\n+        Time of observation\n+\n+    planet_index : int\n+        Index of the planet (1-9 for Mercury through Pluto)\n+\n+    Returns\n+    -------\n+    cartesian_position : `~astropy.units.Quantity`\n+        GRCS position of the planet in cartesian coordinates\n+\n+    earth_distance : `~astropy.units.Quantity`\n+        Distance between Earth and planet.\n+\n+    Notes\n+    -----\n+\n+    \"\"\"\n+    kernel = _get_kernel()\n+\n+    # Mercury and Venus have separate barycenter and planet vectors\n+    if planet_index < 3:\n+        barycenter_to_planet_ind = 100*planet_index + 99\n+        cartesian_position_planet = (kernel[0, planet_index].compute(time.jd) +\n+                                     kernel[planet_index,\n+                                            barycenter_to_planet_ind].compute(time.jd))\n+    # planet_index is 3 gets the moon\n+    elif planet_index == 3:\n+        barycenter_to_planet_ind = 301\n+        cartesian_position_planet = (kernel[0, planet_index].compute(time.jd) +\n+                                     kernel[planet_index,\n+                                            barycenter_to_planet_ind].compute(time.jd))\n+    else:\n+        cartesian_position_planet = kernel[0, planet_index].compute(time.jd)\n+\n+    cartesian_position_earth = (kernel[0, 3].compute(time.jd) +\n+                                kernel[3, 399].compute(time.jd))\n+\n+    # Quadrature sum of the difference of the position vectors\n+    earth_distance = np.sqrt(np.sum((np.array(cartesian_position_planet) -\n+                                     np.array(cartesian_position_earth))**2))*u.km\n+\n+    earth_to_planet_vector = u.Quantity(cartesian_position_planet -\n+                                        cartesian_position_earth,\n+                                        unit=u.km)\n+\n+    return earth_to_planet_vector, earth_distance\n+\n+\n+def _get_apparent_planet_position(time, planet_index):\n+    \"\"\"\n+    Calculate the apparent position of planet ``planet_index`` in cartesian\n+    coordinates, given the approximate light travel time to the object.\n+\n+    Uses ``jplephem`` with the DE430 kernel.\n+\n+    Parameters\n+    ----------\n+    time : `~astropy.time.Time`\n+        Time of observation\n+\n+    planet_index : int\n+        Index of the planet (1-9 for Mercury through Pluto)\n+\n+    Returns\n+    -------\n+    cartesian_position : `~astropy.coordinates.CartesianRepresentation`\n+        Position of the planet defined as a vector from the Earth.\n+    \"\"\"\n+    # Get distance of planet at `time`\n+    earth_to_planet_vector, earth_distance = _get_absolute_planet_position(time, planet_index)\n+\n+    # The apparent position depends on the time that the light was emitted from\n+    # the distant planet, so subtract off the light travel time\n+    light_travel_time = earth_distance/speed_of_light\n+    emitted_time = time - light_travel_time\n+\n+    # Calculate position given approximate light travel time.\n+    # TODO: this should be solved iteratively to converge on precise positions\n+    earth_to_planet_vector, earth_distance = _get_absolute_planet_position(emitted_time, planet_index)\n+    x, y, z = earth_to_planet_vector\n+\n+    return CartesianRepresentation(x=x, y=y, z=z)\n+\n+\n+def get_planet(time, planet_index, location=None):\n+    \"\"\"\n+    Get a `~astropy.coordinates.SkyCoord` for a planet as observed from a\n+    location on Earth.\n+\n+    Parameters\n+    ----------\n+    time : `~astropy.time.Time`\n+        Time of observation\n+\n+    planet_index : int","path":"astropy/coordinates/solar_system.py","position":160,"original_position":160,"commit_id":"7d0679de9f9ea71522dc76cb5854bfcf906f109c","original_commit_id":"7d0679de9f9ea71522dc76cb5854bfcf906f109c","user":{"login":"pllim","id":2090236,"avatar_url":"https://avatars.githubusercontent.com/u/2090236?v=3","gravatar_id":"","url":"https://api.github.com/users/pllim","html_url":"https://github.com/pllim","followers_url":"https://api.github.com/users/pllim/followers","following_url":"https://api.github.com/users/pllim/following{/other_user}","gists_url":"https://api.github.com/users/pllim/gists{/gist_id}","starred_url":"https://api.github.com/users/pllim/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pllim/subscriptions","organizations_url":"https://api.github.com/users/pllim/orgs","repos_url":"https://api.github.com/users/pllim/repos","events_url":"https://api.github.com/users/pllim/events{/privacy}","received_events_url":"https://api.github.com/users/pllim/received_events","type":"User","site_admin":false},"body":"You mean\r\n\r\n```python\r\nindex = solar_system.PLANETS.get(name, some_default_index)\r\n```\r\n\r\n?\r\n\r\nIf so, what would be a good default index? Earth's? Or some obviously invalid number (like 0 or -1) that will raise an exception?","created_at":"2016-03-29T17:25:20Z","updated_at":"2016-03-29T17:25:20Z","html_url":"https://github.com/astropy/astropy/pull/4746#discussion_r57763550","pull_request_url":"https://api.github.com/repos/astropy/astropy/pulls/4746","_links":{"self":{"href":"https://api.github.com/repos/astropy/astropy/pulls/comments/57763550"},"html":{"href":"https://github.com/astropy/astropy/pull/4746#discussion_r57763550"},"pull_request":{"href":"https://api.github.com/repos/astropy/astropy/pulls/4746"}}},"pull_request":{"url":"https://api.github.com/repos/astropy/astropy/pulls/4746","id":64421973,"html_url":"https://github.com/astropy/astropy/pull/4746","diff_url":"https://github.com/astropy/astropy/pull/4746.diff","patch_url":"https://github.com/astropy/astropy/pull/4746.patch","issue_url":"https://api.github.com/repos/astropy/astropy/issues/4746","number":4746,"state":"open","locked":false,"title":"Solar system and lunar ephemerides via jplephem","user":{"login":"bmorris3","id":3497584,"avatar_url":"https://avatars.githubusercontent.com/u/3497584?v=3","gravatar_id":"","url":"https://api.github.com/users/bmorris3","html_url":"https://github.com/bmorris3","followers_url":"https://api.github.com/users/bmorris3/followers","following_url":"https://api.github.com/users/bmorris3/following{/other_user}","gists_url":"https://api.github.com/users/bmorris3/gists{/gist_id}","starred_url":"https://api.github.com/users/bmorris3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmorris3/subscriptions","organizations_url":"https://api.github.com/users/bmorris3/orgs","repos_url":"https://api.github.com/users/bmorris3/repos","events_url":"https://api.github.com/users/bmorris3/events{/privacy}","received_events_url":"https://api.github.com/users/bmorris3/received_events","type":"User","site_admin":false},"body":"I've implemented an interface for grabbing solar system ephemerides from [`jplephem`](https://pypi.python.org/pypi/jplephem) (MIT licensed), after caching a copy of the DE430 table (see the jplephem [docs](https://pypi.python.org/pypi/jplephem) for info). There are two new public functions in this PR, `get_moon(time, [location])` and `get_planet(time, planet_index, [location])`. Both return `SkyCoord` objections, the former for Earth's moon and the latter for solar system \"planets\" Mercury through Pluto inclusive.\r\n\r\nHere are the new functions in action: \r\n```python\r\nIn [1]: from astropy.coordinates import get_moon, get_planet, EarthLocation\r\nIn [2]: from astropy.time import Time\r\nIn [6]: loc = EarthLocation.of_site('Apache Point')\r\nIn [7]: moon = get_moon(Time.now(), loc)\r\nIn [8]: moon\r\nOut[8]:\r\n<SkyCoord (GCRS: obstime=2016-03-29 06:35:36.927857, obsgeoloc=[-1463969.30185172 -5166673.34223433  3434985.71204565] m, obsgeovel=[ 0.  0.  0.] m / s): (ra, dec, distance) in (deg, deg, km)\r\n    (250.94788165, -17.04585998, 400244.30166804)>\r\n\r\nIn [9]: jupiter = get_planet(Time.now(), 5, loc)\r\nIn [10]: jupiter\r\nOut[10]:\r\n<SkyCoord (GCRS: obstime=2016-03-29 06:36:28.310851, obsgeoloc=[-1463969.30185172 -5166673.34223433  3434985.71204565] m, obsgeovel=[ 0.  0.  0.] m / s): (ra, dec, distance) in (deg, deg, km)\r\n    (167.22360841, 7.07220939, 673151288.66240811)>\r\n```\r\n\r\nI'm testing the outputs of my functions against queries from the [JPL Horizons](http://ssd.jpl.nasa.gov/horizons.cgi) web interface for the Astrometric RA & Dec of the targets with the atmospheric refraction setting turned on. I calculate the positions of Mercury, the Moon and Jupiter on two dates, from observatories in both the northern and southern hemispheres of the Earth. The sky coordinates of planets agree to within one arcminute between astropy+jplephem and JPL Horizons on the web, but the moon coordinates vary by 10s of arcmin. I don't know precisely what causes the lunar discrepancy yet. \r\n\r\nI'm submitting this PR prepared to make lots of changes after comments, since I hope some discussion will follow. This addresses #3219, #2244, #3217, #4269, astropy/astroplan#35 astropy/astroplan#111, and overlaps in functionality with PRs #4724, #4736.\r\n\r\nThe tests will fail in the ci chain because I've put `jplephem` in the optional dependencies, but is not currently accessible via conda (you *can* grab it with `pip install jplephem`). I'm not sure if this is a showstopper for us – would it be possible to push a copy of jplephem to conda?\r\n\r\ncc @mhvk @cdeil @brandon-rhodes @adrn @astrofrog \r\n\r\n*** \r\n\r\nQuestions for @eteq or other coordinates experts: \r\n* are the GCRS coordinate transformations currently tested at distances <1 AU? I recall we had problems before for GCRS coordinates near Earth, but I think they were all fixed in #4221, #4254. \r\n* If no location is supplied to these functions, these functions default to Greenwich as a placeholder location. Is that OK? What's convention right now if defining a GCRS coordinate without an `EarthLocation`?\r\n* can some of the discrepancy between jplephem+astropy and JPL Horizons stem from the fact that the position/orientation of the Earth in the astropy `GCRS` frame (via ERFA?) won't be precisely consistent with the jplephem position of Earth relative to the solar system barycenter, which is the position vector from which all other coordinates are built in my implementation?","created_at":"2016-03-29T07:04:53Z","updated_at":"2016-03-29T17:25:20Z","closed_at":null,"merged_at":null,"merge_commit_sha":"3ea604ba671eadf6f78059f959be951d3b1ba564","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/astropy/astropy/pulls/4746/commits","review_comments_url":"https://api.github.com/repos/astropy/astropy/pulls/4746/comments","review_comment_url":"https://api.github.com/repos/astropy/astropy/pulls/comments{/number}","comments_url":"https://api.github.com/repos/astropy/astropy/issues/4746/comments","statuses_url":"https://api.github.com/repos/astropy/astropy/statuses/7d0679de9f9ea71522dc76cb5854bfcf906f109c","head":{"label":"bmorris3:solarsystem","ref":"solarsystem","sha":"7d0679de9f9ea71522dc76cb5854bfcf906f109c","user":{"login":"bmorris3","id":3497584,"avatar_url":"https://avatars.githubusercontent.com/u/3497584?v=3","gravatar_id":"","url":"https://api.github.com/users/bmorris3","html_url":"https://github.com/bmorris3","followers_url":"https://api.github.com/users/bmorris3/followers","following_url":"https://api.github.com/users/bmorris3/following{/other_user}","gists_url":"https://api.github.com/users/bmorris3/gists{/gist_id}","starred_url":"https://api.github.com/users/bmorris3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmorris3/subscriptions","organizations_url":"https://api.github.com/users/bmorris3/orgs","repos_url":"https://api.github.com/users/bmorris3/repos","events_url":"https://api.github.com/users/bmorris3/events{/privacy}","received_events_url":"https://api.github.com/users/bmorris3/received_events","type":"User","site_admin":false},"repo":{"id":32882713,"name":"astropy","full_name":"bmorris3/astropy","owner":{"login":"bmorris3","id":3497584,"avatar_url":"https://avatars.githubusercontent.com/u/3497584?v=3","gravatar_id":"","url":"https://api.github.com/users/bmorris3","html_url":"https://github.com/bmorris3","followers_url":"https://api.github.com/users/bmorris3/followers","following_url":"https://api.github.com/users/bmorris3/following{/other_user}","gists_url":"https://api.github.com/users/bmorris3/gists{/gist_id}","starred_url":"https://api.github.com/users/bmorris3/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bmorris3/subscriptions","organizations_url":"https://api.github.com/users/bmorris3/orgs","repos_url":"https://api.github.com/users/bmorris3/repos","events_url":"https://api.github.com/users/bmorris3/events{/privacy}","received_events_url":"https://api.github.com/users/bmorris3/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bmorris3/astropy","description":"Repository for the Astropy core package","fork":true,"url":"https://api.github.com/repos/bmorris3/astropy","forks_url":"https://api.github.com/repos/bmorris3/astropy/forks","keys_url":"https://api.github.com/repos/bmorris3/astropy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bmorris3/astropy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bmorris3/astropy/teams","hooks_url":"https://api.github.com/repos/bmorris3/astropy/hooks","issue_events_url":"https://api.github.com/repos/bmorris3/astropy/issues/events{/number}","events_url":"https://api.github.com/repos/bmorris3/astropy/events","assignees_url":"https://api.github.com/repos/bmorris3/astropy/assignees{/user}","branches_url":"https://api.github.com/repos/bmorris3/astropy/branches{/branch}","tags_url":"https://api.github.com/repos/bmorris3/astropy/tags","blobs_url":"https://api.github.com/repos/bmorris3/astropy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bmorris3/astropy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bmorris3/astropy/git/refs{/sha}","trees_url":"https://api.github.com/repos/bmorris3/astropy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bmorris3/astropy/statuses/{sha}","languages_url":"https://api.github.com/repos/bmorris3/astropy/languages","stargazers_url":"https://api.github.com/repos/bmorris3/astropy/stargazers","contributors_url":"https://api.github.com/repos/bmorris3/astropy/contributors","subscribers_url":"https://api.github.com/repos/bmorris3/astropy/subscribers","subscription_url":"https://api.github.com/repos/bmorris3/astropy/subscription","commits_url":"https://api.github.com/repos/bmorris3/astropy/commits{/sha}","git_commits_url":"https://api.github.com/repos/bmorris3/astropy/git/commits{/sha}","comments_url":"https://api.github.com/repos/bmorris3/astropy/comments{/number}","issue_comment_url":"https://api.github.com/repos/bmorris3/astropy/issues/comments{/number}","contents_url":"https://api.github.com/repos/bmorris3/astropy/contents/{+path}","compare_url":"https://api.github.com/repos/bmorris3/astropy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bmorris3/astropy/merges","archive_url":"https://api.github.com/repos/bmorris3/astropy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bmorris3/astropy/downloads","issues_url":"https://api.github.com/repos/bmorris3/astropy/issues{/number}","pulls_url":"https://api.github.com/repos/bmorris3/astropy/pulls{/number}","milestones_url":"https://api.github.com/repos/bmorris3/astropy/milestones{/number}","notifications_url":"https://api.github.com/repos/bmorris3/astropy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bmorris3/astropy/labels{/name}","releases_url":"https://api.github.com/repos/bmorris3/astropy/releases{/id}","deployments_url":"https://api.github.com/repos/bmorris3/astropy/deployments","created_at":"2015-03-25T18:20:07Z","updated_at":"2015-04-18T20:54:09Z","pushed_at":"2016-03-29T06:30:09Z","git_url":"git://github.com/bmorris3/astropy.git","ssh_url":"git@github.com:bmorris3/astropy.git","clone_url":"https://github.com/bmorris3/astropy.git","svn_url":"https://github.com/bmorris3/astropy","homepage":"www.astropy.org","size":42453,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"astropy:master","ref":"master","sha":"249b4815f3441c2f1e7a24945bf543f56609a2d8","user":{"login":"astropy","id":847984,"avatar_url":"https://avatars.githubusercontent.com/u/847984?v=3","gravatar_id":"","url":"https://api.github.com/users/astropy","html_url":"https://github.com/astropy","followers_url":"https://api.github.com/users/astropy/followers","following_url":"https://api.github.com/users/astropy/following{/other_user}","gists_url":"https://api.github.com/users/astropy/gists{/gist_id}","starred_url":"https://api.github.com/users/astropy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/astropy/subscriptions","organizations_url":"https://api.github.com/users/astropy/orgs","repos_url":"https://api.github.com/users/astropy/repos","events_url":"https://api.github.com/users/astropy/events{/privacy}","received_events_url":"https://api.github.com/users/astropy/received_events","type":"Organization","site_admin":false},"repo":{"id":2081289,"name":"astropy","full_name":"astropy/astropy","owner":{"login":"astropy","id":847984,"avatar_url":"https://avatars.githubusercontent.com/u/847984?v=3","gravatar_id":"","url":"https://api.github.com/users/astropy","html_url":"https://github.com/astropy","followers_url":"https://api.github.com/users/astropy/followers","following_url":"https://api.github.com/users/astropy/following{/other_user}","gists_url":"https://api.github.com/users/astropy/gists{/gist_id}","starred_url":"https://api.github.com/users/astropy/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/astropy/subscriptions","organizations_url":"https://api.github.com/users/astropy/orgs","repos_url":"https://api.github.com/users/astropy/repos","events_url":"https://api.github.com/users/astropy/events{/privacy}","received_events_url":"https://api.github.com/users/astropy/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/astropy/astropy","description":"Repository for the Astropy core package","fork":false,"url":"https://api.github.com/repos/astropy/astropy","forks_url":"https://api.github.com/repos/astropy/astropy/forks","keys_url":"https://api.github.com/repos/astropy/astropy/keys{/key_id}","collaborators_url":"https://api.github.com/repos/astropy/astropy/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/astropy/astropy/teams","hooks_url":"https://api.github.com/repos/astropy/astropy/hooks","issue_events_url":"https://api.github.com/repos/astropy/astropy/issues/events{/number}","events_url":"https://api.github.com/repos/astropy/astropy/events","assignees_url":"https://api.github.com/repos/astropy/astropy/assignees{/user}","branches_url":"https://api.github.com/repos/astropy/astropy/branches{/branch}","tags_url":"https://api.github.com/repos/astropy/astropy/tags","blobs_url":"https://api.github.com/repos/astropy/astropy/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/astropy/astropy/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/astropy/astropy/git/refs{/sha}","trees_url":"https://api.github.com/repos/astropy/astropy/git/trees{/sha}","statuses_url":"https://api.github.com/repos/astropy/astropy/statuses/{sha}","languages_url":"https://api.github.com/repos/astropy/astropy/languages","stargazers_url":"https://api.github.com/repos/astropy/astropy/stargazers","contributors_url":"https://api.github.com/repos/astropy/astropy/contributors","subscribers_url":"https://api.github.com/repos/astropy/astropy/subscribers","subscription_url":"https://api.github.com/repos/astropy/astropy/subscription","commits_url":"https://api.github.com/repos/astropy/astropy/commits{/sha}","git_commits_url":"https://api.github.com/repos/astropy/astropy/git/commits{/sha}","comments_url":"https://api.github.com/repos/astropy/astropy/comments{/number}","issue_comment_url":"https://api.github.com/repos/astropy/astropy/issues/comments{/number}","contents_url":"https://api.github.com/repos/astropy/astropy/contents/{+path}","compare_url":"https://api.github.com/repos/astropy/astropy/compare/{base}...{head}","merges_url":"https://api.github.com/repos/astropy/astropy/merges","archive_url":"https://api.github.com/repos/astropy/astropy/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/astropy/astropy/downloads","issues_url":"https://api.github.com/repos/astropy/astropy/issues{/number}","pulls_url":"https://api.github.com/repos/astropy/astropy/pulls{/number}","milestones_url":"https://api.github.com/repos/astropy/astropy/milestones{/number}","notifications_url":"https://api.github.com/repos/astropy/astropy/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/astropy/astropy/labels{/name}","releases_url":"https://api.github.com/repos/astropy/astropy/releases{/id}","deployments_url":"https://api.github.com/repos/astropy/astropy/deployments","created_at":"2011-07-21T01:33:49Z","updated_at":"2016-03-28T05:04:42Z","pushed_at":"2016-03-29T07:04:54Z","git_url":"git://github.com/astropy/astropy.git","ssh_url":"git@github.com:astropy/astropy.git","clone_url":"https://github.com/astropy/astropy.git","svn_url":"https://github.com/astropy/astropy","homepage":"www.astropy.org","size":61664,"stargazers_count":818,"watchers_count":818,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":534,"mirror_url":null,"open_issues_count":717,"forks":534,"open_issues":717,"watchers":818,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/astropy/astropy/pulls/4746"},"html":{"href":"https://github.com/astropy/astropy/pull/4746"},"issue":{"href":"https://api.github.com/repos/astropy/astropy/issues/4746"},"comments":{"href":"https://api.github.com/repos/astropy/astropy/issues/4746/comments"},"review_comments":{"href":"https://api.github.com/repos/astropy/astropy/pulls/4746/comments"},"review_comment":{"href":"https://api.github.com/repos/astropy/astropy/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/astropy/astropy/pulls/4746/commits"},"statuses":{"href":"https://api.github.com/repos/astropy/astropy/statuses/7d0679de9f9ea71522dc76cb5854bfcf906f109c"}}}}