{ "info": { "author": "Exahilosys", "author_email": "exahilosys@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: English", "Operating System :: OS Independent", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Libraries :: Python Modules", "Topic :: Utilities" ], "description": "## Installing\n\n```\npython3 -m pip install stroke\n```\n\nUseful for creating a simple command based interface\n```python\nimport stroke\n\ncommands = stroke.State()\n\n# create command\n@commands.sub('echo')\ndef commands_0(content):\n\n print(content)\n\n# this is a subcommand\n@commands_0.sub('loud')\ndef commands_0_0(content):\n\n content = content.upper()\n\n print(content)\n\n# another subcommand with aliases\n@commands_0.sub('pretty', 'aesthetic')\ndef commands_0_1(content):\n\n content = ' '.join(iter(content))\n\n print(content)\n\ndef main(content):\n\n # analyse into names separated by .\n # anything after a space is the argument\n # use the names to find the invoke\n # KeyError will be raised on invalid trail\n (names, argument, invoke) = commands.analyse(content)\n\n invoke(argument)\n\nmain('echo marco') # not polo\n\nmain('echo.loud whoa') # > WHOA\n\nmain('echo.aesthetic fancy words') # chill vibes\n```\n\nUseful for parsing arguments into parts\n```python\nimport stroke\n\ncommands = stroke.State()\n\nfigure_0 = {\n '-and': 'int'\n}\n\n@commands.sub('add')\ndef commands_0(content):\n\n # list of (flag, value)\n arguments = stroke.craft(figure_0, content)\n\n value = 0\n\n # flag is always -and\n for (flag, argument) in arguments:\n\n value += int(argument)\n\n print('result', value)\n\nfigure_1 = {\n '-upper': 'numerator',\n '-lower': 'denominator'\n}\n\n@commands.sub('div')\ndef commands_1(content):\n\n # same thing\n arguments = stroke.craft(figure_1, content)\n\n # ignore multiple flags\n arguments = dict(arguments)\n\n # we need every flag for this one\n values = (arguments[key] for key in figure_1)\n\n # convert and unpack\n (upper, lower) = map(int, values)\n\n # handle errors on demand\n value = upper / lower\n\n print('result', value)\n\nfigure_2 = {\n '-and': {\n '-op': 'name',\n '-co': 'args'\n }\n}\n\n@commands.sub('calc')\ndef commands_2(content):\n\n # this is actually a generator\n arguments = stroke.craft(figure_2, content)\n\n # here, argument is also one\n for (flag, argument) in arguments:\n\n # we only need one invoke\n invoke = None\n\n # can be executed multiple times\n contents = []\n\n for (flag, argument) in argument:\n\n # signal for name\n if flag == '-op':\n\n # ignore empties\n if not argument:\n\n continue\n\n # only first\n if not invoke:\n\n # get the invoke from name\n invoke = commands.trail(argument)\n\n continue\n\n # no need to check if -co\n contents.append(argument)\n\n # execute commands\n for content in contents:\n\n invoke(content)\n\ndef main(content):\n\n (names, argument, invoke) = commands.analyse(content)\n\n invoke(argument)\n\nprint('>', stroke.draw(figure_0))\nmain('add 5 -and 9 -and -3') # 11\n\nprint('>', stroke.draw(figure_1, full = True))\nmain('div -upper 20 -lower 2 -upper 15') # 7.5\n\nprint('>', stroke.draw(figure_2, full = True))\nmain('calc add -co 1 \\-and 2 -and div -co -upper 1 -lower 4') # 3 and 0.25\n```\n\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "https://github.com/Exahilosys/stroke/archive/v2.3.2.tar.gz", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/Exahilosys/stroke", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "stroke", "package_url": "https://pypi.org/project/stroke/", "platform": "", "project_url": "https://pypi.org/project/stroke/", "project_urls": { "Download": "https://github.com/Exahilosys/stroke/archive/v2.3.2.tar.gz", "Homepage": "https://github.com/Exahilosys/stroke" }, "release_url": "https://pypi.org/project/stroke/2.3.2/", "requires_dist": null, "requires_python": "", "summary": "Utilities for & with strings.", "version": "2.3.2" }, "last_serial": 5440295, "releases": { "0.0.0": [ { "comment_text": "", "digests": { "md5": "325b0e7ac2520406a8569e660644f1ce", "sha256": "e80a4d2763cffdc8443fa537710ffa4c87c19e0048419c6830932bc16d435d8a" }, "downloads": -1, "filename": "stroke-0.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "325b0e7ac2520406a8569e660644f1ce", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5614, "upload_time": "2019-01-07T13:15:58", "url": "https://files.pythonhosted.org/packages/e7/a0/9de16d97aa79716954999738c8ad030eac80b032d2cc4c34eb874c6b81ec/stroke-0.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1141353ff27a0a6d722e33375925beaa", "sha256": "ef38241552b4180fd818242f2a32e7ebcb5f5600ee83d2d350f776179d970e1d" }, "downloads": -1, "filename": "stroke-0.0.0.tar.gz", "has_sig": false, "md5_digest": "1141353ff27a0a6d722e33375925beaa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3296, "upload_time": "2019-01-07T13:16:00", "url": "https://files.pythonhosted.org/packages/2f/ae/4dc522aef5196b005fc610b629cdb4c20913628e0440c0aa61c34ccfe8c1/stroke-0.0.0.tar.gz" } ], "0.0.1": [ { "comment_text": "", "digests": { "md5": "4ed9f5fe3230e482b28eaa68ef07b3a0", "sha256": "bda0120b6fdfa16b5531607165df0b6d8359397326f2cd6278ac2c92b64ab3e0" }, "downloads": -1, "filename": "stroke-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "4ed9f5fe3230e482b28eaa68ef07b3a0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5762, "upload_time": "2019-01-10T02:03:58", "url": "https://files.pythonhosted.org/packages/d5/a9/e43ed33fabdce931e9e5c64f7a52781bcaa4e07fd3e604eb7d3b415eb1d6/stroke-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "876022c9b65d8a4c5e42f93e0dcb6dfe", "sha256": "26f1d3cec0bc1e1369d76cab3d81b9feee8651c0815f7a70bfbffd04810cb362" }, "downloads": -1, "filename": "stroke-0.0.1.tar.gz", "has_sig": false, "md5_digest": "876022c9b65d8a4c5e42f93e0dcb6dfe", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3452, "upload_time": "2019-01-10T02:04:00", "url": "https://files.pythonhosted.org/packages/84/b0/c3fe481805403d75365235e3688e7458ecbd1b8372bd6186aaec81d5163c/stroke-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "e7d4a9e1e622443085e3e261e0fcd0a4", "sha256": "78ce4bc0cd38ef262e1ab1e04e696b7f9885a80180fd9f9248f3e1b76dc01e08" }, "downloads": -1, "filename": "stroke-0.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "e7d4a9e1e622443085e3e261e0fcd0a4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5711, "upload_time": "2019-01-10T02:10:53", "url": "https://files.pythonhosted.org/packages/1d/45/086eb9136aa4fe31f425fbabff4e5a3e273ad1a7d1fdcdf6cbec91d1996b/stroke-0.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "dc326a92b152f55ef2908bbc78331898", "sha256": "65951e2846d906dfd1ead924b68a29c9b0be98878e09293c65744077e13c84be" }, "downloads": -1, "filename": "stroke-0.0.2.tar.gz", "has_sig": false, "md5_digest": "dc326a92b152f55ef2908bbc78331898", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3413, "upload_time": "2019-01-10T02:10:56", "url": "https://files.pythonhosted.org/packages/44/17/c82b777264695062e7775799fa39c9cfb73cbd68748b7ba53af92a3f8be4/stroke-0.0.2.tar.gz" } ], "0.0.3": [ { "comment_text": "", "digests": { "md5": "4ef85a0f25c7e6a97762b88e7880f3c4", "sha256": "b64cc1df4e1ff337b6f1cdeac5c9f6b2b2389485c91ac4e955f514dc31d67f13" }, "downloads": -1, "filename": "stroke-0.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "4ef85a0f25c7e6a97762b88e7880f3c4", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5707, "upload_time": "2019-01-10T02:16:56", "url": "https://files.pythonhosted.org/packages/27/ce/38461f17c2de21e21bb3d104bbd7b9536da6da539dc88dc63683ee01acb6/stroke-0.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ea5b0a9f9a2adee1b7ffd94e104d37c2", "sha256": "a47f1da0baa79975969e38fc847b274d923996fcb7ce31d7e353f61603864d63" }, "downloads": -1, "filename": "stroke-0.0.3.tar.gz", "has_sig": false, "md5_digest": "ea5b0a9f9a2adee1b7ffd94e104d37c2", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3381, "upload_time": "2019-01-10T02:16:58", "url": "https://files.pythonhosted.org/packages/23/f8/db8d402cfefdead654a5f4a93eab71c0ea19dabd988230be496d01ae9796/stroke-0.0.3.tar.gz" } ], "1.0.0": [ { "comment_text": "", "digests": { "md5": "1a90849c2f062910b901bbd20d2c37b9", "sha256": "57ce59c18612b75e94051f8203b8dc31a1c98012df5eeb7646ae3fb11047c3e3" }, "downloads": -1, "filename": "stroke-1.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1a90849c2f062910b901bbd20d2c37b9", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5832, "upload_time": "2019-01-21T21:40:07", "url": "https://files.pythonhosted.org/packages/c0/c1/7e2eb06f1ab1e12d9bd8c53bb3a4d45f760afc12545d0eaf7f71c3f5feb7/stroke-1.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "70d4c90ea4dfc6ffe8cbb03a70bbb301", "sha256": "2b3b2db0a61991eae76a6b9c14de9015096c778b30e3789939c95433163b908a" }, "downloads": -1, "filename": "stroke-1.0.0.tar.gz", "has_sig": false, "md5_digest": "70d4c90ea4dfc6ffe8cbb03a70bbb301", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3509, "upload_time": "2019-01-21T21:40:08", "url": "https://files.pythonhosted.org/packages/9f/28/88b9cd7142d93eaccf717b302cd6c118a0329750d484d4c584b3c228e365/stroke-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "8a58b765ae49dbdad111675964154a70", "sha256": "507530e87e16e3315ed731a33a7ff1c587ca2d12da890fa64270b9d9a0bd738e" }, "downloads": -1, "filename": "stroke-1.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "8a58b765ae49dbdad111675964154a70", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5809, "upload_time": "2019-01-23T17:16:38", "url": "https://files.pythonhosted.org/packages/ba/ca/7cecbfe39b24dd7212974be70913a0bc0e71fa3f93301728fb230683622a/stroke-1.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "28eb0955c8bf9ad1b63cf3177510bc71", "sha256": "88fddd4f3ca972733984210a1d06c1c78645b5c82cc91b4c722b1b37b8fec309" }, "downloads": -1, "filename": "stroke-1.1.0.tar.gz", "has_sig": false, "md5_digest": "28eb0955c8bf9ad1b63cf3177510bc71", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3502, "upload_time": "2019-01-23T17:16:42", "url": "https://files.pythonhosted.org/packages/74/e4/4e9201ac8ba9cc1e59c56e4eb98342a681e6842ed132fbaef362fbbad533/stroke-1.1.0.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "46bb214757d6610b325afb73cf944df5", "sha256": "fe0f4d4baab77662b108c589eaf05cf293667053f7d56b88d01c13d03c549320" }, "downloads": -1, "filename": "stroke-1.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "46bb214757d6610b325afb73cf944df5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5825, "upload_time": "2019-01-24T20:50:42", "url": "https://files.pythonhosted.org/packages/54/57/ee922aeccd6b7fc5bb608705e1ab468e0cae04e9caef78f5bb42b36ce64f/stroke-1.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "72c26d24f9e703aea7ef46d6b2d1e3b4", "sha256": "8f984c6e63668223988c0cbc7363a816d273f132736149aa02e3c1c994e56b92" }, "downloads": -1, "filename": "stroke-1.2.0.tar.gz", "has_sig": false, "md5_digest": "72c26d24f9e703aea7ef46d6b2d1e3b4", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3520, "upload_time": "2019-01-24T20:50:44", "url": "https://files.pythonhosted.org/packages/70/c9/dd89a1952cc9f2f747e23510d1b898b1c53b77170cc9ca39a0e7d8bf0b0c/stroke-1.2.0.tar.gz" } ], "2.0.0": [ { "comment_text": "", "digests": { "md5": "912f8257a906c63006f96e52ee43a2f5", "sha256": "ed6bb6cf4a5556526e85ce057a245599d42262306584d535b50299f2175dfffe" }, "downloads": -1, "filename": "stroke-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "912f8257a906c63006f96e52ee43a2f5", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5679, "upload_time": "2019-01-25T02:43:11", "url": "https://files.pythonhosted.org/packages/6e/fd/cbbc2d9a00d3cc7f46f4053acc84b82759e550927db7927f924d316cb541/stroke-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6c8940f0bd1fc7d1e7c6837f8554c9fa", "sha256": "9baa25583bc35df41483539554ffc98e15d58cafc92ab1c4ba4aca52064e04ef" }, "downloads": -1, "filename": "stroke-2.0.0.tar.gz", "has_sig": false, "md5_digest": "6c8940f0bd1fc7d1e7c6837f8554c9fa", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3387, "upload_time": "2019-01-25T02:43:12", "url": "https://files.pythonhosted.org/packages/ab/c8/59387662859ff2b81ca0652c802d1bdf8a3401d224225e3faffc4f688426/stroke-2.0.0.tar.gz" } ], "2.1.0": [ { "comment_text": "", "digests": { "md5": "d8c3ed53f7750a5b4f87dadad57e6b0f", "sha256": "10bf9b56de40cf403c93cdf5c63653855ba2f7c5b6e4206651d7cc311fd81fd8" }, "downloads": -1, "filename": "stroke-2.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d8c3ed53f7750a5b4f87dadad57e6b0f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5643, "upload_time": "2019-01-25T11:14:36", "url": "https://files.pythonhosted.org/packages/d9/6f/bf327068adccb3c4656415da86136342692c8f4774fd752ffd8e20a2bf7f/stroke-2.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a6b68260200603b671b40c7cbadd279a", "sha256": "85320898e58094f1af0eb021253060388bc6d4b790d91e6527a733227bb4cff1" }, "downloads": -1, "filename": "stroke-2.1.0.tar.gz", "has_sig": false, "md5_digest": "a6b68260200603b671b40c7cbadd279a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3356, "upload_time": "2019-01-25T11:14:37", "url": "https://files.pythonhosted.org/packages/9c/0b/edaeae664d9c6b07d6f80801ee542887623bfe5af61c61f35bbfe8559896/stroke-2.1.0.tar.gz" } ], "2.1.1": [ { "comment_text": "", "digests": { "md5": "987fe9112fb8d171bbe5807e3561117a", "sha256": "6cb3508b9441ccc60d426f18fca8f0da1b9dd6a15d8d4936f761668dc7a27827" }, "downloads": -1, "filename": "stroke-2.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "987fe9112fb8d171bbe5807e3561117a", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5684, "upload_time": "2019-02-04T12:09:02", "url": "https://files.pythonhosted.org/packages/f3/5f/af3c8e5058275ab72c6ce603bbd1796e6fe3c20f460f4fa3376ac19b6f26/stroke-2.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "653e998245733996781470841d07a7ee", "sha256": "fcea8231b9836a12c328b0495ddda6b953c4296ace205b7b5074b63ddca48067" }, "downloads": -1, "filename": "stroke-2.1.1.tar.gz", "has_sig": false, "md5_digest": "653e998245733996781470841d07a7ee", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3375, "upload_time": "2019-02-04T12:09:04", "url": "https://files.pythonhosted.org/packages/5b/dc/66eca714c0048af63e30852821a91d6c3d010d8eee622e811aa5281a8aee/stroke-2.1.1.tar.gz" } ], "2.1.2": [ { "comment_text": "", "digests": { "md5": "d2f97c64c908794b9708e9e8239e7785", "sha256": "ec96dca733fff302ec098d73516b8b201255fca9056db43464bf9b7835509d2b" }, "downloads": -1, "filename": "stroke-2.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "d2f97c64c908794b9708e9e8239e7785", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5684, "upload_time": "2019-02-04T18:37:31", "url": "https://files.pythonhosted.org/packages/e6/fa/ad9b0204f4506b0a9b5bb5c73cfba61ee9d27cac4cf155c234063dc55c1e/stroke-2.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6dd238adc490a97ecd6d4f7eeca090e8", "sha256": "7fe6466da266094b257ab99437af3666b6071852ead01cc882bda654adb8b1b4" }, "downloads": -1, "filename": "stroke-2.1.2.tar.gz", "has_sig": false, "md5_digest": "6dd238adc490a97ecd6d4f7eeca090e8", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3376, "upload_time": "2019-02-04T18:37:32", "url": "https://files.pythonhosted.org/packages/dc/b8/a4c77bb3b6a98873a7566d0f1c9352e385189856e34320d2290f97ab34c7/stroke-2.1.2.tar.gz" } ], "2.2.0": [ { "comment_text": "", "digests": { "md5": "1264f2f56d122246faecdbb35c69cb4d", "sha256": "e58460312fdbca94e63d937e359bee0d2e673afa7c84809ccac84cc9d0a30bfc" }, "downloads": -1, "filename": "stroke-2.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1264f2f56d122246faecdbb35c69cb4d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5876, "upload_time": "2019-02-20T21:26:50", "url": "https://files.pythonhosted.org/packages/3a/b7/4d739996ec5799b3029b12021f4be55c5ff08c8c0f98f335d651469e061b/stroke-2.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "39cd74eb6dba5f0c18539abacecf1824", "sha256": "39da2df56b537b847cff06247cc8abb93a7cf734a7ccf6b156845506b1a9c338" }, "downloads": -1, "filename": "stroke-2.2.0.tar.gz", "has_sig": false, "md5_digest": "39cd74eb6dba5f0c18539abacecf1824", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3589, "upload_time": "2019-02-20T21:26:51", "url": "https://files.pythonhosted.org/packages/25/c4/5be397ba3f5c5577445c871023c1abe6cae173bd1d275e0625034d58345d/stroke-2.2.0.tar.gz" } ], "2.2.1": [ { "comment_text": "", "digests": { "md5": "01d2c3f453b03098f47f15fff6d4fa69", "sha256": "d65ad02bd96b2a7b1948963b55a12ab82caf788838960ae4d9525c61a1029d62" }, "downloads": -1, "filename": "stroke-2.2.1-py3-none-any.whl", "has_sig": false, "md5_digest": "01d2c3f453b03098f47f15fff6d4fa69", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5854, "upload_time": "2019-04-26T11:01:57", "url": "https://files.pythonhosted.org/packages/14/56/2531a325b52a3d08a6bc2cc9fe7eafa85b3314b226ba22bae9c5c909386c/stroke-2.2.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0272777c881b7a5f25e3109dcec9669d", "sha256": "4a62bc00b86317da048d0af5c616f5021c4e230cba80da5f4ad49b6fc97808e9" }, "downloads": -1, "filename": "stroke-2.2.1.tar.gz", "has_sig": false, "md5_digest": "0272777c881b7a5f25e3109dcec9669d", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 3559, "upload_time": "2019-04-26T11:01:59", "url": "https://files.pythonhosted.org/packages/c5/0f/879d5ac6a264d73d325761e96d12100be947b2d76863260b7fbbdcf0474d/stroke-2.2.1.tar.gz" } ], "2.3.0": [ { "comment_text": "", "digests": { "md5": "f076f1d5b525ed29797ae13e42444ea1", "sha256": "3eb1a2147cfb1b51cbd06f04151c6d82382209f83d190a5fe13fe64f628875af" }, "downloads": -1, "filename": "stroke-2.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "f076f1d5b525ed29797ae13e42444ea1", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7817, "upload_time": "2019-06-21T17:43:45", "url": "https://files.pythonhosted.org/packages/57/52/99e8d459b6937f5bee2d9bd6215a7f20af03193e004c20b5b91898c1010c/stroke-2.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2dfbca2203dcbdb45aaff89f88e4794b", "sha256": "81a668df8ddfe3dd6289c12ac8c1f79d7c386c38bfcfa2ed547ffbdb38799dff" }, "downloads": -1, "filename": "stroke-2.3.0.tar.gz", "has_sig": false, "md5_digest": "2dfbca2203dcbdb45aaff89f88e4794b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5592, "upload_time": "2019-06-21T17:43:46", "url": "https://files.pythonhosted.org/packages/e9/8c/76863fc2a18578f3310918f367ff61810adca46611befed23a279957c406/stroke-2.3.0.tar.gz" } ], "2.3.1": [ { "comment_text": "", "digests": { "md5": "f109d6b6812a2f2cc8d5705286cf2cc6", "sha256": "bfa21d85097781b526a325645add3c7bfd03c9d02ccb1373d2723729939d42c1" }, "downloads": -1, "filename": "stroke-2.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "f109d6b6812a2f2cc8d5705286cf2cc6", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7809, "upload_time": "2019-06-24T11:43:31", "url": "https://files.pythonhosted.org/packages/05/cb/e138c44fc13c4561946ccd0dbef73688a37dcfb1d1a5bff4e412ea649a42/stroke-2.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1c314da5a9cf864d4ba69bd11f8c6a2a", "sha256": "a40781890047fb8b1f77e90a9c6157b15b6db97a55ac13ed237d789ce9d2275a" }, "downloads": -1, "filename": "stroke-2.3.1.tar.gz", "has_sig": false, "md5_digest": "1c314da5a9cf864d4ba69bd11f8c6a2a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5599, "upload_time": "2019-06-24T11:43:32", "url": "https://files.pythonhosted.org/packages/d9/78/6398d6c0c23128021de31aaacef3838ca16370393844b13e96d837051c29/stroke-2.3.1.tar.gz" } ], "2.3.2": [ { "comment_text": "", "digests": { "md5": "bed2e7c99308468657b78a57f62fa0d8", "sha256": "affdde6fc25e5c3fd0ec79fd29daaba97a76cc6b12943015a551bcebb66b4672" }, "downloads": -1, "filename": "stroke-2.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bed2e7c99308468657b78a57f62fa0d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7811, "upload_time": "2019-06-24T11:46:05", "url": "https://files.pythonhosted.org/packages/52/13/ea1349d287f6bd9b774fdc814b4fd77a70872b42969475057d1e96833b0a/stroke-2.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b996cdfba1d7bd985683d03ed335eca", "sha256": "15f234d47ccf8a92aa77675fb7e6efbbbb902550c9eb1de8eef5cf16ebe97fd9" }, "downloads": -1, "filename": "stroke-2.3.2.tar.gz", "has_sig": false, "md5_digest": "2b996cdfba1d7bd985683d03ed335eca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5597, "upload_time": "2019-06-24T11:46:08", "url": "https://files.pythonhosted.org/packages/22/0e/051d301784559bdc8caa4247e4585306e037c65561e51946bb8de4d1eb96/stroke-2.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bed2e7c99308468657b78a57f62fa0d8", "sha256": "affdde6fc25e5c3fd0ec79fd29daaba97a76cc6b12943015a551bcebb66b4672" }, "downloads": -1, "filename": "stroke-2.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "bed2e7c99308468657b78a57f62fa0d8", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7811, "upload_time": "2019-06-24T11:46:05", "url": "https://files.pythonhosted.org/packages/52/13/ea1349d287f6bd9b774fdc814b4fd77a70872b42969475057d1e96833b0a/stroke-2.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "2b996cdfba1d7bd985683d03ed335eca", "sha256": "15f234d47ccf8a92aa77675fb7e6efbbbb902550c9eb1de8eef5cf16ebe97fd9" }, "downloads": -1, "filename": "stroke-2.3.2.tar.gz", "has_sig": false, "md5_digest": "2b996cdfba1d7bd985683d03ed335eca", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 5597, "upload_time": "2019-06-24T11:46:08", "url": "https://files.pythonhosted.org/packages/22/0e/051d301784559bdc8caa4247e4585306e037c65561e51946bb8de4d1eb96/stroke-2.3.2.tar.gz" } ] }