{ "info": { "author": "Pierre Cuvilliers", "author_email": "pcuvil@mit.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: End Users/Desktop", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 2 :: Only", "Programming Language :: Python :: Implementation :: CPython", "Programming Language :: Python :: Implementation :: IronPython", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Interpreters" ], "description": "================\ngh-python-remote\n================\n\n| Connect an external python instance to Grasshopper, and vice-versa.\n| This lets you run any Python package directly from Grasshopper, including numpy and scipy!\n\n.. image:: https://raw.githubusercontent.com/Digital-Structures/ghpythonremote/9d6773fbc0cc31cc042b5622aadd607716e952f7/GH_python_remote_plt.png\n :width: 900px\n :align: center\n\n====\n\n************\nInstallation\n************\n\nRequires a Python 2.7 installation, not compatible with Python 3. Currently Windows only.\n\n1. Install the software dependencies:\n-------------------------------------\n\nBefore installing gh-python-remote in **Rhino 6**, you will need to install Python 2, Rhino 6, and open Grasshopper in Rhino 6 at least once.\n\nBefore installing gh-python-remote in **Rhino 5**, you will need to install Python 2, Rhino 5, Grasshopper and GHPython, and drop the GHPython component on the Grasshopper canvas in Rhino 5 at least once.\n\nInstall the following:\n\n:Python 2.7:\n gh-python-remote was developed with the `Anaconda`_ distribution in mind, but any Python distribution works. If you already have Anaconda installed with Python 3, do not reinstall, instead just read the next paragraph.\n\n *If you want to be able to name virtual environments in gh-python-remote by their conda name, select \"Add conda to my PATH\" when prompted during Anaconda's installation.*\n:Python `virtual environment`_ (optional):\n Isolate dependencies for each project by creating a new virtual environment. If you use Anaconda, open the Windows command prompt (or the Anaconda prompt if you chose not to add conda to your PATH) and type:\n\n .. code-block:: bash\n\n conda create --name rhinoremote python=2.7 numpy scipy\n\n This will set you up with a new virtual environment named ``rhinoremote``, and install numpy and scipy in it.\n:`Rhinoceros3D`_:\n Version 5 and 6 on Windows are supported. Rhino 6 for Mac might be supported in a later release.\n:`Grasshopper`_:\n On Rhino 6, it is already installed. On Rhino 5, install version 0.9.0076. **Open it at least once before continuing.**\n:`GH Python`_:\n On Rhino 6, it is already installed. On Rhino 5, install version 0.6.0.3. **On Rhino 5, drop it on the Grasshopper canvas at least once before continuing.**\n\n2. Install gh-python-remote:\n--------------------------------\n\nFrom the Windows command prompt (or the special Anaconda or Python prompt if pip is not in your path by default), run:\n\n*(If you are using a virtual environment, remember to* **activate** *it first. With the conda virtual environment from above, you would need to run* ``conda activate rhinoremote`` *in the Windows or Anaconda prompt)*\n\n.. code-block:: bash\n\n pip install gh-python-remote --upgrade --no-binary=:all:\n python -m ghpythonremote._configure_ironpython_installation\n\nThis will install gh-python-remote for Rhino 6, and install the gh-python-remote UserObject in all Grasshopper versions.\n\nThe ``ghpythonremote._configure_ironpython_installation`` script takes an optional location argument that can be ``5``, ``6`` (default), or the path to a target IronPython package directory.\n\nFor example, to install for Rhino 5, replace the second command with:\n\n.. code-block:: bash\n\n python -m ghpythonremote._configure_ironpython_installation 5\n\nTo install to another location, like for Rhino 7:\n\n.. code-block:: bash\n\n python -m ghpythonremote._configure_ironpython_installation ^\n \"%APPDATA%\\McNeel\\Rhinoceros\\7.0\\Plug-ins\\^\n IronPython (814d908a-e25c-493d-97e9-ee3861957f49)\\settings\\lib\"\n\n====\n\n*****\nUsage\n*****\n\n*All the examples files are copied in the* ``%APPDATA%\\Grasshopper\\UserObjects\\gh-python-remote\\examples`` *folder. You can also download them from the* `github repo`_.\n\nFrom Grasshopper to Python\n--------------------------\n\nStep-by-step\n^^^^^^^^^^^^\n\n#. Open the example file ``GH_python_remote.ghx`` in Grasshopper, or drop the gh-python-remote component on the canvas.\n#. Use the ``location`` input to define the location of the Python interpreter you want to connect to.\n#. Use the ``modules`` input to define the modules you want to access in the GHPython component.\n#. Change ``run`` to ``True`` to connect.\n#. In the GHPython component, the imported modules will now be available via the sticky dictionary. For example if you are trying to use Numpy:\n\n .. code-block:: python\n\n import scriptcontext\n np = scriptcontext.sticky['numpy']\n\nNotes\n^^^^^\n\nCreating remote array-like objects from large local lists is slow. For example, ``np.array(range(10000))`` takes more than 10 seconds. To solve this, you need to first send the list to the remote interpreter, then create the array from this remote object:\n\n.. code-block:: python\n\n import scriptcontext as sc\n import ghpythonremote\n np = sc.sticky['numpy']\n rpy = sc.sticky['rpy']\n\n r_range = ghpythonremote.deliver(rpy, range(10000))\n np.array(r_range)\n\nAdditionally, Grasshopper does not recognize remote list objects as lists. They need to be recovered to the local interpreter first:\n\n.. code-block:: python\n\n import scriptcontext as sc\n import ghpythonremote\n from ghpythonlib.treehelpers import list_to_tree # Rhino 6 only!\n np = sc.sticky['numpy']\n\n a = np.arange(15).reshape((3,5))\n a = ghpythonremote.obtain(a.tolist())\n a = list_to_tree(a, source=[0,0])\n\n\n``ghpythonlib.treehelpers`` is Rhino 6 only, see the `treehelpers gist`_ for an equivalent implementation if you need it on Rhino 5.\n\nQuick-ref:\n^^^^^^^^^^\n\n**\\*** *marks an input that is only available by editing the gh-python-remote UserObject, or in* ``GH_python_remote.ghx``.\n\n:Arguments:\n :\\*code\u00a0(string):\n Path to the ``GH_to_python.py`` code file.\n :location (string):\n Path to a python executable, or to a folder containing ``python.exe``, or the name of a conda-created virtual environment prefixed by ``conda://`` (``conda://env_name``, requires ``conda`` available in your PATH). If empty, finds python from your windows ``%PATH%``.\n :run (boolean):\n Creates the connection, and imports new modules, when turned to True. Kills the connection, and deletes the references to the imports, when turned to False.\n :modules (string list):\n List of module names to import in the remote python. They will be added to the ``scriptcontext.sticky`` dictionary, allowing them to be reused from other python components in the same Grasshopper document. Submodules (for example ``numpy.linalg``) have to be added explicitly to this list to be available later, and importing the parent package is also required even if only the submodule is used.\n :\\*log_level (string from ['NOTSET', 'DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']):\n Logging level to use for the local IronPython and the remote python instance.\n :\\*working_dir (string):\n Working directory for the remote python instance.\n\n:Returns:\n :out (string):\n Console output with DEBUG information.\n :linked_modules (string list):\n List of imported module names.\n :rpy (rpyc connection object):\n The object representing the remote Python interpreter.\n :import_statements (string):\n What to use in the GHPython component to actually use the imported modules.\n\n\nFrom Python to Grasshopper\n--------------------------\n\nYou can also use gh-python-remote to programmatically control a Rhinoceros instance, and connect to it via Python. Have a look at ``examples/python_to_GH.py`` for a full working example.\n\n====\n\n*******\nLicense\n*******\n\nLicensed under the `MIT license`_.\n\n.. _Anaconda: https://www.anaconda.com/download/\n.. _virtual environment: https://docs.python.org/3/tutorial/venv.html\n.. _Rhinoceros3D: https://www.rhino3d.com/download\n.. _Grasshopper: https://www.rhino3d.com/download/grasshopper/1.0/wip/rc\n.. _GH Python: http://www.food4rhino.com/app/ghpython#downloads_list\n.. _github repo: https://github.com/Digital-Structures/ghpythonremote/tree/master/ghpythonremote/examples\n.. _treehelpers gist: https://gist.github.com/piac/ef91ac83cb5ee92a1294\n.. _MIT License: https://github.com/Digital-Structures/ghpythonremote/blob/master/LICENSE.txt\n\n\n====\n\n*********\nChangelog\n*********\n\n1.2.1 (2019-07-24)\n------------------\n\nFix\n^^^\n- Cleanup examples directory, and fix missing file at installation (#26).\n- Update logger names in .ghuser file\n\n1.2.0 (2019-07-08)\n------------------\n\nNew\n^^^\n- Now fully compatible with Rhino 6.\n\nChanges\n^^^^^^^\n- Revert using a special RPyC distribution, now explicitly using upstream.\n- Upgrade to RPyC 4.1.0.\n- Hide rpyc behind a special ghpythonremote import. ``rpyc.utils`` functions ``deliver`` and ``obtain`` are available as ``ghpythonremote.deliver`` and ``ghpythonremote.obtain``; ``rpyc`` should be imported with ``from ghpythonremote import rpyc`` if ever needed.\n- Expand the environment path in CPython subprocess, trying to match what conda would do, helping Numpy finds its DLLs.\n\nFix\n^^^\n- Repair pip install command on recent pip with pip.main deprecated.\n- Repair incompatibilities with IronPython 2.7.0.\n- Repair incompatibilities with RPyC 4.1.0, using monkey-patched compatibilty fixes for IronPython.\n- Remove unnecessary pip install parameters.\n\n1.1.4 (2018-02-28)\n------------------\n\nFix\n^^^\n- Stop using the `exposed` prefix to remote attributes, per rpyc v4.\n\n1.1.3 (2018-02-27)\n------------------\n\nFix\n^^^\n- Rename ``async`` import from rpyc to ``async_``.\n- Bump rpyc version to pilcru/rpyc@3.4.6 to fix IronPython 2.7.0 dump bytes issues.\n\n1.1.2 (2018-02-23)\n------------------\n\nFix\n^^^\n- Use https file location for the dependencies, to remove the need for git when installing.\n\n1.1.0 (2018-02-14)\n------------------\n\nNew\n^^^\n- Documented ``obtain`` and ``deliver`` features of rpyc to speedup remote array-like objects creation and retrieval.\n\nChanges\n^^^^^^^\n- Use the v4.0.0 pre-release of rpyc to fix IronPython <-> CPython ``str`` unpickling issues.\n- Improve error messages when connection is lost.\n\nFix\n^^^\n- Repair the GH to python example, where argument passing (for the port configuration) was broken.\n\n1.0.4 (2017-10-06)\n------------------\n\nFix\n^^^\n- Fix quote escaping issue in pip install command for IronPython.\n\n1.0.3 (2017-10-02)\n------------------\n\nFirst public release.", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Digital-Structures/ghpythonremote", "keywords": "CAD design engineering scientific numpy scipy IronPython Rhinoceros3D", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "gh-python-remote", "package_url": "https://pypi.org/project/gh-python-remote/", "platform": "Windows", "project_url": "https://pypi.org/project/gh-python-remote/", "project_urls": { "Homepage": "https://github.com/Digital-Structures/ghpythonremote" }, "release_url": "https://pypi.org/project/gh-python-remote/1.2.1/", "requires_dist": null, "requires_python": ">=2.6,<3", "summary": "GH Python Remote is a package to get Rhinoceros3D/Grasshopper and Python to collaborate better: connect an external python instance to Grasshopper, and vice-versa.", "version": "1.2.1" }, "last_serial": 5577881, "releases": { "1.0.1": [ { "comment_text": "", "digests": { "md5": "d1c3951aaa6e4d21ca1ebd70c8f8718e", "sha256": "f12c08d3b448eb6e1d6158f9d344f1276a14a33a3c3d61d30ee6006e06994b01" }, "downloads": -1, "filename": "gh_python_remote-1.0.1-py2-none-any.whl", "has_sig": false, "md5_digest": "d1c3951aaa6e4d21ca1ebd70c8f8718e", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6,<3", "size": 93569, "upload_time": "2017-09-28T23:54:10", "url": "https://files.pythonhosted.org/packages/94/dc/b60c0683d91f0aa356a171b47c69ad3de2193ebef7e2cc3f60e334203a62/gh_python_remote-1.0.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "31fcda81b7844d78448b1a67e7a939d6", "sha256": "50ae2604aa96570b83da18a1420f24f96890ee1306ada02035b14c11942d6c07" }, "downloads": -1, "filename": "gh-python-remote-1.0.1.tar.gz", "has_sig": false, "md5_digest": "31fcda81b7844d78448b1a67e7a939d6", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 87303, "upload_time": "2017-09-28T23:54:13", "url": "https://files.pythonhosted.org/packages/49/cd/e838d17b2f1a91e415bab8895af84cbfcc29a783971d1c60fc38df029011/gh-python-remote-1.0.1.tar.gz" } ], "1.0.2": [ { "comment_text": "", "digests": { "md5": "8a6f06e9f1aae881f0980601a723a87f", "sha256": "52d406183de55113c3686c3fc9c4e004c8b1f9866f7c938c96499cf7ed9ef19b" }, "downloads": -1, "filename": "gh_python_remote-1.0.2-py2-none-any.whl", "has_sig": false, "md5_digest": "8a6f06e9f1aae881f0980601a723a87f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6,<3", "size": 91904, "upload_time": "2017-09-29T01:43:03", "url": "https://files.pythonhosted.org/packages/59/43/e1b2891a4c499eb066c7f6f4442643cc4604365f2be2d9b8d5222863ab46/gh_python_remote-1.0.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "757885b202004e8b24b531b788f79cca", "sha256": "a728171e6a624094aa0d66fc700df2dc5f5a5ec44d335eae4bd6ef0cc9b1e30b" }, "downloads": -1, "filename": "gh-python-remote-1.0.2.tar.gz", "has_sig": false, "md5_digest": "757885b202004e8b24b531b788f79cca", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 85589, "upload_time": "2017-09-29T01:43:05", "url": "https://files.pythonhosted.org/packages/67/e3/be3c48b23c81f340dc0f895a6126a07fa5d11571f5bb3c209e9384ebe5a2/gh-python-remote-1.0.2.tar.gz" } ], "1.0.3": [ { "comment_text": "", "digests": { "md5": "66d4bfc151f7c348dc2856a2e2e7e725", "sha256": "3e243a66346cf7f8caa463e727fcbeb50f7bcc4229298eedc25b8834ce7133ed" }, "downloads": -1, "filename": "gh_python_remote-1.0.3-py2-none-any.whl", "has_sig": false, "md5_digest": "66d4bfc151f7c348dc2856a2e2e7e725", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6,<3", "size": 91904, "upload_time": "2017-09-29T15:27:06", "url": "https://files.pythonhosted.org/packages/56/85/389af3f263e21b9bee9f1c3dcde19ba3f3f0df85136a9e27b04d8a2d409e/gh_python_remote-1.0.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e123f2b05a9182b606dc8b5d30015801", "sha256": "1827c6462ca751d1095f30594e96c1e031701c86937c9c4bf01f089b18f7300d" }, "downloads": -1, "filename": "gh-python-remote-1.0.3.tar.gz", "has_sig": false, "md5_digest": "e123f2b05a9182b606dc8b5d30015801", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 85591, "upload_time": "2017-09-29T15:26:56", "url": "https://files.pythonhosted.org/packages/c5/53/a6692aa248c09d401edd90be471e92dc31cc078fff72a0329af0e5c61bd7/gh-python-remote-1.0.3.tar.gz" } ], "1.0.4": [ { "comment_text": "", "digests": { "md5": "26394b7fb7e5461fc5fe8c53f99fc6fc", "sha256": "28528894ca8b2238a3914a118a7b7fa517f79ba2170e233e9cdf58c062787b6b" }, "downloads": -1, "filename": "gh_python_remote-1.0.4-py2-none-any.whl", "has_sig": false, "md5_digest": "26394b7fb7e5461fc5fe8c53f99fc6fc", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6,<3", "size": 91924, "upload_time": "2017-10-06T15:14:34", "url": "https://files.pythonhosted.org/packages/86/4b/b280718c467cdcc477e5c4be29f1271eecb5fe220449b3abbd92f5ee8036/gh_python_remote-1.0.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "107a6512bdca1927608b67f633f5d8f1", "sha256": "4528761d98420365bfb5c3810a1bf5a241bb4b5813ca33525c60e15911cd8fe8" }, "downloads": -1, "filename": "gh-python-remote-1.0.4.tar.gz", "has_sig": false, "md5_digest": "107a6512bdca1927608b67f633f5d8f1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 85610, "upload_time": "2017-10-06T15:14:24", "url": "https://files.pythonhosted.org/packages/69/e8/f1372af8d092989569bbeb9991bd1016f965c018bb15f190ea3c93c7a153/gh-python-remote-1.0.4.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "228f4993fd1733d1a025b2929f0122d9", "sha256": "40a5f624224be81f1fcad5eaf83eee880b9066d207e91416dea95117484cc636" }, "downloads": -1, "filename": "gh_python_remote-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "228f4993fd1733d1a025b2929f0122d9", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6,<3", "size": 91657, "upload_time": "2018-02-19T23:52:06", "url": "https://files.pythonhosted.org/packages/91/39/d1d0530a99413d0788e9578a4fde5985ae09d32cdd50141ce8e3a7053fd8/gh_python_remote-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "925dbf1563d552714c24f48fdc5f85d9", "sha256": "327ec67c1411550ebf228c541ff6c9906874f2946b7a9a72264858d6b046178d" }, "downloads": -1, "filename": "gh-python-remote-1.1.1.tar.gz", "has_sig": false, "md5_digest": "925dbf1563d552714c24f48fdc5f85d9", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 83797, "upload_time": "2018-02-19T23:51:57", "url": "https://files.pythonhosted.org/packages/9a/7c/b3ce3b441126352e8f6d107755e626a2fa2807e538527f5d345cf32922f1/gh-python-remote-1.1.1.tar.gz" } ], "1.1.2": [ { "comment_text": "", "digests": { "md5": "9f5e3daea476709f39c7c47561944dc4", "sha256": "65c69ee4f8bdfa3404bb07e52566023fe5db50f20e5144c2aacc13fb5c5b58ce" }, "downloads": -1, "filename": "gh_python_remote-1.1.2-py2-none-any.whl", "has_sig": false, "md5_digest": "9f5e3daea476709f39c7c47561944dc4", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6,<3", "size": 91667, "upload_time": "2018-02-23T19:37:41", "url": "https://files.pythonhosted.org/packages/24/97/21dc94a894ccce54058dd2cbf888e0be390172ba61bdde2117fb4379beda/gh_python_remote-1.1.2-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "19e5617bde3cb667bc3ad1fd1b453e29", "sha256": "8831df062e517bad5c59649104131182d2d5c310cbbbc99c275ec76a7a2c3eec" }, "downloads": -1, "filename": "gh-python-remote-1.1.2.tar.gz", "has_sig": false, "md5_digest": "19e5617bde3cb667bc3ad1fd1b453e29", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 83804, "upload_time": "2018-02-23T19:37:32", "url": "https://files.pythonhosted.org/packages/c2/b1/c9983ed213d58a187c950d15786bfdbca9e7f199e4758b69272307621873/gh-python-remote-1.1.2.tar.gz" } ], "1.1.3": [ { "comment_text": "", "digests": { "md5": "a80a16f4521b2c069e725841f5402e9a", "sha256": "f17152c82cf8b4c418c26d35d3f0daa8296fc9bb9b03915d8a665b37e1c21779" }, "downloads": -1, "filename": "gh_python_remote-1.1.3-py2-none-any.whl", "has_sig": false, "md5_digest": "a80a16f4521b2c069e725841f5402e9a", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6,<3", "size": 91476, "upload_time": "2018-02-27T21:52:09", "url": "https://files.pythonhosted.org/packages/5e/2d/4c5a12e478add3715221a2430864b23d437d772ca0f4bc5af832c0af07a3/gh_python_remote-1.1.3-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d956eb6759f9a49905c3e1d24d7d8f9a", "sha256": "8c35c036674fc19b806e414b71bd6bffeea8eb8ee0343ff3e75c8eacc8c6b2d2" }, "downloads": -1, "filename": "gh-python-remote-1.1.3.tar.gz", "has_sig": false, "md5_digest": "d956eb6759f9a49905c3e1d24d7d8f9a", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 83211, "upload_time": "2018-02-27T21:51:58", "url": "https://files.pythonhosted.org/packages/c1/71/37fa16625e9d13abd15ef999a481affcd781cca453cd53cfed0cedcd9c53/gh-python-remote-1.1.3.tar.gz" } ], "1.1.4": [ { "comment_text": "", "digests": { "md5": "400b170abd81c8c074fea3eb29b30e65", "sha256": "4774cc71e1ba3081b94accd670a2301d374c45c23e58b5c2f42b046faf7faa7f" }, "downloads": -1, "filename": "gh_python_remote-1.1.4-py2-none-any.whl", "has_sig": false, "md5_digest": "400b170abd81c8c074fea3eb29b30e65", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": ">=2.6,<3", "size": 91472, "upload_time": "2018-02-28T16:19:45", "url": "https://files.pythonhosted.org/packages/87/0d/5e9806e2aae5e1f7bbf879d5d49b08cc155d0d29e32b8da78282018eaba0/gh_python_remote-1.1.4-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "14614fcb49652cd0d009696a3dbb26ee", "sha256": "bafe3cc02d8f503eb298ebad1db02e152b0d7310c16c7ab6d0146fbff0f4a1fa" }, "downloads": -1, "filename": "gh-python-remote-1.1.4.tar.gz", "has_sig": false, "md5_digest": "14614fcb49652cd0d009696a3dbb26ee", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 83221, "upload_time": "2018-02-28T16:19:37", "url": "https://files.pythonhosted.org/packages/60/58/05e6f8567a4a9a0fa5e372dcd92a0769c6c6752cc22ca2b913043a93bdb4/gh-python-remote-1.1.4.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "835d5d59832673245af5143aeffab06e", "sha256": "943796b4cf5f3a718bfc7fb5303471c247089fd37aad2bcf1c70ee5c3b588d2f" }, "downloads": -1, "filename": "gh-python-remote-1.2.0.tar.gz", "has_sig": false, "md5_digest": "835d5d59832673245af5143aeffab06e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 86505, "upload_time": "2019-07-08T23:58:14", "url": "https://files.pythonhosted.org/packages/00/99/6fd9e3e08176115c416bf859c63fd886f1cb1443c55b17cfa702c35b7fd0/gh-python-remote-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "9fa5fd11642399312e019c674b0507a1", "sha256": "b14f5d51cfc147ec5054ad30070582e5998f648da8084b5b8ea4cd025decb692" }, "downloads": -1, "filename": "gh-python-remote-1.2.1.tar.gz", "has_sig": false, "md5_digest": "9fa5fd11642399312e019c674b0507a1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 85040, "upload_time": "2019-07-24T14:28:03", "url": "https://files.pythonhosted.org/packages/4c/52/7393542179c0979b0eadab8e13d61302d0ae70e250c1af8b4f9a7a366c6b/gh-python-remote-1.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "9fa5fd11642399312e019c674b0507a1", "sha256": "b14f5d51cfc147ec5054ad30070582e5998f648da8084b5b8ea4cd025decb692" }, "downloads": -1, "filename": "gh-python-remote-1.2.1.tar.gz", "has_sig": false, "md5_digest": "9fa5fd11642399312e019c674b0507a1", "packagetype": "sdist", "python_version": "source", "requires_python": ">=2.6,<3", "size": 85040, "upload_time": "2019-07-24T14:28:03", "url": "https://files.pythonhosted.org/packages/4c/52/7393542179c0979b0eadab8e13d61302d0ae70e250c1af8b4f9a7a366c6b/gh-python-remote-1.2.1.tar.gz" } ] }