{ "info": { "author": "Andrea Censi", "author_email": "censi@mit.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)", "Topic :: Software Development :: Documentation", "Topic :: Software Development :: Quality Assurance", "Topic :: Software Development :: Testing" ], "description": ".. image:: https://circleci.com/gh/AndreaCensi/contracts.svg?style=svg\n :target: https://circleci.com/gh/AndreaCensi/contracts\n\nPyContracts is a Python package that allows to declare constraints on function parameters and\nreturn values. It supports a basic type system, variables binding, arithmetic constraints, and\nhas several specialized contracts (notably for Numpy arrays). \n\n\nAs a quick intro, please see `this presentation about PyContracts`_.\n\n.. _`this presentation about PyContracts`: http://censi.mit.edu/pub/research/201410-pycontracts/201410-pycontracts.pdf \n\n.. image:: http://censi.mit.edu/pub/research/201410-pycontracts/201410-pycontracts.border.png\n :height: 100px\n :target: http://censi.mit.edu/pub/research/201410-pycontracts/201410-pycontracts.pdf \n :alt: A presentation about PyContracts\n\n\n\n.. container:: brief_summary\n \n A brief summary follows. See the full documentation at: \n\n\n**Why**: The purpose of PyContracts is **not** to turn Python into a statically-typed language\n(albeit you can be as strict as you wish), but, rather, to avoid the time-consuming and\nobfuscating checking of various preconditions. In fact, more than the type constraints, I found\nuseful the ability to impose value and size constraints. For example, \"I need a list of at least\n3 positive numbers\" can be expressed as ``list[>=3](number, >0))``. If you find that\nPyContracts is overkill for you, you might want to try a simpler alternative, such as\ntypecheck_. If you find that PyContracts is not *enough* for you, you probably want to be\nusing Haskell_ instead of Python.\n\n**Specifying contracts**: Contracts can be specified in three ways:\n\n1. **Using the ``@contract`` decorator**: ::\n \n @contract(a='int,>0', b='list[N],N>0', returns='list[N]')\n def my_function(a, b):\n ...\n\n2. **Using annotations** (for Python 3): :: \n \n @contract\n def my_function(a : 'int,>0', b : 'list[N],N>0') -> 'list[N]': \n # Requires b to be a nonempty list, and the return \n # value to have the same length.\n ...\n \n3. **Using docstrings**, with the ``:type:`` and ``:rtype:`` tags: ::\n \n @contract\n def my_function(a, b): \n \"\"\" Function description.\n :type a: int,>0\n :type b: list[N],N>0\n :rtype: list[N]\n \"\"\"\n ...\n \n..\n In any case, PyContracts will include the spec in the ``__doc__`` attribute.\n\n**Deployment**: In production, all checks can be disabled using the function ``contracts.disable_all()``, so the performance hit is 0.\n\n**Extensions:** You can extend PyContracts with new contracts types: ::\n\n new_contract('valid_name', lambda s: isinstance(s, str) and len(s)>0)\n @contract(names='dict(int: (valid_name, int))')\n def process_accounting(records):\n ...\n\nAny Python type is a contract: ::\n\n @contract(a=int, # simple contract\n b='int,>0' # more complicated\n )\n def f(a, b):\n ...\n\n**Enforcing interfaces**: ``ContractsMeta`` is a metaclass,\nlike ABCMeta, which propagates contracts to the subclasses: ::\n\n from contracts import contract, ContractsMeta, with_metaclass\n \n class Base(with_metaclass(ContractsMeta, object)):\n\n @abstractmethod\n @contract(probability='float,>=0,<=1')\n def sample(self, probability):\n pass\n\n class Derived(Base):\n # The contract above is automatically enforced, \n # without this class having to know about PyContracts at all!\n def sample(self, probability):\n ....\n\n**Numpy**: There is special support for Numpy: ::\n\n @contract(image='array[HxWx3](uint8),H>10,W>10')\n def recolor(image):\n ...\n\n**Status:** The syntax is stable and it won't be changed. PyContracts is very well tested on Python 2.x. \n\n**Status on Python 3.x:** We reached feature parity! Everything works on Python 3 now.\n\n**Contributors**:\n\n- `Chris Beaumont`_ (Harvard-Smithsonian Center for Astrophysics): ``$var`` syntax; kwargs/args for extensions.\n- `Brett Graham`_ (Rowland Institute at Harvard University): ``attr(name:type)`` syntax for checking types of attributes.\n- `William Furr`_: bug reports and performance improvements\n- `Karol Kuczmarski`_ (Google Zurich): implementation of \"string\" and \"unicode\" contracts\n- `Maarten Derickx`_ (Leiden U.): documentation fixes\n- `Calen Pennington`_ (EdX): disabling checks inside check() function.\n- `Adam Palay`_ (EdX): implementation of environment variable enabling/disabling override.\n- `Ryan Heimbuch`_: bug reports \n- Bernhard Biskup: bug reports\n- `asharp`_: bug fixes\n- `Dennis Kempin`_ (Google mothership): Sphinx-style constraints specs\n- `Andy Hayden`_: Python 3 support, more efficient Numpy checks\n- `Jonathan Sharpe`_: contracts for file-like objects, not operator\n\n(Please let me know if I forgot anybody.)\n\n.. _`Jonathan Sharpe`: http://jonathansharpe.me.uk/\n\n.. _`Chris Beaumont`: http://chrisbeaumont.org/\n.. _`asharp`: https://github.com/asharp\n.. _`Maarten Derickx`: http://mderickx.nl/\n.. _`Ryan Heimbuch`: https://github.com/ryanheimbuch-wf\n.. _`Calen Pennington`: https://github.com/cpennington\n.. _`Adam Palay`: https://github.com/adampalay\n.. _`William Furr`: http://www.ccs.neu.edu/home/furrwf/\n.. _`Karol Kuczmarski`: http://xion.org.pl/\n.. _`Brett Graham`: https://github.com/braingram\n.. _`Dennis Kempin`: https://github.com/denniskempin\n.. _`Andy Hayden`: http://careers.stackoverflow.com/hayd\n\n.. _typecheck: http://oakwinter.com/code/typecheck/\n.. _Haskell: http://www.haskell.org/", "description_content_type": "", "docs_url": null, "download_url": "http://github.com/AndreaCensi/contracts/tarball/1.8.12", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://andreacensi.github.com/contracts/", "keywords": "type checking,value checking,contracts", "license": "LGPL", "maintainer": "", "maintainer_email": "", "name": "PyContracts", "package_url": "https://pypi.org/project/PyContracts/", "platform": "", "project_url": "https://pypi.org/project/PyContracts/", "project_urls": { "Download": "http://github.com/AndreaCensi/contracts/tarball/1.8.12", "Homepage": "http://andreacensi.github.com/contracts/" }, "release_url": "https://pypi.org/project/PyContracts/1.8.12/", "requires_dist": null, "requires_python": "", "summary": "PyContracts is a Python package that allows to declare constraints on function parameters and return values. Contracts can be specified using Python3 annotations, in a decorator, or inside a docstring :type: and :rtype: tags. PyContracts supports a basic type system, variables binding, arithmetic constraints, and has several specialized contracts (notably for Numpy arrays), as well as an extension API.", "version": "1.8.12" }, "last_serial": 4783558, "releases": { "1.2.0": [ { "comment_text": "", "digests": { "md5": "99a55d3fad3c72617715121ceae6967f", "sha256": "9eaf3b31a452e18f36250bd74087b397f80d849ca0988eaf261d4c532a13634f" }, "downloads": -1, "filename": "PyContracts-1.2.0.tar.gz", "has_sig": false, "md5_digest": "99a55d3fad3c72617715121ceae6967f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 42567, "upload_time": "2011-10-13T00:40:05", "url": "https://files.pythonhosted.org/packages/d7/f2/8c19b3f1eafb7e8ac60b08e5684ca1cbb15cfe59a87170e1e44129594da7/PyContracts-1.2.0.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "1755e2df787cf90e077753114080de46", "sha256": "be92757385a5ac8b0ae14df321be9c56ef6490f7541cc68bd40ae388bd011db0" }, "downloads": -1, "filename": "PyContracts-1.4.0.tar.gz", "has_sig": false, "md5_digest": "1755e2df787cf90e077753114080de46", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 41963, "upload_time": "2012-07-15T08:08:39", "url": "https://files.pythonhosted.org/packages/1f/f2/eceb914fe71ef253ee1d21ee7e2558f6e92f0e89a0f6185ad6215961b5a7/PyContracts-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "cf1ea64c42e2393d23f1715918ea90b6", "sha256": "8ff8278dfb214e4861ab454f87104430acaaa1341092368254595ebb5250cd04" }, "downloads": -1, "filename": "PyContracts-1.5.0.tar.gz", "has_sig": false, "md5_digest": "cf1ea64c42e2393d23f1715918ea90b6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 44456, "upload_time": "2013-02-08T02:51:35", "url": "https://files.pythonhosted.org/packages/85/3f/a074c09fad15365958edb752dea69b30cb5c9aead33993354c8649af7bd1/PyContracts-1.5.0.tar.gz" } ], "1.5.1": [ { "comment_text": "", "digests": { "md5": "36845c5b61b498a3c574c78a7e3b2c2c", "sha256": "22858100fbd9e11e9b6bded66bf154d64ce4bf68f8991dde969db0467907a406" }, "downloads": -1, "filename": "PyContracts-1.5.1.tar.gz", "has_sig": false, "md5_digest": "36845c5b61b498a3c574c78a7e3b2c2c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 43115, "upload_time": "2013-03-18T18:38:46", "url": "https://files.pythonhosted.org/packages/93/1e/268de53e3d58aaf3578d782be1178896d65d0a9b1e3769ce848ce47a357a/PyContracts-1.5.1.tar.gz" } ], "1.6.0": [ { "comment_text": "", "digests": { "md5": "3f65f67de31a4732444ecd96f54d5caa", "sha256": "1afc5518e3387eae524a083d82176b44c2d261fae86165f005e0d5035ec563dc" }, "downloads": -1, "filename": "PyContracts-1.6.0.tar.gz", "has_sig": false, "md5_digest": "3f65f67de31a4732444ecd96f54d5caa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 49924, "upload_time": "2013-09-10T19:56:10", "url": "https://files.pythonhosted.org/packages/62/85/226670adaf9a32dac3dc1335de1c792b417db8d9b339da5338ed089fafba/PyContracts-1.6.0.tar.gz" } ], "1.6.2": [ { "comment_text": "", "digests": { "md5": "7e633c047aa4ae324e5331a1cac9a470", "sha256": "883ce5c1b4faf4debd0dab45b4a5ad90febc40c955af2138ef85b246d69e1103" }, "downloads": -1, "filename": "PyContracts-1.6.2.tar.gz", "has_sig": false, "md5_digest": "7e633c047aa4ae324e5331a1cac9a470", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 50553, "upload_time": "2014-07-13T10:17:21", "url": "https://files.pythonhosted.org/packages/bd/54/001602086e154e66114138c5682a2c0f2224e56090be822417f7e64b8bb1/PyContracts-1.6.2.tar.gz" } ], "1.6.3": [ { "comment_text": "", "digests": { "md5": "14f2ce18a7d823977ed0a2dda91d1b63", "sha256": "da1a8a195b23812aabd3e8cb4833a202aba920d465cb27ac12847cbd3db3b8ea" }, "downloads": -1, "filename": "PyContracts-1.6.3.tar.gz", "has_sig": false, "md5_digest": "14f2ce18a7d823977ed0a2dda91d1b63", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 51778, "upload_time": "2014-08-14T00:02:42", "url": "https://files.pythonhosted.org/packages/54/3e/532eadd1ef333627da1c65176e1fda94973b3eb9a02af45792c1594862dd/PyContracts-1.6.3.tar.gz" } ], "1.6.4": [ { "comment_text": "", "digests": { "md5": "bb9d88b02d93ad714eb76adb8d957ee8", "sha256": "bea9bf9cacf9aeb8f3834d6adadfddd3a25cab55ca36e817098c05478dd09be2" }, "downloads": -1, "filename": "PyContracts-1.6.4.tar.gz", "has_sig": false, "md5_digest": "bb9d88b02d93ad714eb76adb8d957ee8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54853, "upload_time": "2014-08-20T21:50:28", "url": "https://files.pythonhosted.org/packages/e7/c8/e575213ea8285bff946947b281476db5b57d8de497adabf32b765e31d6f6/PyContracts-1.6.4.tar.gz" } ], "1.6.5": [ { "comment_text": "", "digests": { "md5": "21eff47c358ce0dc01bcb692b37006e5", "sha256": "89524d452169340b70b6523f9fa44e92f38da0862e12c34d256134ec4f653cf3" }, "downloads": -1, "filename": "PyContracts-1.6.5.tar.gz", "has_sig": false, "md5_digest": "21eff47c358ce0dc01bcb692b37006e5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54932, "upload_time": "2014-09-11T21:59:55", "url": "https://files.pythonhosted.org/packages/fb/82/3c326006cc12bff7d15e6aac1aed655e27183c7a8bd0d0d0e947423a4ab0/PyContracts-1.6.5.tar.gz" } ], "1.6.6": [ { "comment_text": "", "digests": { "md5": "29888592caf65430c6ad657aba09b568", "sha256": "215786f1f69b49ca7cb325610f8a2c5e098bf72b630ee17ff502166c01507b61" }, "downloads": -1, "filename": "PyContracts-1.6.6.tar.gz", "has_sig": false, "md5_digest": "29888592caf65430c6ad657aba09b568", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 54711, "upload_time": "2014-10-22T20:36:24", "url": "https://files.pythonhosted.org/packages/7b/81/37eae7d033abc93721e8f4d5274bc38c25888cd2553a453ad02b42534a44/PyContracts-1.6.6.tar.gz" } ], "1.7.0": [ { "comment_text": "", "digests": { "md5": "8596a943e43ed7e82e81a872e4c1b9c7", "sha256": "d54770ac3d49d852a520ac3a801a1918ce7dd6bd24274fdef95c821f07ab7cd1" }, "downloads": -1, "filename": "PyContracts-1.7.0.tar.gz", "has_sig": false, "md5_digest": "8596a943e43ed7e82e81a872e4c1b9c7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57454, "upload_time": "2014-11-21T00:42:26", "url": "https://files.pythonhosted.org/packages/08/37/7ae29493330bd16049dac60c6df3cb73bd216edb1c8157a8a4600ba1f864/PyContracts-1.7.0.tar.gz" } ], "1.7.1": [ { "comment_text": "", "digests": { "md5": "dd79a9db6dabb99088c7382450d59f25", "sha256": "0db800060e7ba401d6b2d029981224163791ebd9d6c916ed25e3569a81ed7fcb" }, "downloads": -1, "filename": "PyContracts-1.7.1.tar.gz", "has_sig": false, "md5_digest": "dd79a9db6dabb99088c7382450d59f25", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59081, "upload_time": "2014-11-30T13:23:33", "url": "https://files.pythonhosted.org/packages/73/fb/7f9c4a733e07c8d2cf93ac3327e2c29fa7e977a987492274ef9879a197d9/PyContracts-1.7.1.tar.gz" } ], "1.7.10": [ { "comment_text": "", "digests": { "md5": "c559b739697b5e786e6db4d7fb32bf3a", "sha256": "ad7286d78e3bbdddb94376411fdcb6f5ab08d95ec89f1ec77fdc43f19cb1c390" }, "downloads": -1, "filename": "PyContracts-1.7.10.tar.gz", "has_sig": false, "md5_digest": "c559b739697b5e786e6db4d7fb32bf3a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89387, "upload_time": "2016-11-05T14:18:47", "url": "https://files.pythonhosted.org/packages/bd/a4/ca443fe550020f366eefdbb1c9a914e58c3a3e5a3455d0954b2d366870b5/PyContracts-1.7.10.tar.gz" } ], "1.7.11": [ { "comment_text": "", "digests": { "md5": "039675e893a09d39cc2e12551efa39f3", "sha256": "039fd5f4ae54479e01e2eddf6c0ef98cdaaefc51e54b0ec45714a100b0b9ad62" }, "downloads": -1, "filename": "PyContracts-1.7.11.tar.gz", "has_sig": false, "md5_digest": "039675e893a09d39cc2e12551efa39f3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89336, "upload_time": "2016-11-05T14:37:18", "url": "https://files.pythonhosted.org/packages/7f/e1/0c043cd35f903f42affd72d08078801f49a129ce4426bfa6f8ba8c3d0b39/PyContracts-1.7.11.tar.gz" } ], "1.7.12": [ { "comment_text": "", "digests": { "md5": "4208a332c3a18fcc260d9de2f0ac237f", "sha256": "ebf46a3d8413f776960aed8d634bece57878823ee21f723da91b501d1e5a1ee7" }, "downloads": -1, "filename": "PyContracts-1.7.12.tar.gz", "has_sig": false, "md5_digest": "4208a332c3a18fcc260d9de2f0ac237f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89368, "upload_time": "2016-11-07T01:14:36", "url": "https://files.pythonhosted.org/packages/fe/69/62e93129eb1425655bca5ad857142da29f29e121941b018d34d5b2b344ae/PyContracts-1.7.12.tar.gz" } ], "1.7.13": [ { "comment_text": "", "digests": { "md5": "023981630496fd6aaac3377b75d58b48", "sha256": "4ad8eeff598fafe7768d212641874dc2a28873bda3004099b8b7333ad04505e5" }, "downloads": -1, "filename": "PyContracts-1.7.13.tar.gz", "has_sig": false, "md5_digest": "023981630496fd6aaac3377b75d58b48", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89398, "upload_time": "2016-11-28T13:10:03", "url": "https://files.pythonhosted.org/packages/62/e0/84cd0f09907647b442e2bfe9284e619703a56350490267032873f3e3f33e/PyContracts-1.7.13.tar.gz" } ], "1.7.14": [ { "comment_text": "", "digests": { "md5": "65af6b86ff9c1a5b1b57d2b73e40e9aa", "sha256": "3ab3afc738b00a411d453af6b8a1bfa31db887bbda505147f0036a4fd082b041" }, "downloads": -1, "filename": "PyContracts-1.7.14.tar.gz", "has_sig": false, "md5_digest": "65af6b86ff9c1a5b1b57d2b73e40e9aa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89395, "upload_time": "2016-11-28T13:30:51", "url": "https://files.pythonhosted.org/packages/d5/fb/dc622f4f9662c98bbc3bfbef29080cb75d497660477c2f7de0f832f1425d/PyContracts-1.7.14.tar.gz" } ], "1.7.15": [ { "comment_text": "", "digests": { "md5": "47fd5b1e40d80e3eabdcd322eb85300a", "sha256": "24bf3ab5cfd61d0e296af82fb8b73ba875ea09733a8ca562f53016cf980dc469" }, "downloads": -1, "filename": "PyContracts-1.7.15.tar.gz", "has_sig": false, "md5_digest": "47fd5b1e40d80e3eabdcd322eb85300a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 89602, "upload_time": "2016-11-28T13:34:16", "url": "https://files.pythonhosted.org/packages/05/cf/93c6bba08bf268063c13cd9ad7656c9ab12d15cd7d88a9abe38e7eb0c74e/PyContracts-1.7.15.tar.gz" } ], "1.7.16": [ { "comment_text": "", "digests": { "md5": "bdb34d1acbc0ee6c879f1d15d715cbdd", "sha256": "0feeb07b6c74fa21eec041e029c5ec434191f30acae014b6750b6568a2b823a8" }, "downloads": -1, "filename": "PyContracts-1.7.16.tar.gz", "has_sig": false, "md5_digest": "bdb34d1acbc0ee6c879f1d15d715cbdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90017, "upload_time": "2017-09-24T08:41:16", "url": "https://files.pythonhosted.org/packages/0e/71/0a35aa1384755c1ffd07839043f511bae60655360c086943d9975ffb1358/PyContracts-1.7.16.tar.gz" } ], "1.7.2": [ { "comment_text": "", "digests": { "md5": "f717c98a82befeb199f0f1e055e4f516", "sha256": "96561c1222545c491628290fa4960b2cbdac495b2c768f497d88fe393278212e" }, "downloads": -1, "filename": "PyContracts-1.7.2.tar.gz", "has_sig": false, "md5_digest": "f717c98a82befeb199f0f1e055e4f516", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 59984, "upload_time": "2015-05-01T12:43:26", "url": "https://files.pythonhosted.org/packages/65/b0/383b787ac44c9c9b55d3e686fd0c9269d129217a1f4c49d3606803721588/PyContracts-1.7.2.tar.gz" } ], "1.7.3": [ { "comment_text": "", "digests": { "md5": "ae0323e4536e0fa36076e61bb5ff0899", "sha256": "5aaacdf7468e1355a24899fa0671f9cfcf7795a100499c35dcdce0dbc410e4af" }, "downloads": -1, "filename": "PyContracts-1.7.3.tar.gz", "has_sig": false, "md5_digest": "ae0323e4536e0fa36076e61bb5ff0899", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57478, "upload_time": "2015-06-02T13:27:01", "url": "https://files.pythonhosted.org/packages/71/25/24f1a237d03f609b7093c7fced9ac0f872af296f38a3be0201f398251783/PyContracts-1.7.3.tar.gz" } ], "1.7.4": [ { "comment_text": "", "digests": { "md5": "4f0fecd7e864d910a6da6b4b88e86f9e", "sha256": "ee85cc22347f6a98b1aea145cf0a8eeb9bbb7fee551f6c3778ce43180015fab6" }, "downloads": -1, "filename": "PyContracts-1.7.4.tar.gz", "has_sig": false, "md5_digest": "4f0fecd7e864d910a6da6b4b88e86f9e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 57699, "upload_time": "2015-06-02T13:42:41", "url": "https://files.pythonhosted.org/packages/7b/f2/d0c59a3f4152bc7fe0e9e33978d79d4264cb5a39ca30af2f14ed930d7217/PyContracts-1.7.4.tar.gz" } ], "1.7.6": [ { "comment_text": "", "digests": { "md5": "e08208f0efce2cd166b821a07822cdb3", "sha256": "94814b376b168483edeee33fdf1a04d892065d0bdfe0638d281c285d1f3e42bf" }, "downloads": -1, "filename": "PyContracts-1.7.6.tar.gz", "has_sig": false, "md5_digest": "e08208f0efce2cd166b821a07822cdb3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 58711, "upload_time": "2015-06-02T20:25:54", "url": "https://files.pythonhosted.org/packages/6b/b0/3d2c414756545220e504e50b8a6e0295d91dc619d830fd117c7aed29cd9e/PyContracts-1.7.6.tar.gz" } ], "1.7.7": [ { "comment_text": "", "digests": { "md5": "ca029542b530b813416ce8d08675a7f7", "sha256": "56ff077be2bd4f55bc5d75c4f0110adc23735b000d0b6d3c0a41e6d00b69c672" }, "downloads": -1, "filename": "PyContracts-1.7.7.tar.gz", "has_sig": false, "md5_digest": "ca029542b530b813416ce8d08675a7f7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60907, "upload_time": "2015-11-06T12:48:58", "url": "https://files.pythonhosted.org/packages/15/d7/289130e3b4766d8389db55b223371eda7461e0d22a6a6ef89f2f67cbebc2/PyContracts-1.7.7.tar.gz" } ], "1.7.8": [ { "comment_text": "", "digests": { "md5": "97010cd9702376fcd2bc49b8120becbb", "sha256": "c7a6f49d509cb3a4c17386a311d25d229d5fa73062650ef9538c47846937b388" }, "downloads": -1, "filename": "PyContracts-1.7.8.tar.gz", "has_sig": false, "md5_digest": "97010cd9702376fcd2bc49b8120becbb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 60932, "upload_time": "2015-11-10T14:47:59", "url": "https://files.pythonhosted.org/packages/7b/8e/85368c286ec0233998eb085bf20441ca013698ee1253533ae55cbf389a0f/PyContracts-1.7.8.tar.gz" } ], "1.7.9": [ { "comment_text": "", "digests": { "md5": "ae46ec3c31dcc720a8a7796b4b957efc", "sha256": "0ebb8c434700d1a990bd4f53dbbf1caec297b3a783c9af26de052104fe4dac65" }, "downloads": -1, "filename": "PyContracts-1.7.9.tar.gz", "has_sig": false, "md5_digest": "ae46ec3c31dcc720a8a7796b4b957efc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 61033, "upload_time": "2015-11-18T16:15:00", "url": "https://files.pythonhosted.org/packages/5e/d3/e80a539a45f6c8b58e9ec9ff69abc344399103388d56476b1654b0f86259/PyContracts-1.7.9.tar.gz" } ], "1.8.0": [ { "comment_text": "", "digests": { "md5": "20dc66e9115e999b02e7f01fa84d77d6", "sha256": "da842d5f7ed1eaa227569cdec926cb10ca9615163d3f922a08455683358a886c" }, "downloads": -1, "filename": "PyContracts-1.8.0.tar.gz", "has_sig": false, "md5_digest": "20dc66e9115e999b02e7f01fa84d77d6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90577, "upload_time": "2017-09-24T09:24:53", "url": "https://files.pythonhosted.org/packages/26/f9/0d64380aefde55c842999197a5c45dbb11bfbdc9d7e8b1b890c0682b235e/PyContracts-1.8.0.tar.gz" } ], "1.8.1": [ { "comment_text": "", "digests": { "md5": "1e4ca89ab26d5fdb8beba72014bb3b23", "sha256": "f5cf910a0ad0f35d8ffa9a5c864e9002b54d48e275303ff516fcb436b3b5bd5b" }, "downloads": -1, "filename": "PyContracts-1.8.1.tar.gz", "has_sig": false, "md5_digest": "1e4ca89ab26d5fdb8beba72014bb3b23", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90659, "upload_time": "2018-01-06T14:33:00", "url": "https://files.pythonhosted.org/packages/74/c5/993d2751382cb894392ebbd91466361ae50c52dacfe7ec9389e3373a8b7f/PyContracts-1.8.1.tar.gz" } ], "1.8.10": [ { "comment_text": "", "digests": { "md5": "527cae18bf38873455bcf912e366887f", "sha256": "2b10b9109934392f68084d6d56c154ffe360b5dcb916ee0aebf502c4d1b56365" }, "downloads": -1, "filename": "PyContracts-1.8.10.tar.gz", "has_sig": false, "md5_digest": "527cae18bf38873455bcf912e366887f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91382, "upload_time": "2019-02-04T18:07:22", "url": "https://files.pythonhosted.org/packages/ab/23/f134a535da8992331c57df0aa5a9213866427ff6fbbf5ff3a3d200301209/PyContracts-1.8.10.tar.gz" } ], "1.8.11": [ { "comment_text": "", "digests": { "md5": "8a6798b73195d9a6d7bc82317ae17d9c", "sha256": "b95292433045faf1571cd7978a7232857acfe79cfb71fb71ac059d4a62e10c66" }, "downloads": -1, "filename": "PyContracts-1.8.11.tar.gz", "has_sig": false, "md5_digest": "8a6798b73195d9a6d7bc82317ae17d9c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94164, "upload_time": "2019-02-05T12:33:14", "url": "https://files.pythonhosted.org/packages/df/4d/920062aaf037566efe57ae7009c428e7579e46a8cadeb5a386fe2be90548/PyContracts-1.8.11.tar.gz" } ], "1.8.12": [ { "comment_text": "", "digests": { "md5": "115db6de6493f5964496df7116231e50", "sha256": "e76adbd832deec28b2045a6094c5bb779a0b2cb1105a23b3efafe723e2c9937a" }, "downloads": -1, "filename": "PyContracts-1.8.12.tar.gz", "has_sig": false, "md5_digest": "115db6de6493f5964496df7116231e50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91393, "upload_time": "2019-02-05T19:33:30", "url": "https://files.pythonhosted.org/packages/4e/7a/0f79370e4e3a6741396d76d1f76586c2924bed049fb38597799b72a24081/PyContracts-1.8.12.tar.gz" } ], "1.8.2": [ { "comment_text": "", "digests": { "md5": "969f231ad7e52342baccaa73c1450fb0", "sha256": "64518433e4eba120e700e5989d528f8c7f91d5a219cd29fab3626af604ca94d3" }, "downloads": -1, "filename": "PyContracts-1.8.2.tar.gz", "has_sig": false, "md5_digest": "969f231ad7e52342baccaa73c1450fb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90682, "upload_time": "2018-01-06T14:49:26", "url": "https://files.pythonhosted.org/packages/a3/5e/496a34b37ece0273ceff9373ab6f1c142d1c7fcb57123ce981ff8cf85025/PyContracts-1.8.2.tar.gz" } ], "1.8.3": [ { "comment_text": "", "digests": { "md5": "c18d969159f18ff3c01e2c90f5fe3970", "sha256": "8e52c4ddbc015b56cc672b7c005c11f3df4fe407b832964099836fa3cccb8b9d" }, "downloads": -1, "filename": "PyContracts-1.8.3.tar.gz", "has_sig": false, "md5_digest": "c18d969159f18ff3c01e2c90f5fe3970", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 90738, "upload_time": "2018-03-18T15:42:19", "url": "https://files.pythonhosted.org/packages/16/f7/06a3fc92758cf288b9e0d09b0d0f18eff39970214775505d85c002277721/PyContracts-1.8.3.tar.gz" } ], "1.8.4": [ { "comment_text": "", "digests": { "md5": "e5dda49ef633f623587e86f01ac3a3a0", "sha256": "c8285d9af5a766dca6dcff887d42159dd0fc79537209b3a9aa4adf766bcf0286" }, "downloads": -1, "filename": "PyContracts-1.8.4.tar.gz", "has_sig": false, "md5_digest": "e5dda49ef633f623587e86f01ac3a3a0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91172, "upload_time": "2018-10-21T17:58:42", "url": "https://files.pythonhosted.org/packages/9b/43/ddd0ddc36ab889680ac95d2da66f093340a6ee9ba8754843639809adbdd9/PyContracts-1.8.4.tar.gz" } ], "1.8.5": [ { "comment_text": "", "digests": { "md5": "2147a6947bc641ba0a43f10e0254bb4c", "sha256": "2ac44261bc689a0f19ef4868a18b3a2ae412569fb7dc742c16f71ab39dab1b32" }, "downloads": -1, "filename": "PyContracts-1.8.5.tar.gz", "has_sig": false, "md5_digest": "2147a6947bc641ba0a43f10e0254bb4c", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91205, "upload_time": "2018-10-21T18:32:08", "url": "https://files.pythonhosted.org/packages/19/7a/762da594d3d28cb70e17347b7ca8c227b3e42c97227593b38447fadb80fa/PyContracts-1.8.5.tar.gz" } ], "1.8.6": [ { "comment_text": "", "digests": { "md5": "d7d3421e0d255ac647f9dbe5b5be8a69", "sha256": "8b6ad8750bbb712b1c7b8f89772b42baeefd35b3c7085233e8027b92f277e073" }, "downloads": -1, "filename": "PyContracts-1.8.6.tar.gz", "has_sig": false, "md5_digest": "d7d3421e0d255ac647f9dbe5b5be8a69", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91274, "upload_time": "2018-10-23T21:38:05", "url": "https://files.pythonhosted.org/packages/cb/73/a19746ae34251d2d8af90bc33e52ae56b020d79689ba2c6a6264007cbe3d/PyContracts-1.8.6.tar.gz" } ], "1.8.7": [ { "comment_text": "", "digests": { "md5": "3bd6c7b8b2f34e497c8521ff48810ef1", "sha256": "c0b1edd1423ef77f3e034409711f8adf65c5a4ce2ef144340894ad34d794c5ac" }, "downloads": -1, "filename": "PyContracts-1.8.7.tar.gz", "has_sig": false, "md5_digest": "3bd6c7b8b2f34e497c8521ff48810ef1", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91402, "upload_time": "2018-11-16T08:31:45", "url": "https://files.pythonhosted.org/packages/00/57/1e2a19244cc5034707da20af6b80a9f5cb79b78f2896a8742aa08a99cf4d/PyContracts-1.8.7.tar.gz" } ], "1.8.8": [ { "comment_text": "", "digests": { "md5": "d01d457fd39d4efd04f50e2cfa8b5723", "sha256": "6a0b4b3d193784148928323fc2dd78380ea2afab32dd2ecad2510929b7d64c5a" }, "downloads": -1, "filename": "PyContracts-1.8.8.tar.gz", "has_sig": false, "md5_digest": "d01d457fd39d4efd04f50e2cfa8b5723", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 94061, "upload_time": "2019-01-30T09:50:16", "url": "https://files.pythonhosted.org/packages/78/e1/b1692fc45b9aa30dfdb00d7ea758e0307841482b4a3227688e8de044e02a/PyContracts-1.8.8.tar.gz" } ], "1.8.9": [ { "comment_text": "", "digests": { "md5": "98342636c9a8bd9bd20252bce3f84a30", "sha256": "f6e8267b173f92b9d57858ec2811a62b4e043432e144b13b5a20d49b15f75557" }, "downloads": -1, "filename": "PyContracts-1.8.9.tar.gz", "has_sig": false, "md5_digest": "98342636c9a8bd9bd20252bce3f84a30", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91369, "upload_time": "2019-02-04T17:47:06", "url": "https://files.pythonhosted.org/packages/d0/1e/34e9eb31ce56bcfa206db16929a99debfd7fee89efc99c91ad0a49ae6bf2/PyContracts-1.8.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "115db6de6493f5964496df7116231e50", "sha256": "e76adbd832deec28b2045a6094c5bb779a0b2cb1105a23b3efafe723e2c9937a" }, "downloads": -1, "filename": "PyContracts-1.8.12.tar.gz", "has_sig": false, "md5_digest": "115db6de6493f5964496df7116231e50", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 91393, "upload_time": "2019-02-05T19:33:30", "url": "https://files.pythonhosted.org/packages/4e/7a/0f79370e4e3a6741396d76d1f76586c2924bed049fb38597799b72a24081/PyContracts-1.8.12.tar.gz" } ] }