{ "info": { "author": "Graham Dumpleton", "author_email": "Graham.Dumpleton@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "License :: OSI Approved :: BSD License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6" ], "description": "This package provides a Python library for working with the open source\nOpenShift Origin project and downstream OpenShift products from Red Hat.\n\nThe library will provide the capability to work with OpenShift/Kubernetes\nresource objects, as well as endpoints for communicating with the OpenShift\nREST API.\n\nA command line client with the name ``powershift`` is also included which\nprovides additional functionality useful to users of the OpenShift\nplatform. Base functionality is minimal, but can be extended by installing\nadditional plugins.\n\nThe package requires Python 3.5 and will not work with earlier versions of\nPython.\n\nIf you are on MacOS X and are using OpenShift Origin 1.4 or later, or\nOpenShift Container Platform 3.4 or later, you will need to ensure you are\nusing Python 3.6 from the Python Software Foundation (PSF), or use Python\n3.5 or later, installed using HomeBrew. It is not possible to use Python\n3.5 from the PSF, or any other Python installation, which has been compiled\nagainst the OpenSSL version which ships with MacOS X as that only supports\nup to TLS 1.1 and newer versions of OpenShift require at least TLS 1.2.\n\nManipulating resource objects\n-----------------------------\n\nThe library always starts and ends with JSON definitions of the\nOpenShift/Kubernetes resource objects. The functions for loading the JSON\ndefinitions to create in memory representations of the resources are:\n\n* ``powershift.resources.load(path=None)`` - Loads resources from JSON from\n a file with the specified ``path``, or from standard input if no ``path``\n specified.\n\n* ``powershift.resources.loads(data)`` - Loads resources from JSON\n specified as string data.\n\nThe functions for dumping JSON definitions from the in memory\nrepresentations of the resources are:\n\n* ``powershift.resources.dump(obj, path=None, indent=None, sort_keys=False)`` -\n Saves resources as JSON to the specified ``path``, or to ``stdout`` if no\n ``path`` supplied. The JSON can be formatted in a more readable form by\n supplying an ``indent`` and electing to ``sort_keys``.\n\n* ``powershift.resources.dumps(obj, indent=None, sort_keys=False)`` -\n Returns resources as JSON string data. The JSON can be formatted in a\n more readable form by supplying an ``indent`` and electing to\n ``sort_keys``.\n\nExample code which takes a ``DeploymentConfig`` from ``stdin``, updating\nthe replica count and outputting the result to ``stdout`` is::\n\n import powershift.resources as resources\n\n dc = resources.load()\n\n dc.spec.replicas = 3\n\n resources.dump(dc, indent=4, sort_keys=True)\n\nExample code which takes a ``DeploymentConfig`` from ``stdin``, adding some\nenvironment variables and outputting the result to ``stdout`` is::\n\n import powershift.resources as resources\n\n dc = resources.load()\n\n env = dc.spec.template.spec.containers[0].env\n\n env.append(resources.v1_EnvVar(name='VAR1', value='VALUE'))\n env.append(resources.v1_EnvVar(name='VAR2', value='VALUE'))\n\n resources.dump(dc, indent=4, sort_keys=True)\n\nScripts using the library could be used to make multiple changes to\nresource objects for a deployed application on the fly by using a command\nof the form::\n\n oc get dc myapp -o json | python script.py | oc replace -f -\n\nNote that all attribute and parameter names use snake case and not camel case.\n\nCalling the OpenShift REST API\n------------------------------\n\nRequests can be made against the OpenShift REST API by first creating a\nclient object:\n\n* ``powershift.endpoints.Client(server=None, token=None, *, user=None, verify=None)`` -\n Create a client object for ``server`` by passing ``'hostname'``,\n optionally including a port by specifying ``'hostname:port'``, or a URL.\n When ``hostname`` is used, it is presumed that a secure connection should\n be used. If using ``oc proxy`` is being used, you will need to supply a\n URL and specify the protocol as ``http`` rather than ``https``. The API\n access ``token`` can be supplied, as can a flag indicating whether\n certificate verification should be performed for a secure connection.\n Certificate verification is performed by default but can be disabled\n using the keyword argument ``verify``. In order to issue the request and\n impersonate a specific user you have rights to impersonate, you can pass\n the keyword argument ``user``.\n\nIf the parameters are not being supplied explicitly, they can instead be\nsupplied using environment variables.\n\n* ``OPENSHIFT_API_SERVER`` - The ``hostname``, ``hostname:port`` or URL.\n\n* ``OPENSHIFT_API_TOKEN`` - The API access token.\n\n* ``OPENSHIFT_API_VERIFY`` - Flag indicating whether certificate\n verification should be performed. Set to ``false`` to disable.\n\nIf neither the parameters or environment variables are supplied, it will be\nassumed it is being run from inside of a container running under OpenShift.\nThe ``host`` will default to ``openshift.default.svc.cluster.local`` and\nthe ``token`` will be read from the file\n``/var/run/secrets/kubernetes.io/serviceaccount/token`` if it exists.\nCertificate verification will be turned off by default in this case.\n\nAn example script which prints out the list of pods running in each project\nis::\n\n import powershift.endpoints as endpoints\n\n client = endpoints.Client()\n\n projects = client.oapi.v1.projects.get()\n\n for project in projects.items:\n namespace = project.metadata.name\n\n print('namespace=%r' % namespace)\n\n pods = client.api.v1.namespaces(namespace=namespace).pods.get()\n\n for pod in pods.items:\n print('pod=%r' % pod.metadata.name)\n\nThe client calls in this example are blocking. If you want to use the\nclient in this manner in an asynchronous system, you will need to execute\nthe calls in a thread and not within a main event loop callback.\n\nThe alternative if implementing any asynchronous system on top of the\n``asyncio`` library and Python async/await primitives, is to use the async\nvariant of the client::\n\n import asyncio\n\n import powershift.endpoints as endpoints\n\n client = endpoints.AsyncClient()\n\n async def run_query():\n projects = await client.oapi.v1.projects.get()\n\n for project in projects.items:\n namespace = project.metadata.name\n\n print('namespace=%r' % namespace)\n\n pods = await client.api.v1.namespaces(namespace=namespace).pods.get()\n\n for pod in pods.items:\n print(' pod=%r' % pod.metadata.name)\n\n loop = asyncio.get_event_loop()\n\n loop.run_until_complete(run_query())\n\nWhen using the async client, watches are supported by passing the ``watch``\nparameter to any endpoint which supports it. The result is an async context\nmanager which in turn creates an async iterator which can be iterated over\nto get notifications.::\n\n import sys\n import asyncio\n\n import powershift.endpoints as endpoints\n\n async def run_query():\n namespace = sys.argv[1]\n\n print('namespace=%r' % namespace)\n\n client = endpoints.AsyncClient()\n\n pods = await client.api.v1.namespaces(namespace=namespace).pods.get()\n\n for pod in pods.items:\n print(' OBJECT %s pod=%r' % (pod.metadata.resource_version, pod.metadata.name))\n\n resource_version = pods.metadata.resource_version\n\n while True:\n try:\n async with client.api.v1.namespaces(namespace=namespace).pods.get(watch='', resource_version=resource_version, timeout_seconds=30) as items:\n async for item in items:\n action = item['type']\n pod = item['object']\n\n print(' %s %s pod=%r' % (action, pod.metadata.resource_version, pod.metadata.name))\n\n resource_version = pod.metadata.resource_version\n\n except Exception:\n pass\n\n loop = asyncio.get_event_loop()\n loop.run_until_complete(run_query())\n\nThe calling conventions can be derived from the REST API documentation\navailable at:\n\n* `Kubernetes v1 REST API`_\n* `OpenShift Enterprise v1 REST API`_\n\n.. _`Kubernetes v1 REST API`: https://docs.openshift.com/enterprise/latest/rest_api/kubernetes_v1.html\n.. _`OpenShift Enterprise v1 REST API`: https://docs.openshift.com/enterprise/latest/rest_api/openshift_v1.html\n\nSpecifically, by matching to the URL path for an endpoint, with the\nexception that ``/api/v1/watch`` and ``/oapi/v1/watch`` are not supported\nand instead you need to pass the ``watch`` parameter to the standard\nendpoint as shown above.\n\nNote that all attribute and parameter names use snake case and not camel\ncase.\n\nThe object returned is the in memory representation of resources. These are\ncreated automatically from the JSON definitions of the OpenShift/Kubernetes\nresource objects.\n\nDo note though that the Kubernetes/OpenShift API definitions are\ninconsistent at some points and have errors. The client library overrides\ncertain aspects of the API definition to fix up problems in the published\nAPI. For example, when referring to a namespace, you must always use\n``namespace``. The published API mixes ``name`` and ``namespace`` which can\ncause problems for an automatically generated API such that this package\nimplements.", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/getwarped/powershift", "keywords": "openshift kubernetes", "license": "BSD", "maintainer": "", "maintainer_email": "", "name": "powershift", "package_url": "https://pypi.org/project/powershift/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/powershift/", "project_urls": { "Homepage": "https://github.com/getwarped/powershift" }, "release_url": "https://pypi.org/project/powershift/1.3.13/", "requires_dist": null, "requires_python": "", "summary": "Python library for working with OpenShift.", "version": "1.3.13" }, "last_serial": 2562011, "releases": { "0.0.0": [], "1.3.0": [ { "comment_text": "", "digests": { "md5": "ae7fa89a7a1f76b7ff6abc77b8067ab7", "sha256": "7b3d44cee14f7b1332bff2263b9a4c4eed45df15d7080f7f67e7ba90cd4d2503" }, "downloads": -1, "filename": "powershift-1.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "ae7fa89a7a1f76b7ff6abc77b8067ab7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 78458, "upload_time": "2016-10-23T11:19:40", "url": "https://files.pythonhosted.org/packages/c7/62/0621e0e01b2e10cfcffbe768d6328326d350dcaccf13fce9b895786e2c98/powershift-1.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53d2e1f67b4604a817db7242c5ec805b", "sha256": "cea6e378014ae8bd5c1dbe07bf635f40abbed54453d7ffcae353653a65ef78fb" }, "downloads": -1, "filename": "powershift-1.3.0.tar.gz", "has_sig": false, "md5_digest": "53d2e1f67b4604a817db7242c5ec805b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71901, "upload_time": "2016-10-23T11:19:43", "url": "https://files.pythonhosted.org/packages/f8/6e/9cbb7418f817756521c27cb57a416f7f03600a7ae48691c58dedec7bd72b/powershift-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "1eec17d86f3abab4435c930f7683bc0e", "sha256": "53ff42e37fbe998c81bf9912b837c3927a1309aba1bbe70392503ad0151ec46c" }, "downloads": -1, "filename": "powershift-1.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "1eec17d86f3abab4435c930f7683bc0e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 75259, "upload_time": "2016-10-24T09:37:43", "url": "https://files.pythonhosted.org/packages/f7/f9/24b3a3d8b52e2667dddb73e87505ed09d98bd38faa86ecbd4d79368eb87d/powershift-1.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ac361650f72455e63cacde3fe61f9ddf", "sha256": "231dfd57d7a4b277ee2bc2667a88e39cb44cb67b36a3fc5b0d19a66735c93965" }, "downloads": -1, "filename": "powershift-1.3.1.tar.gz", "has_sig": false, "md5_digest": "ac361650f72455e63cacde3fe61f9ddf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68939, "upload_time": "2016-10-24T09:37:46", "url": "https://files.pythonhosted.org/packages/d2/f5/a50fefccb258d36a947f8f458be16645cc3faeec700c9eea9bc7e7e5ea9b/powershift-1.3.1.tar.gz" } ], "1.3.10": [ { "comment_text": "", "digests": { "md5": "de38fa2facbd03e0e1ee51c97f0c6406", "sha256": "3c73bdc859d1e6d5f4038dc6a66bc42fef3291cb70ff2804cf1da1eb8a0cf64f" }, "downloads": -1, "filename": "powershift-1.3.10.tar.gz", "has_sig": false, "md5_digest": "de38fa2facbd03e0e1ee51c97f0c6406", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71509, "upload_time": "2017-01-06T06:33:54", "url": "https://files.pythonhosted.org/packages/fd/49/6f01dd00e36b69efd03e49336ab4262985174babf10ac76f5e93bc0411da/powershift-1.3.10.tar.gz" } ], "1.3.11": [ { "comment_text": "", "digests": { "md5": "b69972a4104b06dc246ea01c2675d19c", "sha256": "830b92d5c5fbbd9e6db2350498593f3038ecae6578e485832a0bb2c777bafa2e" }, "downloads": -1, "filename": "powershift-1.3.11.tar.gz", "has_sig": false, "md5_digest": "b69972a4104b06dc246ea01c2675d19c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71055, "upload_time": "2017-01-06T06:36:21", "url": "https://files.pythonhosted.org/packages/df/c2/d70caafc66683593c7e2ec28c3bd8dcada1827ecf2aeb4b018519de25c50/powershift-1.3.11.tar.gz" } ], "1.3.12": [ { "comment_text": "", "digests": { "md5": "2350a02041308bed132a42b881d0c142", "sha256": "36d84656bb5fe8797bb2f8567fceb1a8902d4d75b17dd18149409440c4d4b90f" }, "downloads": -1, "filename": "powershift-1.3.12.tar.gz", "has_sig": false, "md5_digest": "2350a02041308bed132a42b881d0c142", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71168, "upload_time": "2017-01-08T05:22:11", "url": "https://files.pythonhosted.org/packages/23/66/bc318e8a81937813b1a6ec08cda3a381d6747de111760b8e875bcba4df26/powershift-1.3.12.tar.gz" } ], "1.3.13": [ { "comment_text": "", "digests": { "md5": "0f3f4496ad6f4413cc4a53f97a0c6131", "sha256": "0fdefc1992c5d8c5c195606c86f6962145746150cc995c34936d12bf863e2990" }, "downloads": -1, "filename": "powershift-1.3.13.tar.gz", "has_sig": false, "md5_digest": "0f3f4496ad6f4413cc4a53f97a0c6131", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71413, "upload_time": "2017-01-09T11:28:15", "url": "https://files.pythonhosted.org/packages/01/2b/31fec4adbaf79daa7df435f0c4c6cf8801739520d71b022a5298d4a68d5f/powershift-1.3.13.tar.gz" } ], "1.3.2": [ { "comment_text": "", "digests": { "md5": "c26aa1681db319ca5f5544df8b6c784f", "sha256": "d4901879d605705fd44aadc365f7e7b2ffdf3942651f1010441f2ceae3953cf4" }, "downloads": -1, "filename": "powershift-1.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "c26aa1681db319ca5f5544df8b6c784f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 75272, "upload_time": "2016-11-09T23:18:28", "url": "https://files.pythonhosted.org/packages/8f/83/fe97d1ea10ecb8ebc9c185f28a14e9641355e2dffd5d5ccccb0c66f3b46d/powershift-1.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf76e7e832c986781879d1b0e3947c09", "sha256": "2cad29ca78bd6f366c34a82dd277ab9107bcdb7a30ac1d9a7b7759cc83c32eee" }, "downloads": -1, "filename": "powershift-1.3.2.tar.gz", "has_sig": false, "md5_digest": "bf76e7e832c986781879d1b0e3947c09", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 68944, "upload_time": "2016-11-09T23:18:31", "url": "https://files.pythonhosted.org/packages/fa/d1/557ea7427f2985cf34cee032c2cf1dcd0826aadff8bce1856d206f8dca00/powershift-1.3.2.tar.gz" } ], "1.3.3": [ { "comment_text": "", "digests": { "md5": "bd9511abcf65cb18b95f0d452d4afe25", "sha256": "a24e4916563011ec6a144f92d0b3263d152501cb0ccb76bbba4b3a001622bf4f" }, "downloads": -1, "filename": "powershift-1.3.3-py3-none-any.whl", "has_sig": false, "md5_digest": "bd9511abcf65cb18b95f0d452d4afe25", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 77504, "upload_time": "2016-12-03T10:50:11", "url": "https://files.pythonhosted.org/packages/13/a7/6359de7d7b3eb60543e00221cebace44d6d67138644d1432b6c8c768d47d/powershift-1.3.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a76aa9b387ec95feba8c6834f77ac29f", "sha256": "3ad5f809c9dfd9c90f9b940e7f34d89f0a360d2ae7f069f591d6aaa4420afd59" }, "downloads": -1, "filename": "powershift-1.3.3.tar.gz", "has_sig": false, "md5_digest": "a76aa9b387ec95feba8c6834f77ac29f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 69585, "upload_time": "2016-12-03T10:50:14", "url": "https://files.pythonhosted.org/packages/41/52/8a14bde6f5d4988e0dab8bd38c0efcc7d263b19e86477c34efe78a967528/powershift-1.3.3.tar.gz" } ], "1.3.4": [ { "comment_text": "", "digests": { "md5": "9871394706e986582f6300cc514cec2b", "sha256": "e89ba3e5bd078d2b4ba17a16f1e8c6f0561254fe205a3016b0de66be6bc90702" }, "downloads": -1, "filename": "powershift-1.3.4-py3-none-any.whl", "has_sig": false, "md5_digest": "9871394706e986582f6300cc514cec2b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 80697, "upload_time": "2016-12-15T09:31:59", "url": "https://files.pythonhosted.org/packages/4a/67/0b8934d639cd334dd25dafa340b32c0bc02397052348a3e088417a3d6f85/powershift-1.3.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "53c27536e6474f99a4639a73bd6700bd", "sha256": "069a3139f8da810624dc638109eff88b1dba6764235fa7bb2619b6e9ee41f649" }, "downloads": -1, "filename": "powershift-1.3.4.tar.gz", "has_sig": false, "md5_digest": "53c27536e6474f99a4639a73bd6700bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71461, "upload_time": "2016-12-15T09:32:02", "url": "https://files.pythonhosted.org/packages/ed/3d/ccc41af4a66e4d83ecb5333524935299f4e6e791003160d4f9d359d6d6a4/powershift-1.3.4.tar.gz" } ], "1.3.5": [ { "comment_text": "", "digests": { "md5": "333bcb477ea19a944284ac7b4a9c6e32", "sha256": "f7290b50f7ace06ba72efbec02a79ba5204db02e07dca06993031cf8c10ff284" }, "downloads": -1, "filename": "powershift-1.3.5-py3-none-any.whl", "has_sig": false, "md5_digest": "333bcb477ea19a944284ac7b4a9c6e32", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 80747, "upload_time": "2016-12-16T00:40:08", "url": "https://files.pythonhosted.org/packages/63/7b/66a1961bb9bd3114e038aa4bac82fa173d2cfb9ceb67f3d7f4053db947f9/powershift-1.3.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9e557f4d7ad07d1dd2c23251256efdf5", "sha256": "1fea33a09bfc2f93885c7db3d9a3545f3c4fc627643f125fa4bea34e50763a87" }, "downloads": -1, "filename": "powershift-1.3.5.tar.gz", "has_sig": false, "md5_digest": "9e557f4d7ad07d1dd2c23251256efdf5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71507, "upload_time": "2016-12-16T00:40:12", "url": "https://files.pythonhosted.org/packages/01/b0/b5d1a5323d834a0c56b74d4156616f79dbdf7fc903267b99ca7c87a83375/powershift-1.3.5.tar.gz" } ], "1.3.6": [ { "comment_text": "", "digests": { "md5": "d0c7f05f624067478be528d3bd7bd463", "sha256": "15a34539c5ebc043b2e710072affd894845521b1716223b1dd2fe31b206dcbb6" }, "downloads": -1, "filename": "powershift-1.3.6-py3-none-any.whl", "has_sig": false, "md5_digest": "d0c7f05f624067478be528d3bd7bd463", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 81171, "upload_time": "2016-12-16T06:39:09", "url": "https://files.pythonhosted.org/packages/cf/29/3f75180bb17eb3c34f9bb656da710742f327cee097893618cdf6ea3abd58/powershift-1.3.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cdf354a3b15d92ae8d554def3e2c662a", "sha256": "28b696d0efc2a1d3a2e791740d09580331ae9471d5bfbc1e11ed71fab21ac74e" }, "downloads": -1, "filename": "powershift-1.3.6.tar.gz", "has_sig": false, "md5_digest": "cdf354a3b15d92ae8d554def3e2c662a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71727, "upload_time": "2016-12-16T06:39:12", "url": "https://files.pythonhosted.org/packages/c6/71/6f16ae00be40978dccfa75433ae0eafff99e4fc847650d137ca2117ebb81/powershift-1.3.6.tar.gz" } ], "1.3.7": [ { "comment_text": "", "digests": { "md5": "056b344dda052937bf2763fed2eab973", "sha256": "9d750ef1b5d2afaf6020325b41a937cab781763687fdad7ea9858af50638a180" }, "downloads": -1, "filename": "powershift-1.3.7-py3-none-any.whl", "has_sig": false, "md5_digest": "056b344dda052937bf2763fed2eab973", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 81575, "upload_time": "2016-12-19T02:32:28", "url": "https://files.pythonhosted.org/packages/27/b4/5eb40e61acbe34f52c2bce9c57acf6cfc794094bd236fea23d73551b5519/powershift-1.3.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "586045bb45cc7cf347a183abc7599f06", "sha256": "bf8eef177162d233c9dbc8331592247e9c3d21ef9794595b1e4ab47f111e59d2" }, "downloads": -1, "filename": "powershift-1.3.7.tar.gz", "has_sig": false, "md5_digest": "586045bb45cc7cf347a183abc7599f06", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 72092, "upload_time": "2016-12-19T02:32:31", "url": "https://files.pythonhosted.org/packages/11/89/20f6158e9a130d0e19fc2ca4b143efd0337a2d80edbeebd9df88b22d6471/powershift-1.3.7.tar.gz" } ], "1.3.8": [ { "comment_text": "", "digests": { "md5": "c6402bbe0aff0f2b4ec677b46b1d88a8", "sha256": "609d94c7ff684b950a747bea082beb4732ba782a4b3ace0989e2800dd2c8c1d8" }, "downloads": -1, "filename": "powershift-1.3.8.tar.gz", "has_sig": false, "md5_digest": "c6402bbe0aff0f2b4ec677b46b1d88a8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 70651, "upload_time": "2017-01-01T03:14:06", "url": "https://files.pythonhosted.org/packages/4f/62/181a92e8a37370213ee4a2d6fda0ba3f71b14065d8b7f99d101630972183/powershift-1.3.8.tar.gz" } ], "1.3.9": [ { "comment_text": "", "digests": { "md5": "09d94dc904b2397999327f5f184e035b", "sha256": "a9b523465a994bdf8965fd667bbdafa8df3264980b74e006afecc73f4416d763" }, "downloads": -1, "filename": "powershift-1.3.9.tar.gz", "has_sig": false, "md5_digest": "09d94dc904b2397999327f5f184e035b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71513, "upload_time": "2017-01-06T06:31:27", "url": "https://files.pythonhosted.org/packages/84/68/b517706f475929b67fe5e7036dd20b5f8114fda706bdbda18eacd21ec690/powershift-1.3.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "0f3f4496ad6f4413cc4a53f97a0c6131", "sha256": "0fdefc1992c5d8c5c195606c86f6962145746150cc995c34936d12bf863e2990" }, "downloads": -1, "filename": "powershift-1.3.13.tar.gz", "has_sig": false, "md5_digest": "0f3f4496ad6f4413cc4a53f97a0c6131", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 71413, "upload_time": "2017-01-09T11:28:15", "url": "https://files.pythonhosted.org/packages/01/2b/31fec4adbaf79daa7df435f0c4c6cf8801739520d71b022a5298d4a68d5f/powershift-1.3.13.tar.gz" } ] }