{ "info": { "author": "Xu Miao", "author_email": "xu@reasoned.ai", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: Apache Software License", "Programming Language :: Python", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: Implementation :: CPython" ], "description": "# Norm = {Neural Object Relational Models}\n\n\n![alt text](docs/_static/norm-logo.png \"Norm Logo\")\n\n\nWhen human defines a concept, we compose it with other concepts. When the concept is not accurate, human critic and\nmodify the logic of the composition. However, that is not what the state of the arts AI technology, deep learning\npractices. Deep neural networks considers the concept as a set of numerical\nparameters to be optimized with respect to a set of data and an objective function. This black-box approach is\ndifficult for regular human experts to interpret and modify. It requires an experienced neural network architect to\nfine-tune the parameters constantly.\n\n\nFor example, **JayWalk** is a new concept that we need to detect for *Autonomous Driving Vehicles*. The standard procedure\nis to collect a set of positive and negative images, then train a model to classify this concept. The challenge is that\nit is difficult to collect positive examples for a complicated concept due to the long tail distribution and the\ntrained model will be less accurate if the data is not enough. However, if we compose the concept based on other\nwell-trained concepts, the chance to obtain a high quality model will be increased significantly.\n\n![alt text](docs/_static/jaywalk.png \"Jay Walk Example\")\n\n``` prolog\n JayWalk(p: Person, r: Road) =\n WalkAcross(p, r) & On(p, z) & Part(r, ?z) & !ZebraCross(z)\n```\n\nIf some concepts contain errors that accumulate due to the complex compositions, Norm can alleviate this\n*brittleness* effectively by adapting the parameters over a small set of examples. The entire logic program is compiled\nto a neural network and the power of transfer learning is leveraged.\n\n\nRepresenting the AI model in terms of logic forms facilitates the white-box machine learning approach. Domain experts\ncan understand the logical explanation of the model and can argue with the model by looking into the counter-examples.\nParticularly, domain experts can append the **differential logic** to the program and test them out. These explanatory\nand explorative debugging capabilities turn the AI model development into an interactive and collaborative process\nthat fits into most of research agenda in many fields.\n\n\nIn the end, logic program is the closest formal language to human language. Having a natural language parser will enable\nmany more people to benefit the AI development who do not know how to write in a formal language. It will open a door to\nthe Artificial General Intelligence that is capable of human-like reasoning.\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/reasoned-ai/norm", "keywords": "", "license": "Apache 2.0", "maintainer": "", "maintainer_email": "", "name": "pynorm", "package_url": "https://pypi.org/project/pynorm/", "platform": "", "project_url": "https://pypi.org/project/pynorm/", "project_urls": { "Homepage": "https://github.com/reasoned-ai/norm" }, "release_url": "https://pypi.org/project/pynorm/0.1.12/", "requires_dist": [ "IPython (~=5.5.0)", "hashids", "alembic", "antlr4-python3-runtime", "babel", "bqplot", "cython", "dask", "docutils", "fastparquet", "gcloud", "h5py", "humanize", "ipywidgets", "jedi", "Keras", "locket", "Mako", "Markdown", "matplotlib", "mock", "msgpack", "numpy", "numpydoc", "packaging", "pandas", "parsedatetime", "pep8", "PyYAML", "requests (~=2.21.0)", "scikit-image", "scikit-learn", "scipy", "sortedcollections", "sortedcontainers", "Sphinx", "sphinx-rtd-theme", "scrubadub", "SQLAlchemy", "SQLAlchemy-Utils", "toolz", "tox", "xgboost" ], "requires_python": ">=3.6.0", "summary": "A probabilistic logic programming library for data science", "version": "0.1.12" }, "last_serial": 5843881, "releases": { "0.1.0": [ { "comment_text": "", "digests": { "md5": "4b2009a56180dc89d50960218ae3fae7", "sha256": "bda5a546120a93b0807f0e9d8d8229a6ac6209b80fe02cbcfe5700f8bb78cf9d" }, "downloads": -1, "filename": "pynorm-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4b2009a56180dc89d50960218ae3fae7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 229455, "upload_time": "2019-06-19T23:00:36", "url": "https://files.pythonhosted.org/packages/76/f2/232fe4a3d963480faf03a2e64b9de85f5f0b31c133b8a8f49214528388ba/pynorm-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4b10b5f3007ed3fbf953fc69662f9d71", "sha256": "94ab45f9114e3a75ca624e36dac16758323834c211afbb1526149b32d50f292c" }, "downloads": -1, "filename": "pynorm-0.1.0.tar.gz", "has_sig": false, "md5_digest": "4b10b5f3007ed3fbf953fc69662f9d71", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 198386, "upload_time": "2019-06-19T23:00:39", "url": "https://files.pythonhosted.org/packages/10/89/5e7139d6422aba63495b71b19dd543c1b66be046da05ae77246838ede633/pynorm-0.1.0.tar.gz" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "1e41206af6b74a39e85fcaf09d0e8ead", "sha256": "38be296cb89bbb2638c0db348d7532c38130a81f29da183e88a84827b43cc91c" }, "downloads": -1, "filename": "pynorm-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1e41206af6b74a39e85fcaf09d0e8ead", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 229220, "upload_time": "2019-06-20T04:54:39", "url": "https://files.pythonhosted.org/packages/b3/3c/a3489bd98b82a531a1a48c689c288a06e6653f6173c0ec11aae09952d555/pynorm-0.1.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "102ffdb1d35f29eb6ecb20b31597869c", "sha256": "2ce1a68cf8f02f160521505fa31c7a13ea674f258e41018a321a92a4978a4028" }, "downloads": -1, "filename": "pynorm-0.1.1.tar.gz", "has_sig": false, "md5_digest": "102ffdb1d35f29eb6ecb20b31597869c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 198172, "upload_time": "2019-06-20T04:54:41", "url": "https://files.pythonhosted.org/packages/08/16/3b62f038788b2febc2290157eb1a39389d4c2d31cd626d74fce6c601be4b/pynorm-0.1.1.tar.gz" } ], "0.1.10": [ { "comment_text": "", "digests": { "md5": "15b92d807621d7c6a25097e4140316aa", "sha256": "8784bc7528a4b66a45d63e6ca50865bf63bc6be2dc0521823253dde0b2fa0751" }, "downloads": -1, "filename": "pynorm-0.1.10-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "15b92d807621d7c6a25097e4140316aa", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 630828, "upload_time": "2019-09-17T20:02:15", "url": "https://files.pythonhosted.org/packages/89/44/c52337a9562197f4b7d519c22d20b2e9bff6ec4a1e50d65ea8a6f0b59c57/pynorm-0.1.10-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "34eff63b0ced2203fdc08c95694b76f7", "sha256": "b96ca91a6b3652db88b21d7032c4ae32db13c0c7a8e449a77d0e3678bafd5182" }, "downloads": -1, "filename": "pynorm-0.1.10.tar.gz", "has_sig": false, "md5_digest": "34eff63b0ced2203fdc08c95694b76f7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 521582, "upload_time": "2019-09-17T20:02:18", "url": "https://files.pythonhosted.org/packages/4e/19/ddd6087ad28e5b245ddc92c9f4a8a4274eaff085a4b44931e195b9b725b4/pynorm-0.1.10.tar.gz" } ], "0.1.11": [ { "comment_text": "", "digests": { "md5": "ae6a2a95a4f6146790c400fa674971c3", "sha256": "5a5a6cb6a9fdea22333e169ae2d92b0b0ff09052136c8a954cf088d8f626bfc5" }, "downloads": -1, "filename": "pynorm-0.1.11-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "ae6a2a95a4f6146790c400fa674971c3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 630882, "upload_time": "2019-09-17T20:08:47", "url": "https://files.pythonhosted.org/packages/55/06/5333a922c74878b0709cda1cf663b00abc20e7defaf26c1be70dc327de46/pynorm-0.1.11-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8fe5f1d017915ff9b287dcef02ab7ca2", "sha256": "9ccc91b074efe923b46bc00b9f2005721dbd492938a41d8e5402a24d653a9f3f" }, "downloads": -1, "filename": "pynorm-0.1.11.tar.gz", "has_sig": false, "md5_digest": "8fe5f1d017915ff9b287dcef02ab7ca2", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 521656, "upload_time": "2019-09-17T20:08:50", "url": "https://files.pythonhosted.org/packages/7f/5d/eeb029e31a645915c8ad8c4dcc6c8007525551e9046624d84830d99e03c6/pynorm-0.1.11.tar.gz" } ], "0.1.12": [ { "comment_text": "", "digests": { "md5": "5ceecfe9f086a6e981876bd131e5e632", "sha256": "b101bc83f5677b761bbb90ec85b4801726380cea83bed59a923c13f3493f5639" }, "downloads": -1, "filename": "pynorm-0.1.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5ceecfe9f086a6e981876bd131e5e632", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 630877, "upload_time": "2019-09-17T20:21:54", "url": "https://files.pythonhosted.org/packages/94/2d/1f6de392f9a5a5144d896195564963d885525a427cae95e910796cca159e/pynorm-0.1.12-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8eb6620f33b49fad0795c8d02f7fc884", "sha256": "df8d77e52ab18be02839d3e9b8d8ea1a8b8bf4cd21ce8d98ba8eb8b78e174e88" }, "downloads": -1, "filename": "pynorm-0.1.12.tar.gz", "has_sig": false, "md5_digest": "8eb6620f33b49fad0795c8d02f7fc884", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 521659, "upload_time": "2019-09-17T20:21:57", "url": "https://files.pythonhosted.org/packages/e3/76/572f23b50efd4864d4bda17a5679296878dce4f43658b320d9ac6ca8146c/pynorm-0.1.12.tar.gz" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "1a77f245ef1f618aae976f0701e03c8c", "sha256": "249bc87ddef9a06e2d5d449b98b04b098877219199f8ac19a699a0087a738561" }, "downloads": -1, "filename": "pynorm-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1a77f245ef1f618aae976f0701e03c8c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 354409, "upload_time": "2019-06-24T07:16:23", "url": "https://files.pythonhosted.org/packages/52/26/65f511dc953187938be3629c03fb13c82ae391f812dcd699623711e2ddc0/pynorm-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f854f459eca0267f1f5e8171c1f11f34", "sha256": "681954e667a9104124dd9f74b9dd6b2bcb9066e697ef8e89ac4ef1cc341bc6e5" }, "downloads": -1, "filename": "pynorm-0.1.2.tar.gz", "has_sig": false, "md5_digest": "f854f459eca0267f1f5e8171c1f11f34", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 246645, "upload_time": "2019-06-24T07:16:25", "url": "https://files.pythonhosted.org/packages/9a/31/00d6e9008d9fb57c9c7bf0ef7e9ba05abc3eb35a1d06eccf27b8ecf6740b/pynorm-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "56a77578f6a588c738a9430463cfbaf8", "sha256": "9dfde8cf1f07283dc5bf12d447acea2cfcabbe29176aac78e64760ffeada1cd3" }, "downloads": -1, "filename": "pynorm-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "56a77578f6a588c738a9430463cfbaf8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 354420, "upload_time": "2019-06-24T07:20:33", "url": "https://files.pythonhosted.org/packages/45/72/a2fb2f624bca6339cfa2f395226e9ab7ea3db55a2f17b8596485c8f83862/pynorm-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7f581a9a55c987cb514bd83fc8940b98", "sha256": "036c911e214c072715c10858c85ac1c67b99462c75900c7422fb0258ef4097e2" }, "downloads": -1, "filename": "pynorm-0.1.3.tar.gz", "has_sig": false, "md5_digest": "7f581a9a55c987cb514bd83fc8940b98", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 246645, "upload_time": "2019-06-24T07:20:35", "url": "https://files.pythonhosted.org/packages/05/0b/397590f939f0bb1cfaa78cc5ade88ea1db0af19903545f56d0b60591b5b7/pynorm-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "5391bba84945206ccfda11148cb297d9", "sha256": "22ba34aff24e0c056e8cbd1391b2be002dfc027c7fea17dc41621a0517bae6ed" }, "downloads": -1, "filename": "pynorm-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5391bba84945206ccfda11148cb297d9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 354858, "upload_time": "2019-07-11T07:05:01", "url": "https://files.pythonhosted.org/packages/16/f7/a2ec538c13341d858d58a6e0ccdb9ebaceb0d58cad95ad5e80bb47d95a42/pynorm-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9b8529b0c0eab33944e6bebb74b0b39c", "sha256": "ae4446d892ce3756edfb1750e1a25e80ce18c00a1f5b65ec514ddbf72c955262" }, "downloads": -1, "filename": "pynorm-0.1.4.tar.gz", "has_sig": false, "md5_digest": "9b8529b0c0eab33944e6bebb74b0b39c", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 247188, "upload_time": "2019-07-11T07:05:04", "url": "https://files.pythonhosted.org/packages/f0/66/900ce6aae23545cc1a03f52b4e1384287c1da244353596e96bb5b0665839/pynorm-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "627473cd18111cbcfccd0d43fd019cec", "sha256": "da6cf47d90b6e9bbe8cb6fa37e5114f6f80de14801cb5f799f2f2bfc80d2aea5" }, "downloads": -1, "filename": "pynorm-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "627473cd18111cbcfccd0d43fd019cec", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 365217, "upload_time": "2019-07-23T09:02:44", "url": "https://files.pythonhosted.org/packages/a2/92/1d9cb37364091e2c594a055eb381cbc4b9eeb9b1f8515ae0049c21f53ec4/pynorm-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "99d123d04a5e741fa5d57d7db571a1c7", "sha256": "b7e37eb2cc72b66e5afe40221a1faf181ce29aa97283e82f464b13330793d8ea" }, "downloads": -1, "filename": "pynorm-0.1.5.tar.gz", "has_sig": false, "md5_digest": "99d123d04a5e741fa5d57d7db571a1c7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 258593, "upload_time": "2019-07-23T09:02:46", "url": "https://files.pythonhosted.org/packages/aa/4b/772be27e9208d2e2970994544fb6479f3ed592432680d8180e36b2390ff3/pynorm-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "c98b1d6389c88b200110148e3cc80044", "sha256": "57c8f01b1118703c661be3f7a6de245dc3ce389c3d080c8360cba3e82aa933d5" }, "downloads": -1, "filename": "pynorm-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c98b1d6389c88b200110148e3cc80044", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 365339, "upload_time": "2019-07-23T17:33:43", "url": "https://files.pythonhosted.org/packages/a4/0b/cf148442f239c0f3edf2399900de2bdb91d0d6698ca47bf172968f8212b5/pynorm-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5cc5f198261c1a1eac6605438def264", "sha256": "bdab4deed26cea732759ecbe7b1b470ee3d44ce076c370090eb3647dd0ac21fb" }, "downloads": -1, "filename": "pynorm-0.1.6.tar.gz", "has_sig": false, "md5_digest": "f5cc5f198261c1a1eac6605438def264", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 258724, "upload_time": "2019-07-23T17:33:46", "url": "https://files.pythonhosted.org/packages/06/4f/47ebbcd8cf5a560726f75d97d5268d359a6f19622aefdd5d3a7ef6468b15/pynorm-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "14fc6c373c26d2b34866ac0c387bf271", "sha256": "f3c4465b8061aadeca47b25fb9dee4f89b67912007bf3e2e4293de16978e3e0d" }, "downloads": -1, "filename": "pynorm-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "14fc6c373c26d2b34866ac0c387bf271", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 366012, "upload_time": "2019-08-10T01:57:41", "url": "https://files.pythonhosted.org/packages/ec/99/19635089e71374cb6746f38016fc59a24a8899461923b36910926c0f7624/pynorm-0.1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "40369fec1427316b14aa681e2f31b543", "sha256": "80a92639e0ba0f7c424183ee9ccdfff3e8ca5663c79efa0b9b27916ce1d594eb" }, "downloads": -1, "filename": "pynorm-0.1.7.tar.gz", "has_sig": false, "md5_digest": "40369fec1427316b14aa681e2f31b543", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 259481, "upload_time": "2019-08-10T01:57:43", "url": "https://files.pythonhosted.org/packages/a3/8b/7d894b6e329a4e19705da6cd7c7bcef01e444bc4f363b7e8d30a2d0c4323/pynorm-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "b8267aefd769befac1531666b46798ea", "sha256": "05cb8e30c1f533a4e9a616ceec55fbe736a5c48b092fab1c5b8d4fba3963539b" }, "downloads": -1, "filename": "pynorm-0.1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "b8267aefd769befac1531666b46798ea", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 365995, "upload_time": "2019-08-13T04:43:41", "url": "https://files.pythonhosted.org/packages/8e/97/fb519cc68dc6eb1a48b2ecaca5e7b8d86fbf24c9426716a967dea7409bbb/pynorm-0.1.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "92f3c44622cbc1c5404ca051c785a85b", "sha256": "6b985cc2d2c26efc6fb5bcaf0bf1d627e67e541c4081eeef05b4896b50c3c377" }, "downloads": -1, "filename": "pynorm-0.1.8.tar.gz", "has_sig": false, "md5_digest": "92f3c44622cbc1c5404ca051c785a85b", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 259452, "upload_time": "2019-08-13T04:43:44", "url": "https://files.pythonhosted.org/packages/cd/b4/3c1c62680d590fb6db8ce4b3c34116fb88c4549da72d815dd0a21d9f5db9/pynorm-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "59c5c0420af3d1d4c962c406307a78d7", "sha256": "2b6e88b3ef549d4561578161697a169808d5bbae4fd80278b310412daa2761d9" }, "downloads": -1, "filename": "pynorm-0.1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "59c5c0420af3d1d4c962c406307a78d7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 366087, "upload_time": "2019-08-13T15:55:59", "url": "https://files.pythonhosted.org/packages/04/da/f340e339bbeed9c368ee802e0a6a52772b7a3379a5e0716ab044abeeecc6/pynorm-0.1.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e45642428d482167277a080cf2710acb", "sha256": "ecf62b1be4800de28070b08a371f24a2f486ee34dadc2e02f2d9a78ed3556a8b" }, "downloads": -1, "filename": "pynorm-0.1.9.tar.gz", "has_sig": false, "md5_digest": "e45642428d482167277a080cf2710acb", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 259491, "upload_time": "2019-08-13T15:56:01", "url": "https://files.pythonhosted.org/packages/9b/b3/36a0bd0e55dde42b38628a93ed4eb6063cdbc5306c9ddb06c76846904e66/pynorm-0.1.9.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "5ceecfe9f086a6e981876bd131e5e632", "sha256": "b101bc83f5677b761bbb90ec85b4801726380cea83bed59a923c13f3493f5639" }, "downloads": -1, "filename": "pynorm-0.1.12-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "5ceecfe9f086a6e981876bd131e5e632", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3.6.0", "size": 630877, "upload_time": "2019-09-17T20:21:54", "url": "https://files.pythonhosted.org/packages/94/2d/1f6de392f9a5a5144d896195564963d885525a427cae95e910796cca159e/pynorm-0.1.12-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8eb6620f33b49fad0795c8d02f7fc884", "sha256": "df8d77e52ab18be02839d3e9b8d8ea1a8b8bf4cd21ce8d98ba8eb8b78e174e88" }, "downloads": -1, "filename": "pynorm-0.1.12.tar.gz", "has_sig": false, "md5_digest": "8eb6620f33b49fad0795c8d02f7fc884", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6.0", "size": 521659, "upload_time": "2019-09-17T20:21:57", "url": "https://files.pythonhosted.org/packages/e3/76/572f23b50efd4864d4bda17a5679296878dce4f43658b320d9ac6ca8146c/pynorm-0.1.12.tar.gz" } ] }