{ "info": { "author": "Max Shinn", "author_email": "maxwell.shinn@yale.edu", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Intended Audience :: Developers", "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Topic :: Education :: Testing", "Topic :: Scientific/Engineering", "Topic :: Software Development :: Quality Assurance", "Topic :: Software Development :: Testing" ], "description": "# \"Paranoid\n\n[![Build Status](https://travis-ci.com/mwshinn/paranoidscientist.svg?branch=master)](https://travis-ci.com/mwshinn/paranoidscientist) \n[![Build status](https://ci.appveyor.com/api/projects/status/0357mlwfdglkg6ds?svg=true)](https://ci.appveyor.com/project/mwshinn/paranoidscientist)\n\nParanoid Scientist is a Python module which allows runtime\nverification of entry and exit conditions for Python functions using a\nnovel type system which prioritizes the interpretation of types over\ntheir representation. It is intended for scientific software. More\nspecifically, it provides the following:\n\n- A **novel type system**, which emphasizes the *meaning* of the type\n instead of the *data structure* of the type.\n- Verification of arbitrary **entry and exit conditions**, including more\n complex expressions with universal quantification.\n- **Automated testing** of individual functions to determine, before\n execution of the program, whether functions conform to their\n specification.\n- A simple and clear function decorator notation\n\nSee the\n[documentation](http://paranoid-scientist.readthedocs.io/en/latest/),\n[conceptual FAQs](http://paranoid-scientist.readthedocs.io/en/latest/conceptfaq.html),\n[technical FAQs](http://paranoid-scientist.readthedocs.io/en/latest/techfaq.html),\nor\n[tutorial](http://paranoid-scientist.readthedocs.io/en/latest/tutorial.html)\nfor more information.\n\n\n## System requirements\n\n- Python 3.5 or above\n- Optional: Numpy (for Numpy types support)\n\n\n## License\n\nAll code is available under the MIT license. See LICENSE.txt for more\ninformation. Code is copyright 2018 Max Shinn. The logo is copyright\n2018 Anastasia Ershova.\n\n\n## What types are included by default?\n\n- Numeric types:\n - Numeric: Any real number, plus inf/-inf/nan.\n - ExtendedReal: Any real number plus inf/-inf.\n - Number: Any real number.\n - Integer: An integer.\n - Natural0: A natural number including 0.\n - Natural1: A natural number starting with 1.\n - Range(x,y): A number in the interval [x,y].\n - RangeClosedOpen(x,y): A number in the interval [x,y).\n - RangeOpenClosed(x,y): A number in the interval (x,y].\n - RangeOpen(x,y): A number in the range (x,y).\n - Positive0: A positive number or zero.\n - Positive: A positive number excluding zero.\n - NDArray(d=None, t=None): A Numpy NDArray. Optionally, require\n it to have `d` dimensions. Optionally, require elements of the\n array to be of type `t` (which can be any Paranoid type).\n- Other:\n - Unchecked(t=None): Do not check the type for this element.\n Optionally, a Paranoid type `t` can be passed as a type to\n generate during automated testing (to allow testing of functions\n of unchecked type).\n - Constant(v): Can only be the value `v`.\n - Self: A special type to use inside classes for the `self` argument.\n - Nothing: Can only be None.\n - Function: Any Python function.\n - Boolean: Either True or False.\n - And(t1, t2, ...): Any number of Paranoid types may be passed as\n arguments. Require a value to satisfy all of these types.\n - Or(t1, t2, ...): Any number of Paranoid types may be passed as\n arguments. Require a value to satisfy at least one of these\n types.\n - Not(t): Can be anything other than the Paranoid type `t`.\n- Collections:\n - Set(els): The argument `els` should be a list of accepted\n values. This is equivalent to an enum. For example,\n Set([0, 1, 2, 3]) accepts only these four numbers.\n - List(t): A Python list with elements of Paranoid type `t`\n - Dict(k, v): A Python dictionary where keys have Paranoid type\n `k` and values have Paranoid type `v`.\n- Strings:\n - String: Any string.\n - Identifier: Any non-empty string containing only alpha-numeric\n characters plus underscores and hyphens.\n - Alphanumeric: Any non-empty alphanumeric string.\n - Latin: Any non-empty string with Latin characters only.\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/mwshinn/paranoidscientist", "keywords": "", "license": "MIT", "maintainer": "Max Shinn", "maintainer_email": "maxwell.shinn@yale.edu", "name": "paranoid-scientist", "package_url": "https://pypi.org/project/paranoid-scientist/", "platform": "", "project_url": "https://pypi.org/project/paranoid-scientist/", "project_urls": { "Homepage": "https://github.com/mwshinn/paranoidscientist" }, "release_url": "https://pypi.org/project/paranoid-scientist/0.2.1/", "requires_dist": null, "requires_python": ">=3.5", "summary": "Runtime verification and automated testing for scientific code", "version": "0.2.1" }, "last_serial": 5727098, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "d806eb6c64f60f3acf58e246b37387ea", "sha256": "bb810e3165eb7e2d12db04bef32bfbb2c6d9bb10656c48034f4d0067f6d3ab15" }, "downloads": -1, "filename": "paranoid_scientist-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d806eb6c64f60f3acf58e246b37387ea", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3", "size": 20492, "upload_time": "2018-02-24T17:49:48", "url": "https://files.pythonhosted.org/packages/8c/e4/532e822891a3562730a69f7cf902df2623a5caed5bbe75d9bd52e13c5f65/paranoid_scientist-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "db2a11d5d57edda43e3b147db364bb7b", "sha256": "4b2e000ed116b52641a4c76b6e82f1cf24d69aab5b0ea75b13ec6728be8cf61f" }, "downloads": -1, "filename": "paranoid-scientist-0.1.0.tar.gz", "has_sig": false, "md5_digest": "db2a11d5d57edda43e3b147db364bb7b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 22557, "upload_time": "2018-02-24T17:49:53", "url": "https://files.pythonhosted.org/packages/2e/29/12bc6b47ad36b7e2261c672bb8b012b6ea2878c1bdc9241b4bd3e2d95f58/paranoid-scientist-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "9c04d0c7fdedcf3603b4d9e996dcc482", "sha256": "08b6088c8890a7bdac2416c8dcc966fb23c6c250c79c514a471c435159e86ed5" }, "downloads": -1, "filename": "paranoid_scientist-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "9c04d0c7fdedcf3603b4d9e996dcc482", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 20571, "upload_time": "2018-02-26T18:13:18", "url": "https://files.pythonhosted.org/packages/ce/dd/d9b04be5b534491a33bd6a2d03b094f0fad82640b7df52c1806c80159b01/paranoid_scientist-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f872a3f7ea887c5790bc1fa9f253938c", "sha256": "51ce602760ad6a94dd47138a8d4ad0fed14b664ca67d8d4fc00ae46f1dec66cd" }, "downloads": -1, "filename": "paranoid-scientist-0.1.1.tar.gz", "has_sig": false, "md5_digest": "f872a3f7ea887c5790bc1fa9f253938c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 23512, "upload_time": "2018-02-26T18:13:19", "url": "https://files.pythonhosted.org/packages/ac/28/89c3b14fdee18559ff1937c2942dc232de3851b6ab9df993eecb5d85a77b/paranoid-scientist-0.1.1.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "37f61722f8d87df90669e67788854a33", "sha256": "6327530de3c37ebf46e513ce765bb53000815432f08b5b00091f93ffa2dad453" }, "downloads": -1, "filename": "paranoid_scientist-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "37f61722f8d87df90669e67788854a33", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 21363, "upload_time": "2018-06-06T22:00:50", "url": "https://files.pythonhosted.org/packages/a4/22/74f6a22e783578dd159e80be0b2a57ee26d6cec93daba8cdad8b6af61497/paranoid_scientist-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "61e3d9f7701bd09a6964ce03a23a6682", "sha256": "01475b4315d38f16da4e25d98695969c84c1f31c01d5033992d2d929232c947a" }, "downloads": -1, "filename": "paranoid-scientist-0.1.2.tar.gz", "has_sig": false, "md5_digest": "61e3d9f7701bd09a6964ce03a23a6682", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 24306, "upload_time": "2018-06-06T22:00:51", "url": "https://files.pythonhosted.org/packages/8a/e4/f0e0c04cc844660266b9c52451674113d499baedc4d665d60f9e757d5d95/paranoid-scientist-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "62ed8d4e7ec5b8cb7564a37fa43b11f4", "sha256": "ee873bd3cab771bad9b66d57d7deb23d9c1248297fd801ac9ffc833e93f5e216" }, "downloads": -1, "filename": "paranoid_scientist-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "62ed8d4e7ec5b8cb7564a37fa43b11f4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 22645, "upload_time": "2018-07-07T16:55:50", "url": "https://files.pythonhosted.org/packages/d0/2b/6cca4bb361a9f836ed1d555ae973cab013c23c0bf5697070fb08a42a67b2/paranoid_scientist-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "304cb5bf335c717682e132564d196eff", "sha256": "9d7a84431e75e209cfb69ba347167a6715ba12855d4ec832e76cd765c52713fd" }, "downloads": -1, "filename": "paranoid-scientist-0.1.3.tar.gz", "has_sig": false, "md5_digest": "304cb5bf335c717682e132564d196eff", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 17334, "upload_time": "2018-07-07T16:55:51", "url": "https://files.pythonhosted.org/packages/29/dd/e2e019607afa38d8511d7447ec2f6c25290a5fe272b45d998d2ae1d6f213/paranoid-scientist-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "0dc9baa5636fa26f820f041df93e699a", "sha256": "dd090147a035fd6ff62456c73cb76815f4ff2b7dd9690ba43334176dc72ba95b" }, "downloads": -1, "filename": "paranoid_scientist-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "0dc9baa5636fa26f820f041df93e699a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 23138, "upload_time": "2018-07-20T20:29:12", "url": "https://files.pythonhosted.org/packages/52/15/2d460b25afa5b27fc68dc9a64d621650cab0fe2d5aa7185a3c49ad124ae1/paranoid_scientist-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2fa86cf3426db13567a1b2a1e1e0e54f", "sha256": "40b49d1665cad4e396bfbf579374d37d942c0bdac846859e8a4d5db2dd461176" }, "downloads": -1, "filename": "paranoid-scientist-0.1.4.tar.gz", "has_sig": false, "md5_digest": "2fa86cf3426db13567a1b2a1e1e0e54f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19137, "upload_time": "2018-07-20T20:29:13", "url": "https://files.pythonhosted.org/packages/9c/38/71d9302c250ff93e3b1c16dc0759a1fed0734a3118fd58fb88500ed43c60/paranoid-scientist-0.1.4.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "33371aa6e5d01379b4ac01e489e34214", "sha256": "d6a4837d5f204cabf6930c3733bf2b2f600dfad9e2bf2e7104497b0c527aa111" }, "downloads": -1, "filename": "paranoid_scientist-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "33371aa6e5d01379b4ac01e489e34214", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25278, "upload_time": "2019-05-21T13:58:23", "url": "https://files.pythonhosted.org/packages/e6/4e/a1daec8d63eda8f62e3091d694c28fad0255594565c04e809e4985679125/paranoid_scientist-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "fe8a9a776bdc18dd724f3ed1f3fb084d", "sha256": "b057497b9d99668841afd53401e2b0070b6325bcc2b8ad2c06c948cb32585bab" }, "downloads": -1, "filename": "paranoid-scientist-0.2.0.tar.gz", "has_sig": false, "md5_digest": "fe8a9a776bdc18dd724f3ed1f3fb084d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19049, "upload_time": "2019-05-21T13:58:25", "url": "https://files.pythonhosted.org/packages/52/f1/62e78d8bc6a0c10edaeb707714be92a1858f6205a3f1d20e207b03a18db3/paranoid-scientist-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "3a0893f42394819ef7d15de7f80fc830", "sha256": "bb76e25289fc9cd21c839821240d8297b0c6db00f6858eee553905d8d2d1fb3b" }, "downloads": -1, "filename": "paranoid_scientist-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3a0893f42394819ef7d15de7f80fc830", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25499, "upload_time": "2019-08-25T13:46:21", "url": "https://files.pythonhosted.org/packages/95/32/cade3a9efb64ce7fe1bcd9741a8fa3cbf563a94d095adbe820274f54e793/paranoid_scientist-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a5e585691524ab480425d2126073583d", "sha256": "717b7ec5b9eb29443ea525fb6e18ff681e6c1eec57b7cb89246e249f7dc1422a" }, "downloads": -1, "filename": "paranoid-scientist-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a5e585691524ab480425d2126073583d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19230, "upload_time": "2019-08-25T13:46:22", "url": "https://files.pythonhosted.org/packages/ad/3c/b4992aca104d347a1051e37a7f392a2326c1e7f950f772a395b4c315ff24/paranoid-scientist-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "3a0893f42394819ef7d15de7f80fc830", "sha256": "bb76e25289fc9cd21c839821240d8297b0c6db00f6858eee553905d8d2d1fb3b" }, "downloads": -1, "filename": "paranoid_scientist-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "3a0893f42394819ef7d15de7f80fc830", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.5", "size": 25499, "upload_time": "2019-08-25T13:46:21", "url": "https://files.pythonhosted.org/packages/95/32/cade3a9efb64ce7fe1bcd9741a8fa3cbf563a94d095adbe820274f54e793/paranoid_scientist-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a5e585691524ab480425d2126073583d", "sha256": "717b7ec5b9eb29443ea525fb6e18ff681e6c1eec57b7cb89246e249f7dc1422a" }, "downloads": -1, "filename": "paranoid-scientist-0.2.1.tar.gz", "has_sig": false, "md5_digest": "a5e585691524ab480425d2126073583d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.5", "size": 19230, "upload_time": "2019-08-25T13:46:22", "url": "https://files.pythonhosted.org/packages/ad/3c/b4992aca104d347a1051e37a7f392a2326c1e7f950f772a395b4c315ff24/paranoid-scientist-0.2.1.tar.gz" } ] }