{ "info": { "author": "Ben Graham", "author_email": "ben.graham@salespreso.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5" ], "description": "Prospyr\n#######\n\nA Python client library for ProsperWorks.\n\n.. image:: https://api.travis-ci.org/salespreso/prospyr.svg?branch=master\n :target: https://travis-ci.org/salespreso/prospyr\n :alt: Prospyr builds.\n\n.. image:: https://img.shields.io/codecov/c/github/salespreso/prospyr.svg\n :target: https://codecov.io/github/salespreso/prospyr\n :alt: Prospyr on Codecov.\n\n.. image:: https://landscape.io/github/salespreso/prospyr/master/landscape.svg?style=flat\n :target: https://landscape.io/github/salespreso/prospyr/master\n :alt: Code Health\n\n.. image:: https://badge.fury.io/py/prospyr.svg\n :target: https://pypi.python.org/pypi/prospyr/\n :alt: Prospyr on Pypi.\n\nProspyr runs on Python 2.7 or Python 3.4+.\n\nInstallation\n============\n\n.. code-block:: sh\n\n pip install prospyr\n\nQuickstart\n==========\n\nIf you've used Django, Prospyr might feel strangely familiar.\n\n.. code-block:: python\n\n from prospyr import connect, Person, Company\n\n # see https://www.prosperworks.com/developer_api/token_generation to obtain\n # a token.\n cn = connect(email='user@domain.tld', token='1aefcc3...')\n\n # collections can be ordered and sliced.\n newest_person = Person.objects.order_by('-date_modified')[0]\n\n # new records can be created.\n art = Person(\n name='Art Vandelay',\n emails=[{'email': 'art@vandelayindustries.net', 'category': 'work'}]\n )\n art.create() # Art is local-only until .create() is called\n\n # related objects can be read and assigned\n art.company = Company.objects.all()[0]\n art.update()\n\n # and deleting works too.\n art.delete()\n\n\nResources\n=========\n\nThe following ProsperWorks resources are supported by Prospyr:\n\n- Account (read-only)\n- Activity (read\u2013only)\n- ActivityType\n- Company\n- CustomerSource (read\u2013only)\n- Identifier\n- Lead\n- LossReason (read\u2013only)\n- Opportunity\n- Person\n- Pipeline (read\u2013only)\n- PipelineStage (read\u2013only)\n- Task (read\u2013only)\n- User (read\u2013only)\n- Webhook (read-only)\n\nThe following resources are not supported, but will still appear when\nreferenced by the supported resources above. In this case, they come only with\nan ``id`` attribute.\n\n- Project\n\nNote you will receive errors trying to deal with the Lead resource if the Leads\nfeature is not enabled in your ProsperWorks account. You can change this at\nSettings / Customize ProsperWorks / Lead Management.\n\n\nUsage\n=====\n\nConnecting\n----------\n\nTo connect, you'll need an email and token per\n`token generation `_.\n\n.. code-block:: python\n\n from prospyr import connect\n\n cn = connect(email='...', token='...')\n\nAll reads are cached per\u2013connection for five minutes. You can pass a custom\ncache instance when connecting to ProsperWorks to change this behaviour.\n\n.. code-block:: python\n\n from prospyr import connect\n from prospyr.cache import NoOpCache, InMemoryCache\n\n # only cache the last request\n cn = connect(email='...', token='...', cache=InMemoryCache(size=1))\n\n # no caching\n cn = connect(email='...', token='...', cache=NoOpCache())\n\nYou can also substitute your own custom cache here to use e.g. Redis or\nmemcached.\n\nProspyr also supports multiple named connections. Provide a ``name='...'``\nargument when calling ``connect()`` and refer to the connection when\ninteracting with the API later, e.g. ``Person.objects.get(id=1, using='...')``.\n\nCreate\n------\n\nYou can create new records in ProsperWorks.\n\n.. code-block:: python\n\n from prospyr import Person\n\n steve = Person(\n name='Steve Cognito',\n emails=[{'category': 'work', 'email': 'steve@example.org'}]\n )\n\n # steve only exists locally at this stage\n steve.id\n >>> None\n\n # now he exists remotely too\n steve.create()\n >>> True\n steve.id\n >>> 1\n\nRead\n----\n\nThere are two ways to read a single record from ProsperWorks. A new instance\ncan be fetched using the resource's ``objects.get()`` method, or you can call\n``read()`` on an existing instance to have its attributes refreshed.\n\n.. code-block:: python\n\n from prospyr import Person\n\n # a new instance\n steve = Person.objects.get(id=1)\n steve.name\n >>> 'Steve Cognito'\n\n # update an existing instance\n steve = Person(id=1)\n steve.read()\n >>> True\n steve.name\n >>> 'Steve Cognito'\n\n # as a special case, People can be read by email as well as ID:\n steve = Person.objects.get(email='steve@example.org')\n\nUpdate\n------\n\nNote that \u201cupdate\u201d means to push an update to ProsperWorks using your local\ndata, rather than to refresh local data using ProsperWorks. In this example,\nSteve is fetched from ProsperWorks and given a new title. Hey, congrats on the\npromotion Steve.\n\n.. code-block:: python\n\n from prospyr import Person\n\n steve = Person.objects.get(id=1)\n steve.title = 'Chairman'\n steve.update()\n >>> True\n\nDelete\n------\n\nWhen Steve has reached the end of his useful lifespan, he can be deleted too.\n\n.. code-block:: python\n\n from prospyr import Person\n\n steve = Person.objects.get(id=1)\n steve.delete()\n >>> True\n\nOrdering\n--------\n\nResource collections can be ordered. Check the `ProsperWorks API documentation\n`_ to learn which fields can be\nordered. However, Prospyr does check that the fields you argue are correct.\n\n.. code-block:: python\n\n from prospyr import Person\n\n # oldest first\n rs = Person.objects.order_by('date_modified')\n\n # newest first (note the hyphen)\n rs = Person.objects.order_by('-date_modified')\n\n # At this stage, no requests have been made. Results are lazily evaluated\n # and paging is handled transparently.\n\n # The results can be indexed and sliced like a Python list. Doing so forces\n # evaluation. The below causes the first page of results to be fetched.\n rs[0]\n >>> \n\n # No request is required here, as the Bones was on the first page requested\n # above. The default page size is 200.\n rs[1]\n >>> \n\n # This result is on the second page, so another request is fired.\n rs[200]\n >>> \n\nOnce ``ResultSet`` instances have been evaluated they are cached for their\nlifetime. However, the ``filter()`` and ``order_by()`` methods return new\n``ResultSet`` instances which require fresh evaluation. While you are dealing\nwith a single ``ResultSet``, it is safe to iterate and slice it as many times\nas necessary.\n\n\nFiltering\n---------\n\nResource collections can be filtered. Check the `ProsperWorks API documentation\n`_ to learn which filters can be\nused. Prospyr does *not* currently validate your filter arguments, and note\nthat ProsperWorks does not either; if you make an invalid filter argument,\nresults will be returned as though you had not filtered at all.\n\nMultiple filters are logically ANDed together. A single call to ``filter()``\nwith many parameters is equivalent to many calls with single parameters.\n\n\n.. code-block:: python\n\n from prospyr import Company\n\n active = Company.objects.filter(minimum_interaction_count=10)\n active_in_china = active.filter(country='CN')\n\n # this is equivalent\n active_in_china = Company.objects.filter(\n minimum_interaction_count=10,\n country='CN'\n )\n\nAs with ordering, filtered results are evaluated lazily and then cached\nindefinitely. Re-ordering or re-filtering results in a new ``ResultSet`` which\nrequires fresh evaluation.\n\nProsperWorks' \u201cSecondary Resources\u201d, such as Pipeline Stages, cannot be\nfiltered or ordered. These resources use ``ListSet`` rather than ``ResultSet``\ninstances; these only support the ``all()`` method:\n\n.. code-block:: python\n\n from prospyr import PipelineStage\n\n PipelineStage.objects.all()\n >>> \n\n\nAccount\n-------\n\nThe ``Account`` resource represents the ProsperWorks account which you are\ncurrently working with. The name of the account can be read like so:\n\n.. code-block:: python\n\n from prospyr import Account\n\n account = Account.objects.get()\n account.name\n >>> 'So-and-so Company'\n\n\nCollection Error Handling\n-------------------------\n\nProspyr validates data delivered from ProsperWorks when building representative\nPython objects for local use. Because there are no documented details on the\nvalidation that ProsperWorks itself uses, Prospyr's validation rules are\nsometimes incorrect or more strict than necessary. The author suspects that\nsometimes ProsperWorks also delivers data that is simply invalid.\n\nThis can cause exceptions to be raised when iterating over result sets (e.g.\n``for person in Person.objects.all()...``) which prevent the remainder of the\ncollection from being accessed.\n\nTo make your life easier while such a mismatch is corrected in Prospyr, you can\nchoose to have these validation errors collected instead of being raised:\n\n.. code-block:: python\n\n from prospyr import Person\n\n errs = []\n for person in Person.objects.store_invalid(errs).all():\n # ...\n\n if errs:\n # handle errors\n\nThe argument to ``store_invalid`` must, like a list, have a working ``append``\nmethod. It will be filled with ``ValidationError`` instances which each have\n``errors``, ``raw_data`` and ``resource_cls`` attributes.\n\nIf your use\u2013case allows you to correct the problem in ``raw_data``, you can\nrecover like so:\n\n.. code-block:: python\n\n for err in errs:\n good_data = make_corrections(err.raw_data)\n instance = err.resource_cls.from_api_data(good_data)\n\n\nTests\n=====\n\n.. code-block:: sh\n\n pip install -r dev-requirements\n\n # test using the current python interpreter\n make test\n\n # test with all supported interpreters\n tox\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/salespreso/prospyr/", "keywords": "ProsperWorks", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "prospyr", "package_url": "https://pypi.org/project/prospyr/", "platform": "", "project_url": "https://pypi.org/project/prospyr/", "project_urls": { "Homepage": "https://github.com/salespreso/prospyr/" }, "release_url": "https://pypi.org/project/prospyr/0.8.0/", "requires_dist": [ "arrow", "marshmallow", "requests", "six", "urlobject", "coverage; extra == 'dev'", "flake8; extra == 'dev'", "ipdb; extra == 'dev'", "isort; extra == 'dev'", "mock; extra == 'dev'", "nose; extra == 'dev'", "rednose; extra == 'dev'", "twine; extra == 'dev'", "tox; extra == 'dev'" ], "requires_python": "", "summary": "ProsperWorks client library", "version": "0.8.0" }, "last_serial": 3066098, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "4f7eac5225abca02cf185d4340da736c", "sha256": "42cc353fa25adcb229a7eedd90135f84d12f49aa211233cee6322fc979834e68" }, "downloads": -1, "filename": "prospyr-0.1.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "4f7eac5225abca02cf185d4340da736c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13926, "upload_time": "2016-04-05T02:02:54", "url": "https://files.pythonhosted.org/packages/00/75/95d41f6c331e268a2a639d751310d35fde0a4c841a7c2cf21884e9f29269/prospyr-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d5cb49f4e3f20f7ecaa110d3312933fc", "sha256": "2bc4f1bf2045487abd7751e5d25db2bcfc68166f24d636fabea44f8b112b2bff" }, "downloads": -1, "filename": "prospyr-0.1.0-py3-none-any.whl", "has_sig": true, "md5_digest": "d5cb49f4e3f20f7ecaa110d3312933fc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13922, "upload_time": "2016-04-05T01:46:48", "url": "https://files.pythonhosted.org/packages/ac/ed/0c7223cec1f47457d281af52bb1e4a17adaad895e5c1df64c225c74bc844/prospyr-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40b68e9658dc82b27aee12885e8e1947", "sha256": "b8c1756ebbf5158e4c3c021a0196da6c0131109bca95c1285eada66224e335bc" }, "downloads": -1, "filename": "prospyr-0.1.0.tar.gz", "has_sig": true, "md5_digest": "40b68e9658dc82b27aee12885e8e1947", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9767, "upload_time": "2016-04-05T01:47:06", "url": "https://files.pythonhosted.org/packages/00/4c/cb51055e220b1f70718359e7a3f274227c792eb88d3d991c9b3853600213/prospyr-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "c2130262f23b9abd65b2fc2a59c11f6f", "sha256": "10646093eceb840ca182e664cffcd6a522ae81ab185b53103c098d4861c6f817" }, "downloads": -1, "filename": "prospyr-0.1.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "c2130262f23b9abd65b2fc2a59c11f6f", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 13928, "upload_time": "2016-04-05T02:05:01", "url": "https://files.pythonhosted.org/packages/61/59/a5969deba99e8bae88dfb9b4018cf3e42a16d66e079d75155b205a813ce0/prospyr-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9edfe39cddc85713d5318aa948c266e5", "sha256": "63a311a308112c0db6a819419408ffcd53630fc0677c0e2db9d5d57261d1d119" }, "downloads": -1, "filename": "prospyr-0.1.1.tar.gz", "has_sig": true, "md5_digest": "9edfe39cddc85713d5318aa948c266e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9781, "upload_time": "2016-04-05T02:05:07", "url": "https://files.pythonhosted.org/packages/d6/0a/6f319e36dc471595bdddf8ad7e38348b2bef09d89c73f96ff26a1968516e/prospyr-0.1.1.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2158ec3181a2946713c38d6c820bab0a", "sha256": "e078c57abbe0c47a29b2d3c805f0a3759872ea25bccdfbf301faf95ca06dfe4a" }, "downloads": -1, "filename": "prospyr-0.2.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "2158ec3181a2946713c38d6c820bab0a", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15777, "upload_time": "2016-04-06T23:53:04", "url": "https://files.pythonhosted.org/packages/39/bc/ca20c128c71c96721848b6b30e4647d2999b4dd0a1d7a8002567e5aa2fe1/prospyr-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e69d1c97a5821a6465d275e534fcdf34", "sha256": "e2500b4d5a1d83e6bb39eecfa2ef17221d2c45939857bc0491d8118b41668075" }, "downloads": -1, "filename": "prospyr-0.2.0.tar.gz", "has_sig": true, "md5_digest": "e69d1c97a5821a6465d275e534fcdf34", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11416, "upload_time": "2016-04-06T23:53:21", "url": "https://files.pythonhosted.org/packages/bd/9f/97f3b2a9fe03402080777d3360222f7c90300e284243ece712fe4afa02e6/prospyr-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "53996711a304da1dd1ff4d4ceb934cea", "sha256": "d54ebe31599932f867d6505cda8ba4feba8f13a1bfa844c16302ce7e844bc80a" }, "downloads": -1, "filename": "prospyr-0.2.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "53996711a304da1dd1ff4d4ceb934cea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 15907, "upload_time": "2016-04-07T13:20:59", "url": "https://files.pythonhosted.org/packages/57/3c/1950af1a76f9a7cc07c67bb352d1c721349bda67dca364619b545032257e/prospyr-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0689797a949953526142c367e8761ba8", "sha256": "4a8a1f8d0c7d8fe0ed49d35efea7aef14e45735e14ec66aeb20d1e392246f32d" }, "downloads": -1, "filename": "prospyr-0.2.1.tar.gz", "has_sig": true, "md5_digest": "0689797a949953526142c367e8761ba8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11525, "upload_time": "2016-04-07T13:21:31", "url": "https://files.pythonhosted.org/packages/1d/68/c36b1ddea622b523e0ea35a792c7e87c0aabc39a79aef8394ced898ee278/prospyr-0.2.1.tar.gz" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "28029a8c06c393c85f2ceaa78d108949", "sha256": "5c3a25b99b3cca9a5ae20a1bb3e077db1453e07a4f0ab0e484be1239a8704562" }, "downloads": -1, "filename": "prospyr-0.3.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "28029a8c06c393c85f2ceaa78d108949", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21265, "upload_time": "2016-04-12T04:20:21", "url": "https://files.pythonhosted.org/packages/73/6e/b6bec8de79d7dbbca243dc1661b6d426b3f79a9b41c75335d774ec3fa584/prospyr-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "290c30f862847517f74251f30fb383b3", "sha256": "52da9877feb15a758cb8fcb985c0580f39baf9af0faeef5ea747eecda76b66ad" }, "downloads": -1, "filename": "prospyr-0.3.0.tar.gz", "has_sig": true, "md5_digest": "290c30f862847517f74251f30fb383b3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15283, "upload_time": "2016-04-12T04:20:28", "url": "https://files.pythonhosted.org/packages/e4/75/d0dca04fad21c4cdc49dc231c26b91ffa943b89e262ac99505cd020ed193/prospyr-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "20a00e96be2625fa2fb6fb4959716e00", "sha256": "4050cdbb08cfa4aed53d6898a49caac1a0d4e1d5d6bc07b5fa32d9c1cd5e9265" }, "downloads": -1, "filename": "prospyr-0.3.1-py3.4.egg", "has_sig": true, "md5_digest": "20a00e96be2625fa2fb6fb4959716e00", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 42802, "upload_time": "2016-04-14T01:38:35", "url": "https://files.pythonhosted.org/packages/7c/90/26157b8074d7a070d6b107cc87c73a5cfac6ddd6c76a458b7e82c348eb60/prospyr-0.3.1-py3.4.egg" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "360e111ef4efbd3ae32c060ff1ba4ff7", "sha256": "2d652598cc457e40b488fea39e597421e5a963026d522f3917fa759abf9ba473" }, "downloads": -1, "filename": "prospyr-0.4.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "360e111ef4efbd3ae32c060ff1ba4ff7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21857, "upload_time": "2016-04-14T01:38:22", "url": "https://files.pythonhosted.org/packages/df/83/259c8242dac194f44c979de078e6676fb61a25ac79d0e875377901cee0ed/prospyr-0.4.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ebaed4bbe0906533945a3666c136c5e4", "sha256": "93cd911b6a003bdcf95686e1fcaed9d296feddbc08c665357ff63fe62fad6bde" }, "downloads": -1, "filename": "prospyr-0.4.0-py3.4.egg", "has_sig": true, "md5_digest": "ebaed4bbe0906533945a3666c136c5e4", "packagetype": "bdist_egg", "python_version": "3.4", "requires_python": null, "size": 44377, "upload_time": "2016-04-14T01:38:41", "url": "https://files.pythonhosted.org/packages/99/09/0852decb1977e0891a488f430af9df75bf66481f673a013705c5e04043da/prospyr-0.4.0-py3.4.egg" }, { "comment_text": "", "digests": { "md5": "349ebef066597b8d6cc4b491da168609", "sha256": "7254c880882c35c9ace58513f76488387b133ac14618eaaaacb45b2e76e6318c" }, "downloads": -1, "filename": "prospyr-0.4.0.tar.gz", "has_sig": true, "md5_digest": "349ebef066597b8d6cc4b491da168609", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15797, "upload_time": "2016-04-14T01:38:46", "url": "https://files.pythonhosted.org/packages/0f/a2/96739a0a52cc905daa0511012891e0382c519eb3639b1c8077378272e926/prospyr-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "8026c01e66d920ad5836b74c7da506b8", "sha256": "dc5b4e2756edb870212aa0f9c4d4c49f2424f1a6856c974660f16ae676cb3e01" }, "downloads": -1, "filename": "prospyr-0.4.1-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "8026c01e66d920ad5836b74c7da506b8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 21865, "upload_time": "2016-04-20T04:27:19", "url": "https://files.pythonhosted.org/packages/eb/b9/a00038641102a7040c0dfb0c51a7d94940aa9498386321e5f65e10886145/prospyr-0.4.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ef9115063b6df870723cfe9a662bc0c5", "sha256": "9782f800d8e7e6fb7b1161101f2a9af3c1879e318e151154539a082f04422f07" }, "downloads": -1, "filename": "prospyr-0.4.1.tar.gz", "has_sig": true, "md5_digest": "ef9115063b6df870723cfe9a662bc0c5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15803, "upload_time": "2016-04-20T04:27:40", "url": "https://files.pythonhosted.org/packages/41/b5/682442834f61ee97097b6f3457e0b9a5a542c69ecc79bc3f306a43114aa7/prospyr-0.4.1.tar.gz" } ], "0.4.2": [ { "comment_text": "", "digests": { "md5": "fe5b3eced5a90bcf6fce2c1c1643a8da", "sha256": "7d539837c22f0a2a7dca491893d512925ad3f1b2935ce9ea6649344370d57cca" }, "downloads": -1, "filename": "prospyr-0.4.2-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "fe5b3eced5a90bcf6fce2c1c1643a8da", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 22247, "upload_time": "2016-04-20T06:26:37", "url": "https://files.pythonhosted.org/packages/c8/21/c7d4e3a6cd2d371e2dbdee0283e01f88dd329a88fe7102b629bc26514215/prospyr-0.4.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2f2f54708e4b5199215cdb4f17e6600e", "sha256": "03b392e48bbc1d918c8c7f6ea859e1c2de763f504fca0c845d4be4c787b1c787" }, "downloads": -1, "filename": "prospyr-0.4.2.tar.gz", "has_sig": true, "md5_digest": "2f2f54708e4b5199215cdb4f17e6600e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 16130, "upload_time": "2016-04-20T06:26:45", "url": "https://files.pythonhosted.org/packages/94/f4/4e0501632a2f3f07921034f770551b0c210ffe50a04e0c39a88ef006c45e/prospyr-0.4.2.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "5b9efe52bf665ec4056349ce57653fae", "sha256": "8a0990e984f38c5cf3858c395ce0e46f6512f4122b5a3bbc36520d22a4123a24" }, "downloads": -1, "filename": "prospyr-0.5.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "5b9efe52bf665ec4056349ce57653fae", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 24768, "upload_time": "2016-06-30T02:12:49", "url": "https://files.pythonhosted.org/packages/78/3c/a11aaeca7e1cc392af744285bafa134a8848e12a8d28ffdcb0ff96c3d217/prospyr-0.5.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bd9d4dcd609436f69c0655484d2237fc", "sha256": "f4cbb6651979e3977fcf1ef1bd2c8d251284617674fd715f88c71541bce053c8" }, "downloads": -1, "filename": "prospyr-0.5.0.tar.gz", "has_sig": true, "md5_digest": "bd9d4dcd609436f69c0655484d2237fc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17715, "upload_time": "2016-06-30T02:12:55", "url": "https://files.pythonhosted.org/packages/05/98/33937abab81206ae0bee355afa9c946d82b553f75b20ace0ffcc598b13fc/prospyr-0.5.0.tar.gz" } ], "0.6.0": [ { "comment_text": "", "digests": { "md5": "e4fcee87394c81457e46615cce241fca", "sha256": "05b0fd70cd1e833c68532f0d6c3285bb535ce16c7a5268833884d198d3779147" }, "downloads": -1, "filename": "prospyr-0.6.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "e4fcee87394c81457e46615cce241fca", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25041, "upload_time": "2016-12-21T22:09:24", "url": "https://files.pythonhosted.org/packages/6d/5c/4ee5858eea31839e3b477b5f97f52afff454230a200464dbfb48cd2e125b/prospyr-0.6.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5660fab86e2bb927ba60e0736573f8ca", "sha256": "d6fb893561e3b4a39b5cd00d7cf9eb22091f1bba7ef2448cc028d9429af6f8b7" }, "downloads": -1, "filename": "prospyr-0.6.0.tar.gz", "has_sig": true, "md5_digest": "5660fab86e2bb927ba60e0736573f8ca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 17948, "upload_time": "2016-12-21T22:09:27", "url": "https://files.pythonhosted.org/packages/51/84/16507e1b9c99f24f8f8627a79adde91b1a06dd65e84d2a1f3aaf498c7022/prospyr-0.6.0.tar.gz" } ], "0.7.0": [ { "comment_text": "", "digests": { "md5": "2a4119ba6d9327e85437f22594e8c5db", "sha256": "f0f1cf04f1f81ac519db1eb44ceb8755618add7ee797513f02f0fa820fecf474" }, "downloads": -1, "filename": "prospyr-0.7.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "2a4119ba6d9327e85437f22594e8c5db", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25659, "upload_time": "2017-01-12T09:52:00", "url": "https://files.pythonhosted.org/packages/c8/87/2c8ef192839078aee379eb58740592f588f93a835f6bc6c820245854c42a/prospyr-0.7.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6010e4c8b8bdf9f4f1e54b0e6f2b185", "sha256": "7470c009f746b2a11df76c6b77a253b5ef2e062f4b4edda95e30f2f7b1a5aa17" }, "downloads": -1, "filename": "prospyr-0.7.0.tar.gz", "has_sig": true, "md5_digest": "a6010e4c8b8bdf9f4f1e54b0e6f2b185", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18374, "upload_time": "2017-01-12T09:52:02", "url": "https://files.pythonhosted.org/packages/96/f4/02a10da947d987c6e58bdcd9a1ea0023ac9d408706f030c9203bea6cf98f/prospyr-0.7.0.tar.gz" } ], "0.8.0": [ { "comment_text": "", "digests": { "md5": "dad36a71a497da78fa1554938e4cea82", "sha256": "20fcc0c3de943cbce13b2addcef3f0dd7b6a8479e8f838a11129ebb5ca25f376" }, "downloads": -1, "filename": "prospyr-0.8.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "dad36a71a497da78fa1554938e4cea82", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25794, "upload_time": "2017-08-02T04:00:05", "url": "https://files.pythonhosted.org/packages/16/84/d60ec84791d4ce4c390d3e4ecae799cdbee9fd0d1dbc2303c6378bc99e49/prospyr-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "831aa1d88f26bbb0f961ccf6d6c3a9bf", "sha256": "4ca84b8de32ecf4fe0887dbadf4442acb9bb5f3c824b0aa6c93bfb45aadd2227" }, "downloads": -1, "filename": "prospyr-0.8.0.tar.gz", "has_sig": true, "md5_digest": "831aa1d88f26bbb0f961ccf6d6c3a9bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18564, "upload_time": "2017-08-02T04:00:08", "url": "https://files.pythonhosted.org/packages/53/f7/0b189cdde6e00951d2977c1977dae92d0c9d7262fb1da0bba8065ce240fb/prospyr-0.8.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "dad36a71a497da78fa1554938e4cea82", "sha256": "20fcc0c3de943cbce13b2addcef3f0dd7b6a8479e8f838a11129ebb5ca25f376" }, "downloads": -1, "filename": "prospyr-0.8.0-py2.py3-none-any.whl", "has_sig": true, "md5_digest": "dad36a71a497da78fa1554938e4cea82", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 25794, "upload_time": "2017-08-02T04:00:05", "url": "https://files.pythonhosted.org/packages/16/84/d60ec84791d4ce4c390d3e4ecae799cdbee9fd0d1dbc2303c6378bc99e49/prospyr-0.8.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "831aa1d88f26bbb0f961ccf6d6c3a9bf", "sha256": "4ca84b8de32ecf4fe0887dbadf4442acb9bb5f3c824b0aa6c93bfb45aadd2227" }, "downloads": -1, "filename": "prospyr-0.8.0.tar.gz", "has_sig": true, "md5_digest": "831aa1d88f26bbb0f961ccf6d6c3a9bf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 18564, "upload_time": "2017-08-02T04:00:08", "url": "https://files.pythonhosted.org/packages/53/f7/0b189cdde6e00951d2977c1977dae92d0c9d7262fb1da0bba8065ce240fb/prospyr-0.8.0.tar.gz" } ] }