{ "info": { "author": "eight", "author_email": "eight04@gmail.com", "bugtrack_url": null, "classifiers": [ "Development Status :: 5 - Production/Stable", "Environment :: Console", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Natural Language :: Chinese (Traditional)", "Programming Language :: Python :: 2.7", "Programming Language :: Python :: 3.4", "Programming Language :: Python :: 3.5", "Programming Language :: Python :: 3.6", "Topic :: Software Development :: Build Tools", "Topic :: Software Development :: Libraries :: Python Modules" ], "description": "pyXcute\n=======\n\n.. image:: https://api.codacy.com/project/badge/Grade/6ffe1c58a9f7404293f870a5183d8ad8 \n :target: https://www.codacy.com/app/eight04/pyXcute?utm_source=github.com&utm_medium=referral&utm_content=eight04/pyXcute&utm_campaign=Badge_Grade\n\n.. image:: https://travis-ci.org/eight04/pyXcute.svg?branch=master\n :target: https://travis-ci.org/eight04/pyXcute\n\n.. image:: http://readthedocs.org/projects/pyxcute/badge/?version=latest\n :target: http://pyxcute.readthedocs.io/en/latest/?badge=latest\n :alt: Documentation Status\n\nA small task runner inspired by npm scripts.\n\nFeatures\n--------\n\n* Use it like setuptools.\n* Chain tasks with ``_pre``, ``_err``, ``_post``, ``_fin`` suffix.\n* A builtin Bump task which can bump version with `semver `_.\n* A small set of cross-platform CLI utils.\n\nInstallation\n------------\n\n>From `pypi `__\n\n.. code:: bash\n\n\tpip install pyxcute\n\nUsage\n-----\n\nBasic\n~~~~~\n\nCreate a ``cute.py`` file:\n\n.. code:: python\n\n from xcute import cute\n\n cute(\n hello = 'echo hello xcute!'\n )\n\nthen run:\n\n.. code:: bash\n\n $ cute hello\n > Task: hello\n > Cmd: echo hello xcute!\n hello xcute!\n\n..\n\n If you got a \"not a command\" error, see `How do I make Python scripts executable? `_)\n\n\"hello\" is the name of the task that should be executed. If ``cute.py`` is executed without a task name, it will run the \"default\" task.\n\nProvide additional arguments:\n\n.. code:: bash\n\n $ cute hello 123\n > Task: hello\n > Cmd: echo hello xcute! 123\n hello xcute! 123\n\nThe arguments will be passed into the executor, which is ``xcute.Cmd.__call__`` in this case.\n\nTasks\n~~~~~\n\nIt can be a str:\n\n.. code:: python\n\n from xcute import cute\n\n cute(\n hello = 'echo hello'\n )\n\nIf it match the name of another task, pyxcute will execute that task:\n\n.. code:: python\n\n from xcute import cute\n\n cute(\n hello = 'world', # execute \"world\" task when \"hello\" task is executed\n world = 'echo I am world task'\n )\n\nUse a list:\n\n.. code:: python\n\n from xcute import cute\n\n cute(\n hello = ['echo task1', 'echo task2']\n )\n\nUsing an Exception would make the task fail:\n\n.. code:: python\n\n from xcute import cute\n cute(\n hello = Exception(\"error message\")\n )\n\nUse anything that is callable:\n\n.. code:: python\n\n from xcute import cute\n\n cute(\n hello = lambda: print('say hello')\n )\n\nActually, when you assign a non-callable value as a task, pyXcute converts it into a callable according to its type.\n\nTask chain\n~~~~~~~~~~\n\nDefine the workflow with ``_pre``, ``_err``, ``_post``, ``_fin`` suffix:\n\n.. code:: python\n\n\tfrom xcute import cute\n\n\tcute(\n\t\thello_pre = 'echo _pre runs before the task',\n\t\thello = 'echo say hello',\n\t\thello_err = 'echo _err runs if there is an error in task, i.e, an uncaught exception or non-zero return code',\n\t\thello_post = 'echo _post runs after the task if task successfully returned',\n\t\thello_fin = 'echo _fin always runs after _post, _err just like finally'\n\t)\n\nWhen a task is executed, the task runner try to execute ``_pre`` task first, then the task itself, then the ``_post`` task. If the task raised an exception, then it goes to the ``_err`` task. ``_fin`` task would be executed whenever the task failed or not.\n\nPseudo code:\n\n.. code:: python\n\n\trun(name + \"_pre\")\n\ttry:\n\t\trun(name, args)\n\texcept Exception:\n\t\trun(name + \"_err\")\n\telse:\n\t\trun(name + \"_post\")\n\tfinally:\n\t\trun(name + \"_fin\")\n\nFormat string\n~~~~~~~~~~~~~\n\npyXcute expands the command string with ``xcute.conf`` dictionary. The expansion is happened at run-time:\n\n.. code:: python\n\n from xcute import conf, cute\n\n conf[\"my_name\"] = \"world\"\n\n def change_my_name():\n conf[\"my_name\"] = \"bad world\"\n\n cute(\n hello = [\n \"echo hello {my_name}\",\n change_my_name,\n \"echo hello {my_name}\"\n ]\n )\n\n.. code:: bash\n\n $ cute hello\n > Task: hello\n > Cmd: echo hello world\n hello world\n > Cmd: echo hello bad world\n hello bad world\n\nCross-platform utils\n--------------------\n\nThere are some CLI utils inspired by `npm-build-tools `_, including:\n\n* x-clean\n* x-cat\n* x-copy\n* x-pipe\n\nRun each command with ``-h`` to see the help message.\n\nLive example\n------------\n\nCheckout `the cute file `_ of pyXcute itself.\n\nDocumentation\n-------------\n\nhttp://pyxcute.readthedocs.io/en/latest/\n\nChangelog\n---------\n\n* 0.5.2 (Jun 14, 2018)\n\n - Add: support ``bumper`` argument in ``Bump``.\n - Add: support Python 3.4. Drop ``subprocess32``.\n\n* 0.5.1 (May 12, 2018)\n\n - Add: ``conf[\"py\"]`` variable.\n\n* 0.5.0 (May 11, 2018)\n\n - Add: support Python 2.\n - Add: documentation.\n - Add: ``Skip``, ``run_task``, ``task_converter``.\n - **Add: `Bump` task now update the version number inside `setup.cfg`.**\n - Fix: ``Cmd`` task failed on Unix due to ``shell=True`` and passing ``args`` as a list.\n - **Change: the command of `Cmd` is now logged. The log message is also changed.**\n - **Drop: `noop`.**\n\n* 0.4.1 (Apr 3, 2017)\n\n - Better description for x-clean.\n - Fix broken pipe error in x-pipe.\n\n* 0.4.0 (Mar 28, 2017)\n\n - Switch to setup.cfg.\n - Add log, exc, noop, Throw, Try.\n - **Drop Exc, Exit.**\n - Add ``x-*`` utils.\n\n* 0.3.1 (Mar 23, 2017)\n\n - Find version from ``{pkg_name}/__pkginfo__.py``.\n\n* 0.3.0 (Jul 21, 2016)\n\n - Add ``pkg_name`` task.\n - Add default tasks ``bump``, ``version``.\n\n* 0.2.0 (May 14, 2016)\n\n - Add _fin tag, which represent ``finally`` clause.\n - Add Exc and Exit tasks.\n\n* 0.1.2 (Apr 20, 2016)\n\n - Move _pre out of try clause.\n\n* 0.1.1 (Apr 20, 2016)\n\n - Bump dev status.\n\n* 0.1.0 (Apr 20, 2016)\n\n - First release.\n\n\n\n", "description_content_type": "", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/eight04/pyXcute", "keywords": "run,task,runner,execute,bump,bumper,build,tool,npm", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "pyxcute", "package_url": "https://pypi.org/project/pyxcute/", "platform": "", "project_url": "https://pypi.org/project/pyxcute/", "project_urls": { "Homepage": "https://github.com/eight04/pyXcute" }, "release_url": "https://pypi.org/project/pyxcute/0.5.2/", "requires_dist": [ "natsort (>=5.0.2,<6)", "ordered-set (<3,>=2.0.1)", "semver (<3,>=2.4.1)", "send2trash (>=1.3.0,<2)", "pathlib2 (<3,>=2.3.2); python_version < \"3.5\"" ], "requires_python": "", "summary": "A small task runner inspired by npm scripts.", "version": "0.5.2" }, "last_serial": 3961245, "releases": { "0.0.0": [], "0.1.0": [ { "comment_text": "", "digests": { "md5": "a53a50e506eb492a91a825e3a1d0f085", "sha256": "6cf283de0673d9d6dafb8b3b78c46ae8e6735c61c8ee5bef4f6e1712ede49a7f" }, "downloads": -1, "filename": "pyxcute-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "a53a50e506eb492a91a825e3a1d0f085", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5270, "upload_time": "2016-04-20T05:20:13", "url": "https://files.pythonhosted.org/packages/68/d4/487e7c4bb6a8269168df8fc82fddad2b6a64520761ca4bcd9d12397d3dc8/pyxcute-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "5168d46a650e17262593d572f98b16cb", "sha256": "5da21e072aee4a6ae9720480cbee99b2b27b561589c38eb855bcf2a55680630f" }, "downloads": -1, "filename": "pyxcute-0.1.0.zip", "has_sig": false, "md5_digest": "5168d46a650e17262593d572f98b16cb", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6617, "upload_time": "2016-04-20T05:20:40", "url": "https://files.pythonhosted.org/packages/98/19/66373df14d49c5711521e9f639fd41135d36f9a4bd3e1e0aa8b25093cc54/pyxcute-0.1.0.zip" } ], "0.1.1": [ { "comment_text": "", "digests": { "md5": "2009e5b55cb74ce26ab468077be5eac3", "sha256": "7645a74e0420099d51ed7eecdcf54363ea3a443803cd80e391e5af33ce6f725f" }, "downloads": -1, "filename": "pyxcute-0.1.1-py3-none-any.whl", "has_sig": false, "md5_digest": "2009e5b55cb74ce26ab468077be5eac3", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 5311, "upload_time": "2016-04-20T07:25:41", "url": "https://files.pythonhosted.org/packages/bb/ae/219683406f357f13ba813ab47449df7096478bf8ccb0edda68aa1b9af790/pyxcute-0.1.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "3a5ae13974aadc4d3d784f10e919ea21", "sha256": "c67a3b85216776fa960153b38ae1f6acc3438e74244b865a9f48f5454a7d3af5" }, "downloads": -1, "filename": "pyxcute-0.1.1.zip", "has_sig": false, "md5_digest": "3a5ae13974aadc4d3d784f10e919ea21", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6665, "upload_time": "2016-04-20T07:25:47", "url": "https://files.pythonhosted.org/packages/81/69/2f40e4f1f33ea32b3fb0bf19ed36c83bb38ad4115b1111a54be990bae45e/pyxcute-0.1.1.zip" } ], "0.1.2": [ { "comment_text": "", "digests": { "md5": "de8c8d16c04cb8f6a975eb423e945a4b", "sha256": "b213c03ed2595a17f3e9be04fe65e6ea18a8bbf8f6640b9fa6e10856ed392028" }, "downloads": -1, "filename": "pyxcute-0.1.2-py3-none-any.whl", "has_sig": false, "md5_digest": "de8c8d16c04cb8f6a975eb423e945a4b", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 6726, "upload_time": "2016-04-20T14:45:19", "url": "https://files.pythonhosted.org/packages/dd/40/7a61110168452205428e6a30c7e140a6a93c050b63d750fe65556bd04602/pyxcute-0.1.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0040763f5916d3fb7f19c8d582af4ef3", "sha256": "6c5f3dbe1fdac2b915f1614199f979be969d3d2cd813adf4d6829961e51c8ca4" }, "downloads": -1, "filename": "pyxcute-0.1.2.zip", "has_sig": false, "md5_digest": "0040763f5916d3fb7f19c8d582af4ef3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8921, "upload_time": "2016-04-20T14:45:47", "url": "https://files.pythonhosted.org/packages/3d/c4/6f8c6d5301baf66d389d81a7cce052eb40983e0339bf83197fbaf8922390/pyxcute-0.1.2.zip" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "2712021bae242b137c25581109737856", "sha256": "84ed0d2407d626b814967e9785a1b86ea20a14b796ea86d873efa59b4d70f8bb" }, "downloads": -1, "filename": "pyxcute-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "2712021bae242b137c25581109737856", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7339, "upload_time": "2016-05-14T08:13:57", "url": "https://files.pythonhosted.org/packages/d6/74/352a21ecde72faf27ec868467b46e59ea0dd8575d9d01c884891e48f6e56/pyxcute-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e322f0056917ff2584ed4861be54227e", "sha256": "31d90f6453454860a23508274ea144dd752ec383bf4b7ca9130f46c222eeb9f0" }, "downloads": -1, "filename": "pyxcute-0.2.0.zip", "has_sig": false, "md5_digest": "e322f0056917ff2584ed4861be54227e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 9864, "upload_time": "2016-05-14T08:14:15", "url": "https://files.pythonhosted.org/packages/f5/2a/4758a0afb03792fab6fa4e5adac15221ecc1ac35b31606818b3008494b47/pyxcute-0.2.0.zip" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "416426805cc06a5055456bf1b568d60f", "sha256": "a3ca0e2b6878bea90f0167c2b964fb239dcaa4a183f34981db9b2ec4d8473c95" }, "downloads": -1, "filename": "pyxcute-0.3.0-py3-none-any.whl", "has_sig": false, "md5_digest": "416426805cc06a5055456bf1b568d60f", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 7856, "upload_time": "2016-07-21T08:06:10", "url": "https://files.pythonhosted.org/packages/23/99/72ef78e101e1d12aa6587ee6f2ef3532222b3681bc14bfe7ee464c9a43d6/pyxcute-0.3.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "71f2886629558dbf23bf815e3c8bac1a", "sha256": "06105a42c2ad462f7d98d3588dca67123acc9eaa23c78b46c44203a97e25abe9" }, "downloads": -1, "filename": "pyxcute-0.3.0.zip", "has_sig": false, "md5_digest": "71f2886629558dbf23bf815e3c8bac1a", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10617, "upload_time": "2016-07-21T08:06:13", "url": "https://files.pythonhosted.org/packages/0b/7a/745dbccd265a96edb265405caf85932abc6ce926dee49474e54621e39c0d/pyxcute-0.3.0.zip" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "82778628f17bbdc7b68b862113bf2960", "sha256": "dad7fc087dbb98ecdd222c147b75e5008bd93fc8257eed6580552f57f161dbfb" }, "downloads": -1, "filename": "pyxcute-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "82778628f17bbdc7b68b862113bf2960", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 9129, "upload_time": "2017-03-23T15:37:22", "url": "https://files.pythonhosted.org/packages/5b/97/7b28ae96a390901ffd163b53991833924388aa2569b5dda89b48419e1ad5/pyxcute-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "bf2c748a9f447dba0d69d175f30b31d5", "sha256": "7011d1ae554e354fdeba611b6463c9037cbc14b1283c37760154f4234839fb1c" }, "downloads": -1, "filename": "pyxcute-0.3.1.tar.gz", "has_sig": false, "md5_digest": "bf2c748a9f447dba0d69d175f30b31d5", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 6076, "upload_time": "2017-03-23T15:37:25", "url": "https://files.pythonhosted.org/packages/6c/e9/6dbd05889f303fca7ffb68b97deddcb99ca131cd43d63f052037b3225d4c/pyxcute-0.3.1.tar.gz" } ], "0.4.0": [ { "comment_text": "", "digests": { "md5": "1525406d7cea5f8adbc85b024fabe858", "sha256": "77cef90e848069d287d4e36a93747d76a011825d3945d95073201900e0d6d137" }, "downloads": -1, "filename": "pyxcute-0.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "1525406d7cea5f8adbc85b024fabe858", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12966, "upload_time": "2017-03-27T20:16:00", "url": "https://files.pythonhosted.org/packages/83/70/36a301c609b53d71dad97692374aa16e3ae8c75b1f8230698363898defb7/pyxcute-0.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "371e00f5bedd1a9160e20f3c99e8c6c0", "sha256": "c9ba7ee7c1917306ebe49d1cd1b663c39d780b243d385252a31750ca20cb732c" }, "downloads": -1, "filename": "pyxcute-0.4.0.tar.gz", "has_sig": false, "md5_digest": "371e00f5bedd1a9160e20f3c99e8c6c0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8918, "upload_time": "2017-03-27T20:16:05", "url": "https://files.pythonhosted.org/packages/d7/44/99e4b27af8d6d86f886a418a00f338b5ad90eea803b216eec11165ca4a1c/pyxcute-0.4.0.tar.gz" } ], "0.4.1": [ { "comment_text": "", "digests": { "md5": "55ac08a34c4cf5a2ccfbb1b11aec9497", "sha256": "7b740697c2fd4fca83396873e9236faec2c2aef1e24298245dde69b091bcee9d" }, "downloads": -1, "filename": "pyxcute-0.4.1-py3-none-any.whl", "has_sig": false, "md5_digest": "55ac08a34c4cf5a2ccfbb1b11aec9497", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13079, "upload_time": "2017-04-03T04:59:35", "url": "https://files.pythonhosted.org/packages/ec/58/d9c6ac6a85410f51739fccde159bc9d7524bc063b2f1f029d351629b250c/pyxcute-0.4.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "afccb471d5244e00f49497fac1d5acdd", "sha256": "2fa1a691c42439549b30c2b3274df579464d28cecc69f73e582ad18ba7f0003a" }, "downloads": -1, "filename": "pyxcute-0.4.1.tar.gz", "has_sig": false, "md5_digest": "afccb471d5244e00f49497fac1d5acdd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8987, "upload_time": "2017-04-03T04:59:38", "url": "https://files.pythonhosted.org/packages/99/4b/4a90178d94db52194c2d9e08e3e44f48ad4549eaabafc0adf0b7461251ef/pyxcute-0.4.1.tar.gz" } ], "0.5.0": [ { "comment_text": "", "digests": { "md5": "c74b635af03d167507b8c6723faa2763", "sha256": "3e1d06fcde81a9107f5e46b27b8b5c9ecba8caa670163a91fc1d0eac29e70a64" }, "downloads": -1, "filename": "pyxcute-0.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "c74b635af03d167507b8c6723faa2763", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14355, "upload_time": "2018-05-11T15:39:02", "url": "https://files.pythonhosted.org/packages/d4/5a/0b693a776d96cd7176da267457dac7b5d716956dbdceb9ba54db8846a0cd/pyxcute-0.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "17322723439b36bcc388082563d98869", "sha256": "64a633e82c2ee73695fdccfe7e027ac8dcf1839769473ea3bb94fcc1ef4b012f" }, "downloads": -1, "filename": "pyxcute-0.5.0.tar.gz", "has_sig": false, "md5_digest": "17322723439b36bcc388082563d98869", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10716, "upload_time": "2018-05-11T15:39:04", "url": "https://files.pythonhosted.org/packages/d1/76/f2ab47b76dbf696401b50fce1e436bd8776ed87215358f38888a336291b3/pyxcute-0.5.0.tar.gz" } ], "0.5.1": [ { "comment_text": "", "digests": { "md5": "0dc9d421d6a62149f3d9c4e5dce6d2ab", "sha256": "3b37f07fb667f061fe597eddd84167df3e38dd721d1acfcac661db605b03dffd" }, "downloads": -1, "filename": "pyxcute-0.5.1-py3-none-any.whl", "has_sig": false, "md5_digest": "0dc9d421d6a62149f3d9c4e5dce6d2ab", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14576, "upload_time": "2018-05-11T16:13:34", "url": "https://files.pythonhosted.org/packages/84/88/692945cf9fe9677289ee8e65e0d9e2ef859c972c0de824bbc27af7831f2d/pyxcute-0.5.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a3e5fc28216f58237e1b90341a3760db", "sha256": "843be4df0fb33842685ab0787ec1a9e7337a5c35abd8b873dae23baed4183aff" }, "downloads": -1, "filename": "pyxcute-0.5.1.tar.gz", "has_sig": false, "md5_digest": "a3e5fc28216f58237e1b90341a3760db", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10920, "upload_time": "2018-05-11T16:13:36", "url": "https://files.pythonhosted.org/packages/6e/be/72af9ca98f20697b7b46a2d59b2d4eeacf15a14ba192c4d5cf853953e764/pyxcute-0.5.1.tar.gz" } ], "0.5.2": [ { "comment_text": "", "digests": { "md5": "6d549f89fa53ddbe9852230d1c84dd9d", "sha256": "45f160473612324eabeab8027ac011349a276d9d51e31b07868f0488e9c5ac9c" }, "downloads": -1, "filename": "pyxcute-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6d549f89fa53ddbe9852230d1c84dd9d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14777, "upload_time": "2018-06-14T12:56:24", "url": "https://files.pythonhosted.org/packages/72/a5/2a0a1299e448c1f906d411125d2d22d43168b6faa1010b8b2dbfbf4a63c1/pyxcute-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "642660b12299242213f302597c5df991", "sha256": "9c0dd2b11029e305d7f8e0ea864945ee57fd2e9397d225fb81985787b4008ff3" }, "downloads": -1, "filename": "pyxcute-0.5.2.tar.gz", "has_sig": false, "md5_digest": "642660b12299242213f302597c5df991", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11103, "upload_time": "2018-06-14T12:56:26", "url": "https://files.pythonhosted.org/packages/b9/6b/7dd4be485b70b515520ccc4e1ce76e970c629ae70c82209bd1ca4ab56182/pyxcute-0.5.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "6d549f89fa53ddbe9852230d1c84dd9d", "sha256": "45f160473612324eabeab8027ac011349a276d9d51e31b07868f0488e9c5ac9c" }, "downloads": -1, "filename": "pyxcute-0.5.2-py3-none-any.whl", "has_sig": false, "md5_digest": "6d549f89fa53ddbe9852230d1c84dd9d", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 14777, "upload_time": "2018-06-14T12:56:24", "url": "https://files.pythonhosted.org/packages/72/a5/2a0a1299e448c1f906d411125d2d22d43168b6faa1010b8b2dbfbf4a63c1/pyxcute-0.5.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "642660b12299242213f302597c5df991", "sha256": "9c0dd2b11029e305d7f8e0ea864945ee57fd2e9397d225fb81985787b4008ff3" }, "downloads": -1, "filename": "pyxcute-0.5.2.tar.gz", "has_sig": false, "md5_digest": "642660b12299242213f302597c5df991", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 11103, "upload_time": "2018-06-14T12:56:26", "url": "https://files.pythonhosted.org/packages/b9/6b/7dd4be485b70b515520ccc4e1ce76e970c629ae70c82209bd1ca4ab56182/pyxcute-0.5.2.tar.gz" } ] }