{ "info": { "author": "Claudio Santini", "author_email": "hireclaudio@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Operating System :: OS Independent", "Programming Language :: Python :: 3" ], "description": "![Pampy in Star Wars](https://raw.githubusercontent.com/santinic/pampy/master/imgs/pampy.png \"Pampy in Star Wars\")\n\n# Pampy: Pattern Matching for Python\n[![License MIT](https://go-shields.herokuapp.com/license-MIT-blue.png)]()\n[![Travis-CI Status](https://api.travis-ci.org/santinic/pampy.svg?branch=master)](https://travis-ci.org/santinic/pampy)\n[![Coverage Status](https://coveralls.io/repos/github/santinic/pampy/badge.svg?branch=master)](https://coveralls.io/github/santinic/pampy?branch=master)\n[![PyPI version](https://badge.fury.io/py/pampy.svg)](https://badge.fury.io/py/pampy)\n\nPampy is pretty small (150 lines), reasonably fast, and often makes your code more readable\nand hence easier to reason about. [There is also a JavaScript version, called Pampy.js](https://github.com/santinic/pampy.js).\n\n\n \n\n\n## You can write many patterns\n\nPatterns are evaluated in the order they appear.\n\n\n \n\n\n\n## You can write Fibonacci\nThe operator _ means \"any other case I didn't think of\".\n\n```python\nfrom pampy import match, _\n\ndef fibonacci(n):\n return match(n,\n 1, 1,\n 2, 1,\n _, lambda x: fibonacci(x-1) + fibonacci(x-2)\n )\n```\n\n## You can write a Lisp calculator in 5 lines\n\n```python\nfrom pampy import match, REST, _\n\ndef lisp(exp):\n return match(exp,\n int, lambda x: x,\n callable, lambda x: x,\n (callable, REST), lambda f, rest: f(*map(lisp, rest)),\n tuple, lambda t: list(map(lisp, t)),\n )\n\nplus = lambda a, b: a + b\nminus = lambda a, b: a - b\nfrom functools import reduce\n\nlisp((plus, 1, 2)) \t# => 3\nlisp((plus, 1, (minus, 4, 2))) \t# => 3\nlisp((reduce, plus, (range, 10))) # => 45\n```\n\n## You can match so many things!\n\n```python\nmatch(x,\n 3, \"this matches the number 3\",\n\n int, \"matches any integer\",\n\n (str, int), lambda a, b: \"a tuple (a, b) you can use in a function\",\n\n [1, 2, _], \"any list of 3 elements that begins with [1, 2]\",\n\n {'x': _}, \"any dict with a key 'x' and any value associated\",\n\n _, \"anything else\"\n)\n```\n\n## You can match [HEAD, TAIL]\n\n```python\nfrom pampy import match, HEAD, TAIL, _\n\nx = [1, 2, 3]\n\nmatch(x, [1, TAIL], lambda t: t) # => [2, 3]\n\nmatch(x, [HEAD, TAIL], lambda h, t: (h, t)) # => (1, [2, 3])\n\n```\n`TAIL` and `REST` actually mean the same thing.\n\n## You can nest lists and tuples\n\n```python\nfrom pampy import match, _\n\nx = [1, [2, 3], 4]\n\nmatch(x, [1, [_, 3], _], lambda a, b: [1, [a, 3], b]) # => [1, [2, 3], 4]\n```\n\n## You can nest dicts. And you can use _ as key!\n\n```python\n\npet = { 'type': 'dog', 'details': { 'age': 3 } }\n\nmatch(pet, { 'details': { 'age': _ } }, lambda age: age) # => 3\n\nmatch(pet, { _ : { 'age': _ } }, lambda a, b: (a, b)) # => ('details', 3)\n```\n\nIt feels like putting multiple _ inside dicts shouldn't work. Isn't ordering in dicts not guaranteed ?\nBut it does because\n[in Python 3.7, dict maintains insertion key order by default](https://mail.python.org/pipermail/python-dev/2017-December/151283.html)\n\n## You can match class hierarchies\n\n```python\nclass Pet: pass\nclass Dog(Pet): pass\nclass Cat(Pet): pass\nclass Hamster(Pet): pass\n\ndef what_is(x):\n return match(x,\n Dog, \t\t'dog',\n Cat, \t\t'cat',\n Pet, \t\t'any other pet',\n _, \t\t'this is not a pet at all',\n )\n\nwhat_is(Cat()) # => 'cat'\nwhat_is(Dog()) # => 'dog'\nwhat_is(Hamster()) # => 'any other pet'\nwhat_is(Pet()) # => 'any other pet'\nwhat_is(42) # => 'this is not a pet at all'\n```\n\n## Using Dataclasses\nPampy supports Python 3.7 dataclasses. You can pass the operator `_` as arguments and it will match those fields.\n\n```python\n@dataclass\nclass Pet:\n name: str\n age: int\n\npet = Pet('rover', 7)\n\nmatch(pet, Pet('rover', _), lambda age: age) # => 7\nmatch(pet, Pet(_, 7), lambda name: name) # => 'rover'\nmatch(pet, Pet(_, _), lambda name, age: (name, age)) # => ('rover', 7)\n```\n\n## All the things you can match\n\nAs Pattern you can use any Python type, any class, or any Python value.\n\nThe operator `_` and built-in types like `int` or `str`, extract variables that are passed to functions.\n\nTypes and Classes are matched via `instanceof(value, pattern)`.\n\n`Iterable` Patterns match recursively through all their elements. The same goes for dictionaries.\n\n| Pattern Example | What it means | Matched Example | Arguments Passed to function | NOT Matched Example |\n| --------------- | --------------| --------------- | ----------------------------- | ------------------ |\n| `\"hello\"` | only the string `\"hello\"` matches | `\"hello\"` | nothing | any other value |\n| `None` | only `None` | `None` | nothing | any other value |\n| `int` | Any integer | `42` | `42` | any other value |\n| `float` | Any float number | `2.35` | `2.35` | any other value |\n| `str` | Any string | `\"hello\"` | `\"hello\"` | any other value |\n| `tuple` | Any tuple | `(1, 2)` | `(1, 2)` | any other value |\n| `list` | Any list | `[1, 2]` | `[1, 2]` | any other value |\n| `MyClass` | Any instance of MyClass. **And any object that extends MyClass.** | `MyClass()` | that instance | any other object |\n| `_` | Any object (even None) | | that value | |\n| `ANY` | The same as `_` | | that value | |\n| `(int, int)` | A tuple made of any two integers | `(1, 2)` | `1` and `2` | (True, False) |\n| `[1, 2, _]` | A list that starts with 1, 2 and ends with any value | `[1, 2, 3]` | `3` | `[1, 2, 3, 4]` |\n| `[1, 2, TAIL]` | A list that start with 1, 2 and ends with any sequence | `[1, 2, 3, 4]`| `[3, 4]` | `[1, 7, 7, 7]` |\n| `{'type':'dog', age: _ }` | Any dict with `type: \"dog\"` and with an age | `{\"type\":\"dog\", \"age\": 3}` | `3` | `{\"type\":\"cat\", \"age\":2}` |\n| `{'type':'dog', age: int }` | Any dict with `type: \"dog\"` and with an `int` age | `{\"type\":\"dog\", \"age\": 3}` | `3` | `{\"type\":\"dog\", \"age\":2.3}` |\n| `re.compile('(\\w+)-(\\w+)-cat$')` | Any string that matches that regular expression expr | `\"my-fuffy-cat\"` | `\"my\"` and `\"puffy\"` | `\"fuffy-dog\"` | \n| `Pet(name=_, age=7)` | Any Pet dataclass with `age == 7` | `Pet('rover', 7)` | `['rover']` | `Pet('rover', 8)` |\n\n## Using default\n\nBy default `match()` is strict. If no pattern matches, it raises a `MatchError`.\n\nYou can instead provide a fallback value using `default` to be used when nothing matches.\n\n```\n>>> match([1, 2], [1, 2, 3], \"whatever\")\nMatchError: '_' not provided. This case is not handled: [1, 2]\n\n>>> match([1, 2], [1, 2, 3], \"whatever\", default=False)\nFalse\n```\n\n## Using Regular Expressions\nPampy supports Python's Regex. You can pass a compiled regex as pattern, and Pampy is going to run `patter.search()`, and then pass to the action function the result of `.groups()`.\n\n```python \ndef what_is(pet):\n return match(pet,\n re.compile('(\\w+)-(\\w+)-cat$'), lambda name, my: 'cat '+name,\n re.compile('(\\w+)-(\\w+)-dog$'), lambda name, my: 'dog '+name,\n _, \"something else\"\n )\n\nwhat_is('fuffy-my-dog') # => 'dog fuffy'\nwhat_is('puffy-her-dog') # => 'dog puffy'\nwhat_is('carla-your-cat') # => 'cat carla'\nwhat_is('roger-my-hamster') # => 'something else'\n```\n\n## Install for Python3\n\nPampy works in Python >= 3.6 [Because dict matching can work only in the latest Pythons](https://mail.python.org/pipermail/python-dev/2017-December/151283.html).\n\nTo install it:\n\n```$ pip install pampy```\n\nor\n```$ pip3 install pampy```\n\n## If you really must to use Python2\nPampy is Python3-first, but you can use most of its features in Python2 via [this backport](https://pypi.org/project/backports.pampy/) by Manuel Barkhau:\n\n```pip install backports.pampy```\n\n```python\nfrom backports.pampy import match, HEAD, TAIL, _\n```\n\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/santinic/pampy", "keywords": "", "license": "", "maintainer": "", "maintainer_email": "", "name": "pampy", "package_url": "https://pypi.org/project/pampy/", "platform": "any", "project_url": "https://pypi.org/project/pampy/", "project_urls": { "Homepage": "https://github.com/santinic/pampy" }, "release_url": "https://pypi.org/project/pampy/0.2.1/", "requires_dist": null, "requires_python": ">3.6", "summary": "The Pattern Matching for Python you always dreamed of", "version": "0.2.1" }, "last_serial": 4631425, "releases": { "0.1.10": [ { "comment_text": "", "digests": { "md5": "a13cda9abc0726620727e0c93d51f981", "sha256": "581fa689c69169c289644f7b4c254eb19868084208d7b185f80ddf4cfeac7258" }, "downloads": -1, "filename": "pampy-0.1.10-py3-none-any.whl", "has_sig": false, "md5_digest": "a13cda9abc0726620727e0c93d51f981", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 12572, "upload_time": "2018-12-18T13:51:59", "url": "https://files.pythonhosted.org/packages/39/e7/ebdadb18296b21a6b360674c7862116fe6a9316df1b68208f02cbae1d374/pampy-0.1.10-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b022c5d01f08692ff8222779b404991", "sha256": "e938ff174a3953e2380cb1b2bc98ccc8a87094ae887f8357764be4e7e74770d1" }, "downloads": -1, "filename": "pampy-0.1.10.tar.gz", "has_sig": false, "md5_digest": "2b022c5d01f08692ff8222779b404991", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 10002, "upload_time": "2018-12-18T13:52:05", "url": "https://files.pythonhosted.org/packages/bc/0f/38aef1c37ebfe36bf9ce82156ff91201557c1ef477777bf35f50911a5764/pampy-0.1.10.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "c25df4bf8a2c75101a3938d533faefd7", "sha256": "d78cdb837c6e61d8e13d4c87797f056e566198ee52128458d066a6ddbac9fb12" }, "downloads": -1, "filename": "pampy-0.1.3-py3-none-any.whl", "has_sig": false, "md5_digest": "c25df4bf8a2c75101a3938d533faefd7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 10031, "upload_time": "2018-11-09T15:05:24", "url": "https://files.pythonhosted.org/packages/70/9e/3a8c3701d9be9c10fd4118327ac05a3d733d3779fd13b875dd189595a576/pampy-0.1.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b0123b6751f75cbe976c09a6afcdcf6", "sha256": "0d6e3222b7f7920b6237645d9255ab739059ccc2db24174bbe29eb00f6afc37d" }, "downloads": -1, "filename": "pampy-0.1.3.tar.gz", "has_sig": false, "md5_digest": "8b0123b6751f75cbe976c09a6afcdcf6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8510, "upload_time": "2018-11-09T15:05:26", "url": "https://files.pythonhosted.org/packages/c1/4b/5137d877316c9681140c764b2d74e701cc6d97f66ee7dc6a730304fdc3be/pampy-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "cc594ef8f9bf5f0964cbef7ac86ccd55", "sha256": "d65f4df8df79d98be55a8c761c829c600ec41b862969fcbf532dad71c48375f5" }, "downloads": -1, "filename": "pampy-0.1.4-py3-none-any.whl", "has_sig": false, "md5_digest": "cc594ef8f9bf5f0964cbef7ac86ccd55", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 10050, "upload_time": "2018-11-09T15:17:42", "url": "https://files.pythonhosted.org/packages/d3/32/8657593b93a73db3ebb4b5a8cfcbde4dabf26b6a45b65391879994c29f1b/pampy-0.1.4-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a701556fcdb5b35ab6106c4c149aa8e2", "sha256": "d859ac0e7f55868656d2844e1006161715bf5376bc0136605148637bef18bd6c" }, "downloads": -1, "filename": "pampy-0.1.4.tar.gz", "has_sig": false, "md5_digest": "a701556fcdb5b35ab6106c4c149aa8e2", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 8554, "upload_time": "2018-11-09T15:17:44", "url": "https://files.pythonhosted.org/packages/31/34/84fd3c6284499e97b867458ee4a1622125e15daebff3694fe282e97936ab/pampy-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "2b1d9ce40b18704195017fbb5632773e", "sha256": "03260af5447c3c0faae0473e0b144182087dfaec2613df9f4d07500185b434b4" }, "downloads": -1, "filename": "pampy-0.1.5-py3-none-any.whl", "has_sig": false, "md5_digest": "2b1d9ce40b18704195017fbb5632773e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 10153, "upload_time": "2018-11-09T15:30:23", "url": "https://files.pythonhosted.org/packages/09/cf/a2d2cb2b5ea7a96b3a10cd64a37e09ce775f8c521c5362c7aea25a0cbbda/pampy-0.1.5-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6e98d85ce980e8ee4e4e4d6759a21f04", "sha256": "4ec04f001ed768e1baba336d0374dd4ad9d4efe4442750e40238ffe6deefed16" }, "downloads": -1, "filename": "pampy-0.1.5.tar.gz", "has_sig": false, "md5_digest": "6e98d85ce980e8ee4e4e4d6759a21f04", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 8620, "upload_time": "2018-11-09T15:30:24", "url": "https://files.pythonhosted.org/packages/95/f5/320c0bc7b7c699385e956c6e423460a8061c4faf25b7f475fcb196dcad2f/pampy-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "cb543639463437f4d6aadc3cb47c823e", "sha256": "a7eec04a50e0b2c36ae08978b50ee940a3e555c69038a92037e28ba411bff0c3" }, "downloads": -1, "filename": "pampy-0.1.6-py3-none-any.whl", "has_sig": false, "md5_digest": "cb543639463437f4d6aadc3cb47c823e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 10344, "upload_time": "2018-11-10T12:48:58", "url": "https://files.pythonhosted.org/packages/dc/26/85fb62016d8d944334b19ee76af3e3d9efe9ba4817cd830a45ce51f78821/pampy-0.1.6-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f148ffb0b648a585070576e2947ea883", "sha256": "6b3312c56b1a93a7e03440ec2aaca2eda35aceb7c22d6e4e913935df5e8540cc" }, "downloads": -1, "filename": "pampy-0.1.6.tar.gz", "has_sig": false, "md5_digest": "f148ffb0b648a585070576e2947ea883", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 10689, "upload_time": "2018-11-10T12:49:00", "url": "https://files.pythonhosted.org/packages/2d/9d/718fb0f91e8b5b07eea5967ba219b11538d66d88aaf31de22c0f4f723721/pampy-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "76b313e7e17a2e341ded94238c18a733", "sha256": "ea07ae73e97d67cdee5b66ad181881c6870406d0e240ca1f79d19dc2de107700" }, "downloads": -1, "filename": "pampy-0.1.7-py3-none-any.whl", "has_sig": false, "md5_digest": "76b313e7e17a2e341ded94238c18a733", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 11807, "upload_time": "2018-11-11T12:50:15", "url": "https://files.pythonhosted.org/packages/68/a6/e3d25c08db5e6689b137bcf838cd26733afadbda54c15f4457f623f524e3/pampy-0.1.7-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1eae60218cd9c2147cb8b757e545c17c", "sha256": "1b9df1689fb82219955d3714cf1ed963931f0372dfff6f5f4f1668baac6b67ed" }, "downloads": -1, "filename": "pampy-0.1.7.tar.gz", "has_sig": false, "md5_digest": "1eae60218cd9c2147cb8b757e545c17c", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 11756, "upload_time": "2018-11-11T12:50:18", "url": "https://files.pythonhosted.org/packages/1f/c8/bf93326db83d4a1c26f8201c008ad74ec29ff7e9f921407bb2cbc3cb16ff/pampy-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "2154acbf4a7b37b18590d63f5d6ef0a0", "sha256": "6b17002576d2ce76ed4f4dce32110a04696671f390e103c934547649d74b0e3c" }, "downloads": -1, "filename": "pampy-0.1.8-py3-none-any.whl", "has_sig": false, "md5_digest": "2154acbf4a7b37b18590d63f5d6ef0a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 11839, "upload_time": "2018-11-11T13:22:06", "url": "https://files.pythonhosted.org/packages/80/01/a9167fdabb48949a3a91ee5df04d1eb4d37d3ae7a41c37cc716440e198cc/pampy-0.1.8-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2132df3d90e6d193dae823feb0903ad9", "sha256": "0c37e31a265aa34bb24819008be7fe5fd332c801b1358cd32ab17b1017c96b4d" }, "downloads": -1, "filename": "pampy-0.1.8.tar.gz", "has_sig": false, "md5_digest": "2132df3d90e6d193dae823feb0903ad9", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 11796, "upload_time": "2018-11-11T13:22:10", "url": "https://files.pythonhosted.org/packages/32/fe/ba3d8dcd603c40037983694adba2b434e71a2619e39e9c725b4d726d2233/pampy-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "87bbfa21847502a12d0357e69dc4d884", "sha256": "9b78e922524095b6c5c1e2c04f954a154d5068c59069bcaac5debd4e4db904e4" }, "downloads": -1, "filename": "pampy-0.1.9-py3-none-any.whl", "has_sig": false, "md5_digest": "87bbfa21847502a12d0357e69dc4d884", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 11965, "upload_time": "2018-11-28T16:41:31", "url": "https://files.pythonhosted.org/packages/73/c0/4ac8cc2374622271965b7f5946e508834b49f9fe88012c824fa7ed2fd4eb/pampy-0.1.9-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7c668a4c90949b0b1404e0742580467c", "sha256": "e2304b23ef14e35d89e8c055af0e2803e67843a45e0b9e58338b2dfb66092feb" }, "downloads": -1, "filename": "pampy-0.1.9.tar.gz", "has_sig": false, "md5_digest": "7c668a4c90949b0b1404e0742580467c", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 9430, "upload_time": "2018-11-28T16:41:39", "url": "https://files.pythonhosted.org/packages/f5/98/e5bb822f4324cb5b93235bb63c616560311602ddb3261f3b028169599e2d/pampy-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "9c05304657a9229be75a17d917c7a765", "sha256": "b0e3ceb838de09341f54525433bcb2652f2ec45d81f830884f82b8d495d58f20" }, "downloads": -1, "filename": "pampy-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "9c05304657a9229be75a17d917c7a765", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 13346, "upload_time": "2018-12-24T13:52:31", "url": "https://files.pythonhosted.org/packages/c1/62/19363b756e7a79e7ff373487a9448e0190defe831b185c3bf885f330b485/pampy-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "4952ef451a7054ed73273c3ee1721594", "sha256": "a97ba2628a8c2aabaefdd48a8e362e80450e567847cb870f92ee43e9728a4cfd" }, "downloads": -1, "filename": "pampy-0.2.0.tar.gz", "has_sig": false, "md5_digest": "4952ef451a7054ed73273c3ee1721594", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 10440, "upload_time": "2018-12-24T13:52:33", "url": "https://files.pythonhosted.org/packages/49/e2/63960537f1d8ca956a9b5052e2ba7203ac994980cc28a6d677c02048811e/pampy-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "6b3e79b41b6bb05755cdba098d74c0c4", "sha256": "d373f4367abe6ce85ed1b01d151d2d373057ac91f309f200afacfbcb88e792a5" }, "downloads": -1, "filename": "pampy-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6b3e79b41b6bb05755cdba098d74c0c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 13328, "upload_time": "2018-12-24T14:08:38", "url": "https://files.pythonhosted.org/packages/33/bd/7f76ecd943b70da0e3fa3c6a4f274d545c5cffabb65da47305e5c958fcc4/pampy-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "261c6ffdabe1177376c09ca18328a0fd", "sha256": "42922abf2902f06cf4cff65409aa03e773fd15e3540fb24719207e3927a3dced" }, "downloads": -1, "filename": "pampy-0.2.1.tar.gz", "has_sig": false, "md5_digest": "261c6ffdabe1177376c09ca18328a0fd", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 10438, "upload_time": "2018-12-24T14:08:39", "url": "https://files.pythonhosted.org/packages/35/00/e2d1f884a5ccad04c03fed6ba538bc41ba9883c5d6dbe16d52a730d3fe48/pampy-0.2.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6b3e79b41b6bb05755cdba098d74c0c4", "sha256": "d373f4367abe6ce85ed1b01d151d2d373057ac91f309f200afacfbcb88e792a5" }, "downloads": -1, "filename": "pampy-0.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "6b3e79b41b6bb05755cdba098d74c0c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">3.6", "size": 13328, "upload_time": "2018-12-24T14:08:38", "url": "https://files.pythonhosted.org/packages/33/bd/7f76ecd943b70da0e3fa3c6a4f274d545c5cffabb65da47305e5c958fcc4/pampy-0.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "261c6ffdabe1177376c09ca18328a0fd", "sha256": "42922abf2902f06cf4cff65409aa03e773fd15e3540fb24719207e3927a3dced" }, "downloads": -1, "filename": "pampy-0.2.1.tar.gz", "has_sig": false, "md5_digest": "261c6ffdabe1177376c09ca18328a0fd", "packagetype": "sdist", "python_version": "source", "requires_python": ">3.6", "size": 10438, "upload_time": "2018-12-24T14:08:39", "url": "https://files.pythonhosted.org/packages/35/00/e2d1f884a5ccad04c03fed6ba538bc41ba9883c5d6dbe16d52a730d3fe48/pampy-0.2.1.tar.gz" } ] }