{ "info": { "author": "Keming Yang", "author_email": "kemingy94@gmail.com", "bugtrack_url": null, "classifiers": [ "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Text Processing" ], "description": "# Plane\n\n[![Build Status](https://travis-ci.org/kemingy/Plane.svg?branch=master)](https://travis-ci.org/kemingy/Plane)\n\n> **Plane** is a tool for shaping wood using muscle power to force the cutting blade over the wood surface. \n> *from [Wikipedia](https://en.wikipedia.org/wiki/Plane_(tool))*\n\n![plane(tool) from wikipedia](https://upload.wikimedia.org/wikipedia/commons/e/e3/Kanna2.gif)\n\nThis package is used for extracting or replacing specific parts from text, like URL, Email, HTML tags, telephone numbers and so on. Also supports punctuation normalization and removement.\n\nSee the full [Documents](https://kemingy.github.io/Plane/).\n\n## Install\n\nPython **3.x** only.\n\n### pip\n\n```python\npip install plane\n```\n\n### Install from source\n\n```sh\npython setup.py install\n```\n\n## Features\n\n* no other dependencies\n* build-in regex patterns: `plane.pattern.Regex`\n* custom regex patterns\n* pattern combination\n* extract, replace patterns\n* segment sentence\n* chain function calls: `plane.plane.Plane`\n* pipeline: `plane.Pipeline`\n\n## Usage\n\n### Quick start\n\nUse regex to `extract` or `replace`:\n\n```python\nfrom plane import EMAIL, extract, replace\ntext = 'fake@no.com & fakefake@nothing.com'\n\nemails = extract(text, EMAIL) # this return a generator object\nfor e in emails:\n print(e)\n\n>>> Token(name='Email', value='fake@no.com', start=0, end=11)\n>>> Token(name='Email', value='fakefake@nothing.com', start=14, end=34)\n\nprint(EMAIL)\n\n>>> Regex(name='Email', pattern='([a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\\\.[a-zA-Z0-9-]+)', repl='')\n\nreplace(text, EMAIL) # replace(text, Regex, repl), if repl is not provided, Regex.repl will be used\n\n>>> ' & '\n\nreplace(text, EMAIL, '')\n\n>>> ' & '\n```\n\n### pattern\n\n`Regex` is a namedtuple with 3 items:\n\n* `name`\n* `pattern`: Regular Expression\n* `repl`: replacement tag, this will replace matched regex when using `replace` function\n\n```python\n# create new pattern\nfrom plane import build_new_regex\ncustom_regex = build_new_regex('my_regex', r'(\\d{4})', '')\n```\n\nAlso, you can build new pattern from default patterns.\n\n**Attention**: this should only be used for language range.\n\n```python\nfrom plane import extract, build_new_regex, CHINESE_WORDS\nASCII = build_new_regex('ascii', r'[a-zA-Z0-9]+', ' ')\nWORDS = ASCII + CHINESE_WORDS\nprint(WORDS)\n\n>>> Regex(name='ascii_Chinese_words', pattern='[a-zA-Z0-9]+|[\\\\U00004E00-\\\\U00009FFF\\\\U00003400-\\\\U00004DBF\\\\U00020000-\\\\U0002A6DF\\\\U0002A700-\\\\U0002B73F\\\\U0002B740-\\\\U0002B81F\\\\U0002B820-\\\\U0002CEAF\\\\U0002CEB0-\\\\U0002EBEF]+', repl=' ')\n\ntext = \"\u81ea\u7136\u8bed\u8a00\u5904\u7406\u592a\u96be\u4e86\uff01who can help me? (\u256f\u2594\ud83d\udd3a\u2594)\u256f\"\nprint(' '.join([t.value for t in list(extract(text, WORDS))]))\n\n>>> \"\u81ea\u7136\u8bed\u8a00\u5904\u7406\u592a\u96be\u4e86 who can help me\"\n\nfrom plane import CHINESE, ENGLISH, NUMBER\nCN_EN_NUM = sum([CHINESE, ENGLISH, NUMBER])\ntext = \"\u4f5b\u662f\u865a\u540d\uff0c\u9053\u4ea6\u5984\u7acb\u3002\u090f\u0935\u0902 \u092e\u092f\u093e \u0936\u094d\u0930\u0941\u0924\u092e\u094d\u0964 1999 is not the end of the world. \"\nprint(' '.join([t.value for t in extract(text, CN_EN_NUM)]))\n\n>>> \"\u4f5b\u662f\u865a\u540d\uff0c\u9053\u4ea6\u5984\u7acb\u3002 1999 is not the end of the world.\"\n```\n\nDefault Regex: [Details](https://github.com/Momingcoder/Plane/blob/master/plane/pattern.py)\n\n* `URL`: only ASCII\n* `EMAIL`: local-part@domain\n* `TELEPHONE`: like xxx-xxxx-xxxx\n* `SPACE`: ` `, `\\t`, `\\n`, `\\r`, `\\f`, `\\v`\n* `HTML`: HTML tags, Script part and CSS part\n* `ASCII_WORD`: English word, numbers, `` and so on.\n* `CHINESE`: all Chinese characters (only Han and punctuations)\n* `CJK`: all Chinese, Japanese, Korean(CJK) characters and punctuations\n* `THAI`: all Thai and punctuations\n* `VIETNAMESE`: all Vietnames and punctuations\n* `ENGLISH`: all English chars and punctuations\n* `NUMBER`: 0-9\n\nRegex name | replace\n-----------|---------\nURL | `''`\nEMAIL | `''`\nTELEPHONE | `''`\nSPACE | `' '`\nHTML | `' '`\nASCII_WORD | `' '`\nCHINESE | `' '`\nCJK | `' '`\n\n\n### segment\n\n`segment` can be used to segment sentence, English and Numbers like 'PS4' will be keeped and others like Chinese '\u4e2d\u6587' will be split to single word format `['\u4e2d', '\u6587']`.\n\n```python\nfrom plane import segment\nsegment('\u4f60\u770b\u8d77\u6765guaiguai\u7684\u3002')\n>>> ['\u4f60', '\u770b', '\u8d77', '\u6765', 'guaiguai', '\u7684', '\u3002', '']\n```\n\n### punctuation\n\n`punc.remove` will replace all unicode punctuations to `' '` or something you send to this function as paramter `repl`. `punc.normalize` will normalize some Unicode punctuations to English punctuations.\n\n**Attention**: '+', '^', '$', '~' and some chars are not punctuation.\n\n```python\nfrom plane import punc\n\ntext = 'Hello world!'\npunc.remove(text)\n\n>>> 'Hello world '\n\n# replace punctuation with special string\npunc.remove(text, '

')\n\n>>> 'Hello world

'\n\n# normalize punctuations\npunc.normalize('\u4f60\u8bfb\u8fc7\u90a3\u672c\u300a\u8fb9\u57ce\u300b\u5417\uff1f\u4ec0\u4e48\u7f16\u7a0b\uff1f\uff01\u4eba\u751f\u82e6\u77ed\uff0c\u6211\u7528 Python\u3002')\n\n>>> '\u4f60\u8bfb\u8fc7\u90a3\u672c(\u8fb9\u57ce)\u5417?\u4ec0\u4e48\u7f16\u7a0b?!\u4eba\u751f\u82e6\u77ed,\u6211\u7528 Python.'\n```\n\n### Chain function\n\n`Plane` contains `extract`, `replace`, `segment` and `punc.remove`, `punc.normalize`, and these methods can be called in chain. Since `segment` returns list, it can only be called in the end of the chain.\n\n`Plane.text` saves the result of processed text and `Plane.values` saves the result of extracted strings.\n\n```python\nfrom plane import Plane\nfrom plane.pattern import EMAIL\n\np = Plane()\np.update('My email is my@email.com.').replace(EMAIL, '').text # update() will init Plane.text and Plane.values\n\n>>> 'My email is .'\n\np.update('My email is my@email.com.').replace(EMAIL).segment()\n\n>>> ['My', 'email', 'is', '', '.']\n\np.update('My email is my@email.com.').extract(EMAIL).values\n\n>>> [Token(name='Email', value='my@email.com', start=12, end=24)]\n```\n\n### Pipeline\n\nYou can use `Pipeline` if you like. \n\n`segment` and `extract` can only present in the end.\n\n```python\nfrom plane import Pipeline, replace, segment\nfrom plane.pattern import URL\n\npipe = Pipeline()\npipe.add(replace, URL, '')\npipe.add(segment)\npipe('http://www.guokr.com is online.')\n\n>>> ['is', 'online', '.']\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/kemingy/Plane", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "plane", "package_url": "https://pypi.org/project/plane/", "platform": "", "project_url": "https://pypi.org/project/plane/", "project_urls": { "Homepage": "https://github.com/kemingy/Plane" }, "release_url": "https://pypi.org/project/plane/0.2.0/", "requires_dist": null, "requires_python": ">=3", "summary": "A lib for text preprocessing", "version": "0.2.0" }, "last_serial": 5180831, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "e89de7ec1855dbfdfd646096a4709faf", "sha256": "3c357bef9c6633cc0c3926c2c07af8241843c82d4287b166f6bfaa8608d0a27b" }, "downloads": -1, "filename": "plane-0.0.1-py3.5.egg", "has_sig": false, "md5_digest": "e89de7ec1855dbfdfd646096a4709faf", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 1870, "upload_time": "2018-02-27T09:25:04", "url": "https://files.pythonhosted.org/packages/e8/93/23765335e5b5764d087e782581824d50ca700a0c84a0e00b7c6e93803999/plane-0.0.1-py3.5.egg" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "90f24c48f1f7d579dd0d08949a489620", "sha256": "432267e9e9a395d99d4c90b57fce93502b336cd231d4416d1fa9409db35e4cb4" }, "downloads": -1, "filename": "plane-0.0.2-py3.5.egg", "has_sig": false, "md5_digest": "90f24c48f1f7d579dd0d08949a489620", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 12244, "upload_time": "2018-03-09T15:07:21", "url": "https://files.pythonhosted.org/packages/f6/35/471cfe5ab9faa7ec552a6163614163c5788b06bc4ef1383a26b6d0ee97d4/plane-0.0.2-py3.5.egg" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "76b3066275b92a45b765d6f059340e63", "sha256": "d1ce979ba90128e6f47a38b1f1663e11626fa74dd5d378419415909b916ba788" }, "downloads": -1, "filename": "plane-0.0.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "76b3066275b92a45b765d6f059340e63", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 8051, "upload_time": "2018-03-10T03:51:40", "url": "https://files.pythonhosted.org/packages/20/b5/2cd883533f628f8b5af7f7d265afbedf9ce3b2ce5ba51bb1b663342ef38f/plane-0.0.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "519f004a4bad534218b76d6d9d586f6c", "sha256": "a03f055cc81addab33103886c66dce3a5d8e7f2eda955952e0c8b7e23ca17b1f" }, "downloads": -1, "filename": "plane-0.0.3-py3.5.egg", "has_sig": false, "md5_digest": "519f004a4bad534218b76d6d9d586f6c", "packagetype": "bdist_egg", "python_version": "3.5", "requires_python": null, "size": 12313, "upload_time": "2018-03-09T16:28:06", "url": "https://files.pythonhosted.org/packages/51/11/e697e024192757edc8b45e95137c36830f8b5f38ea417bc5c04f2ee9d415/plane-0.0.3-py3.5.egg" } ], "0.0.4": [ { "comment_text": "", "digests": { "md5": "7235eed3cdfb6e900149a33061543207", "sha256": "49dd00e57e6d386e1789c4b8bd553f9857a74cae7456b0487a64ed8c78b4c10a" }, "downloads": -1, "filename": "plane-0.0.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7235eed3cdfb6e900149a33061543207", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8298, "upload_time": "2018-04-10T09:52:44", "url": "https://files.pythonhosted.org/packages/12/cd/4ee4ed2254091ae1b3b5b5aa18fca8b42794f036f7bf0e59ecfa8a80f3dd/plane-0.0.4-py2.py3-none-any.whl" } ], "0.0.5": [ { "comment_text": "", "digests": { "md5": "207479f32dba0a56b9f3fd3d2bcdc4b0", "sha256": "7e3bf625fde625ff54cb48295b08ce985130be1d8f288860f50ac19ad64be3aa" }, "downloads": -1, "filename": "plane-0.0.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "207479f32dba0a56b9f3fd3d2bcdc4b0", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8633, "upload_time": "2018-04-12T06:45:10", "url": "https://files.pythonhosted.org/packages/e0/1d/a6828049979c0f008009bc8e109ffd3b7d3d4bfcb3b29983bc68a3e3c072/plane-0.0.5-py2.py3-none-any.whl" } ], "0.0.6": [ { "comment_text": "", "digests": { "md5": "16092827bc5da0866c4bc41ed899d3f3", "sha256": "c8a84ed2b09258caa1b428b195b053c87d58734bee03a3666e05f469eefbc9dc" }, "downloads": -1, "filename": "plane-0.0.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "16092827bc5da0866c4bc41ed899d3f3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8729, "upload_time": "2018-04-14T09:28:13", "url": "https://files.pythonhosted.org/packages/c8/58/5edf433f8186800d312ec3194f5409f71b799b72fadbf5fdaafc0f9aa026/plane-0.0.6-py2.py3-none-any.whl" } ], "0.0.7": [ { "comment_text": "", "digests": { "md5": "4c7d32a071dd2ccf06e83666a161c408", "sha256": "ecc4709ae45c5b5a6e589f2b07081b785f0bcd8184c5dcbde2e6d522fe9663c0" }, "downloads": -1, "filename": "plane-0.0.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4c7d32a071dd2ccf06e83666a161c408", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8721, "upload_time": "2018-04-16T02:04:24", "url": "https://files.pythonhosted.org/packages/74/d6/834aac7dc5fed5c1395c972bd48e6ecce1383301cf758a2eccc7c92ad07e/plane-0.0.7-py2.py3-none-any.whl" } ], "0.0.8": [ { "comment_text": "", "digests": { "md5": "f92d5b458c8b10a5524ae0eea94f83a4", "sha256": "8a97994606e64c0bf4ce5193ed348b1175a4530c37355cbb4ab8de2afdaa3b63" }, "downloads": -1, "filename": "plane-0.0.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f92d5b458c8b10a5524ae0eea94f83a4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8786, "upload_time": "2018-04-16T07:23:25", "url": "https://files.pythonhosted.org/packages/be/12/8b621d540533b25202707bd77a688c701db89191efbf44e373593d283ba3/plane-0.0.8-py2.py3-none-any.whl" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "0aedd09919992b81ee74f8794236eaed", "sha256": "cdcb215331b05779c2b02d6e6bea75ce5429176f7e936564e935378bc736387e" }, "downloads": -1, "filename": "plane-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "0aedd09919992b81ee74f8794236eaed", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8184, "upload_time": "2018-05-14T09:43:24", "url": "https://files.pythonhosted.org/packages/36/0d/a6c9f038ba689b2282c88194836f65bfe5f669b560da488414227179061a/plane-0.1.0-py2.py3-none-any.whl" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "e49fb346ee0625ebb1265e6862a386bc", "sha256": "62fdbdaab40679734966ed87e0f0c594d782c1cea3614d3107e7b6b527010c3c" }, "downloads": -1, "filename": "plane-0.1.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "e49fb346ee0625ebb1265e6862a386bc", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 9202, "upload_time": "2018-07-24T11:49:40", "url": "https://files.pythonhosted.org/packages/02/62/f03b706a87148ac604782e3a3fb4a3abd02df653c8e3ae5a2643c90f8931/plane-0.1.1-py2.py3-none-any.whl" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "fbe8e5505e068104f555ad29d395daa9", "sha256": "2489fa0d2ff8ddaa0a72eea1d751200f2520c3e85c3fdd1cf9d09e6b440a73a4" }, "downloads": -1, "filename": "plane-0.1.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "fbe8e5505e068104f555ad29d395daa9", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8822, "upload_time": "2018-12-29T06:50:14", "url": "https://files.pythonhosted.org/packages/f6/1b/2fffc1775e8c4e1464372c88b213e6146a61d5f3c19b7b69dc7843a3cd39/plane-0.1.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8b324f1fee94143a219654e7d72a2df3", "sha256": "baa4bd18d63b13abf06087be3866f85811e83fb1c7cb8fd11a5dca66c8290100" }, "downloads": -1, "filename": "plane-0.1.2.tar.gz", "has_sig": false, "md5_digest": "8b324f1fee94143a219654e7d72a2df3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8908, "upload_time": "2018-12-29T06:50:05", "url": "https://files.pythonhosted.org/packages/a8/22/f801f5dfa656059028ccd8e3a2478dbed06529268ea76e931b8dd24964c0/plane-0.1.2.tar.gz" } ], "0.1.3": [ { "comment_text": "", "digests": { "md5": "f5c1cf4231f34cf4a84e7bcc6b3054b1", "sha256": "73e98c3c9cfce7506a87fa4b511a997698e1a3f9afd86d5f32e6a2e35b47a65f" }, "downloads": -1, "filename": "plane-0.1.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "f5c1cf4231f34cf4a84e7bcc6b3054b1", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8838, "upload_time": "2018-12-29T06:53:35", "url": "https://files.pythonhosted.org/packages/b3/c6/d29a2a23e3033003a6194308c074acb2317772a0de32c3177422830ca8b4/plane-0.1.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "cde46eddb366dd7d89cf47c10510ba6e", "sha256": "3719518cfee0d6a61627d59f4283c212880b1da6f371dd9d83c0c99ba4c7b9da" }, "downloads": -1, "filename": "plane-0.1.3.tar.gz", "has_sig": false, "md5_digest": "cde46eddb366dd7d89cf47c10510ba6e", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 8977, "upload_time": "2018-12-29T06:53:36", "url": "https://files.pythonhosted.org/packages/fd/46/7e51f98882001bf02788911df7b41866da58412df2d317808cfcf84563b1/plane-0.1.3.tar.gz" } ], "0.1.4": [ { "comment_text": "", "digests": { "md5": "42b962fb4a9a2fb36926af2d3c166ca7", "sha256": "791d191227f2ea15e5a259612c7431787c2ce29ca1ae460707b60a453f3b09f9" }, "downloads": -1, "filename": "plane-0.1.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "42b962fb4a9a2fb36926af2d3c166ca7", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8967, "upload_time": "2018-12-29T09:19:46", "url": "https://files.pythonhosted.org/packages/e0/d6/9e4a6000232d55934b3022bf316779fd8a53568c094618d3b9c755212b31/plane-0.1.4-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "d103662c6d222ca4f9d0f9ecaa2a1342", "sha256": "ec56be799e034f8c4f5ad965283d22cf21dfe8767ea9632c9579dae09dd78dc9" }, "downloads": -1, "filename": "plane-0.1.4.tar.gz", "has_sig": false, "md5_digest": "d103662c6d222ca4f9d0f9ecaa2a1342", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 9226, "upload_time": "2018-12-29T09:19:47", "url": "https://files.pythonhosted.org/packages/60/83/a4bc5af2338362d42ac3e3dd48ef83ccc0f4d5e2346a59e2da16586db743/plane-0.1.4.tar.gz" } ], "0.1.5": [ { "comment_text": "", "digests": { "md5": "7a756a1adc87efcd3c2fadbb8a43fa6e", "sha256": "59a1cac4875d5634538671c088ebe7e79ab949d8e8e3e8a0147cf0cb33dade2b" }, "downloads": -1, "filename": "plane-0.1.5-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "7a756a1adc87efcd3c2fadbb8a43fa6e", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 8769, "upload_time": "2019-02-13T03:02:58", "url": "https://files.pythonhosted.org/packages/5c/06/0d82e6a2db87d79ab2adbbe874a3dc7c316362f19e9151863bb403b3eadd/plane-0.1.5-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2fd9e15dc4bcff0b571a7e51c0f23de7", "sha256": "7c4f7715b1de5621342c271ede5295b0f3945bacd193f84119c0cbf2296f096f" }, "downloads": -1, "filename": "plane-0.1.5.tar.gz", "has_sig": false, "md5_digest": "2fd9e15dc4bcff0b571a7e51c0f23de7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 10626, "upload_time": "2019-02-13T03:03:00", "url": "https://files.pythonhosted.org/packages/a6/0a/b1ccbb587a9e440d6622e132c06b3607e924b34689510629f97a10e38b0d/plane-0.1.5.tar.gz" } ], "0.1.6": [ { "comment_text": "", "digests": { "md5": "12ed7b283147ea53da39e165a98df496", "sha256": "3e0fa68b7314d22846b202ad30288cef9499517dd2331e8a35730c027d1e4e6e" }, "downloads": -1, "filename": "plane-0.1.6-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "12ed7b283147ea53da39e165a98df496", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 9458, "upload_time": "2019-03-04T07:45:29", "url": "https://files.pythonhosted.org/packages/ee/72/6fead7fe0b604a6ddd4d4fee5b5b39a10d95b2cce13bff823f99e246cfe0/plane-0.1.6-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0ea1fba3d1aab85407db6cf8dab8f323", "sha256": "f607b340ed75aa950c50376628d7c8234e6d91b169311aa42c6c34c1f071d084" }, "downloads": -1, "filename": "plane-0.1.6.tar.gz", "has_sig": false, "md5_digest": "0ea1fba3d1aab85407db6cf8dab8f323", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 11376, "upload_time": "2019-03-04T07:45:31", "url": "https://files.pythonhosted.org/packages/76/fb/fa950f8e179e52814d5f092793f112a92031f24101727528ab2e970676f3/plane-0.1.6.tar.gz" } ], "0.1.7": [ { "comment_text": "", "digests": { "md5": "d6834515d3f58b3f1d14e9d95f5a10fd", "sha256": "106db76a2a328bc1b2fe3099373d5a8bf3c487659bf9415edba3d54b99eef4dc" }, "downloads": -1, "filename": "plane-0.1.7-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d6834515d3f58b3f1d14e9d95f5a10fd", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 10018, "upload_time": "2019-03-05T08:58:36", "url": "https://files.pythonhosted.org/packages/16/b7/d63da0edfb9b800c80e385a992f54ff79c0b67fb1bbd857f3a802dae6dce/plane-0.1.7-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "350c8e9806bc6f7257c7b8b47c38278d", "sha256": "90034252f603fc476939733bd3a98eaeef62dc700d75d42340ecf6cf89740a4c" }, "downloads": -1, "filename": "plane-0.1.7.tar.gz", "has_sig": false, "md5_digest": "350c8e9806bc6f7257c7b8b47c38278d", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12130, "upload_time": "2019-03-05T08:58:38", "url": "https://files.pythonhosted.org/packages/a2/f5/b5e4e85439514e5723df2cdbb020f7338187e98aed6defa7f513e12478d7/plane-0.1.7.tar.gz" } ], "0.1.8": [ { "comment_text": "", "digests": { "md5": "9352bc7850e1183977ba695b5d5340e4", "sha256": "e1e4192e408195a8e898b08030a7069363719dd73b385da686ad6662801d10b4" }, "downloads": -1, "filename": "plane-0.1.8-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "9352bc7850e1183977ba695b5d5340e4", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 10235, "upload_time": "2019-03-05T11:55:16", "url": "https://files.pythonhosted.org/packages/44/d8/29e416103ee2d0d061bf2cb2f71ca3ea6b806c00b0989b800ce34c1a3dba/plane-0.1.8-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "81df211f6a5cd504dfc59eadf8598d48", "sha256": "704eaf64059f3aff391dc53cfa39593e23fabdde41b2de203a4aea0251ebb9fc" }, "downloads": -1, "filename": "plane-0.1.8.tar.gz", "has_sig": false, "md5_digest": "81df211f6a5cd504dfc59eadf8598d48", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12382, "upload_time": "2019-03-05T11:55:18", "url": "https://files.pythonhosted.org/packages/e0/d8/83d8240f9a7c70ffa4c9b09011cc7342ab601376e8de7a4ddcb359fbe4f6/plane-0.1.8.tar.gz" } ], "0.1.9": [ { "comment_text": "", "digests": { "md5": "1aed75c969d919592d12afea3e4085de", "sha256": "9b9e59aaf7c27255df87739286bf7ace923dcbe174ab64a42def31d0b448e90a" }, "downloads": -1, "filename": "plane-0.1.9-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "1aed75c969d919592d12afea3e4085de", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 10352, "upload_time": "2019-04-12T11:27:37", "url": "https://files.pythonhosted.org/packages/1e/0a/069d2b649ba489330324a287c658369ba24106674a8499fa61ff4a081fc0/plane-0.1.9-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "41f245bea50656f992a3c62dd59f53fc", "sha256": "52780b57e2687adaebde1dbf331491b5d4b071c4e61726cbbf452547f4ec85ce" }, "downloads": -1, "filename": "plane-0.1.9.tar.gz", "has_sig": false, "md5_digest": "41f245bea50656f992a3c62dd59f53fc", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12522, "upload_time": "2019-04-12T11:27:39", "url": "https://files.pythonhosted.org/packages/5f/b2/6497ba55eec5e5cd5aea971ce4a640e05b979d643ae2d713cd3f7744f1d5/plane-0.1.9.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "43afc3e963dda73c0cb28518d060f03c", "sha256": "dc9c6d014738f2ed21f909cf563c4c3225cc7511189b921bf60d7a9dfdd227a0" }, "downloads": -1, "filename": "plane-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43afc3e963dda73c0cb28518d060f03c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 10421, "upload_time": "2019-04-24T07:50:31", "url": "https://files.pythonhosted.org/packages/40/d6/0eabf619f7f143465bf1d6918467201c10e3a6e0d461e2a44ae8dcc690ba/plane-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47234b1e6530c01182f73b2353e6dc9f", "sha256": "5420d441aec1d7cd6b7bc64d24f84d9f1dbd1a5921f633ccff8dafb7e6e4e90c" }, "downloads": -1, "filename": "plane-0.2.0.tar.gz", "has_sig": false, "md5_digest": "47234b1e6530c01182f73b2353e6dc9f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12748, "upload_time": "2019-04-24T07:50:32", "url": "https://files.pythonhosted.org/packages/ab/b8/6984ed8fe1663201c1973babc3d7ae6d11dce7641a734e44257f204659a4/plane-0.2.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "43afc3e963dda73c0cb28518d060f03c", "sha256": "dc9c6d014738f2ed21f909cf563c4c3225cc7511189b921bf60d7a9dfdd227a0" }, "downloads": -1, "filename": "plane-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "43afc3e963dda73c0cb28518d060f03c", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": ">=3", "size": 10421, "upload_time": "2019-04-24T07:50:31", "url": "https://files.pythonhosted.org/packages/40/d6/0eabf619f7f143465bf1d6918467201c10e3a6e0d461e2a44ae8dcc690ba/plane-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "47234b1e6530c01182f73b2353e6dc9f", "sha256": "5420d441aec1d7cd6b7bc64d24f84d9f1dbd1a5921f633ccff8dafb7e6e4e90c" }, "downloads": -1, "filename": "plane-0.2.0.tar.gz", "has_sig": false, "md5_digest": "47234b1e6530c01182f73b2353e6dc9f", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3", "size": 12748, "upload_time": "2019-04-24T07:50:32", "url": "https://files.pythonhosted.org/packages/ab/b8/6984ed8fe1663201c1973babc3d7ae6d11dce7641a734e44257f204659a4/plane-0.2.0.tar.gz" } ] }