{ "info": { "author": "Anthony Shaw", "author_email": "", "bugtrack_url": null, "classifiers": [ "Development Status :: 4 - Beta", "Intended Audience :: Developers", "License :: OSI Approved :: MIT License", "Operating System :: MacOS :: MacOS X", "Operating System :: Microsoft :: Windows", "Operating System :: POSIX", "Programming Language :: Python", "Topic :: Software Development :: Libraries", "Topic :: Software Development :: Testing", "Topic :: Utilities" ], "description": "Retox\n=====\n\n.. image:: https://img.shields.io/pypi/v/retox.svg\n :target: https://pypi.python.org/pypi/retox\n\n.. image:: https://img.shields.io/travis/tonybaloney/retox.svg\n :target: https://travis-ci.org/tonybaloney/retox\n\n.. image:: https://codecov.io/gh/tonybaloney/retox/branch/master/graph/badge.svg\n :target: https://codecov.io/gh/tonybaloney/retox\n\n.. image:: https://pyup.io/repos/github/tonybaloney/retox/shield.svg\n :target: https://pyup.io/repos/github/tonybaloney/retox/\n :alt: Updates\n\n.. image:: https://pyup.io/repos/github/tonybaloney/retox/python-3-shield.svg\n :target: https://pyup.io/repos/github/tonybaloney/retox/\n :alt: Python 3\n\nA command line service that runs your tox tests in parallel, using threading and multicore CPUs.\n\nSee your tox environments in a dashboard and automatically watch source folders for file changes and re-run tests.\n\nSee : https://github.com/tonybaloney/retox/raw/master/docs/_static/screenshot.jpeg for an example screenshot\n\n.. image:: https://github.com/tonybaloney/retox/raw/master/docs/_static/retox_demo.gif\n\nRequirements\n------------\n\nLinux users may need to install libncurses5-dev before using Tox. If you see an error \"ImportError: No module named '_curses'\" this is because of the Requirement.\n\nUsage\n-----\n\nTo install, run \n\n.. code-block:: bash\n\n pip install retox\n\nThen from any project that has a `tox.ini` file setup and using tox, you can simply run\n\n.. code-block:: bash\n\n retox \n\nThis will start the service, from where you can press (b) to rebuild on demand.\n\nWatching folders\n----------------\n\nRetox can watch one or many directories for file changes and re-run the tox environments when changes are detected\n\n.. code-block:: bash\n\n retox -w my_project_folder -w my_test_folder\n\nExcluding paths\n---------------\n\nRetox will ignore files matching a given regex:\n\n.. code-block:: bash\n\n retox -w my_project_folder --exclude='.*\\.(swp|pyc)$'\n\nTox support\n-----------\n\nAny tox arguments can be given to the command, and using --help to get a full list of commands. Tox arguments will be passed to all virtualenvs\n\n.. code-block:: bash\n\n retox -e py27,py36\n\nmulticore configuration\n-----------------------\n\nThe number of concurrent processes in the threadpool can be set using the -n parameter.\nBy default this will be equal to the number of CPU's on the OS. If you want to expand or throttle this, use the\nflag to change the size of the threadpool.\n\n.. code-block:: bash\n\n retox -n 4\n\nLogging\n-------\n\n2 files will be created - .retox.log, which is a file for all runs of the logs for the virtual environments. This can be handy to tail to see live output\n.retox.json - a JSON file with the virtualenv tasks and specific command output.\n\nCredits\n-------\n\nThis was inspired by the detox project, which was created by the tox development team. I worked and then significantly changed the way it works\nto support re-running environments with ease.\n\n\n", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/tonybaloney/retox", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "retox", "package_url": "https://pypi.org/project/retox/", "platform": "unix", "project_url": "https://pypi.org/project/retox/", "project_urls": { "Homepage": "https://github.com/tonybaloney/retox" }, "release_url": "https://pypi.org/project/retox/1.5.0/", "requires_dist": [ "tox (==2.9.1)", "eventlet (==0.21.0)", "asciimatics (==1.9.0)", "pathlib2 (==2.3.0)" ], "requires_python": "", "summary": "A parallel service for tox", "version": "1.5.0" }, "last_serial": 3450782, "releases": { "1.0.0": [ { "comment_text": "", "digests": { "md5": "56cfd47a0e5cd5d60de8fad93b232210", "sha256": "4e19d19d80668c6551ecf53e7f25402328579003e153a3f31d0363fa73472b01" }, "downloads": -1, "filename": "retox-1.0.0-py2.7.egg", "has_sig": false, "md5_digest": "56cfd47a0e5cd5d60de8fad93b232210", "packagetype": "bdist_egg", "python_version": "2.7", "requires_python": null, "size": 17970, "upload_time": "2017-12-13T04:40:48", "url": "https://files.pythonhosted.org/packages/30/4f/d1c1c75c9c74f39b00b1ec6f18d8baecc286ff71d632ee7e77d9530f86b9/retox-1.0.0-py2.7.egg" }, { "comment_text": "", "digests": { "md5": "e3ebf1b9d3881b7f4f633648a5729a66", "sha256": "571fa6a4ffcc57e4f7735fb838d2bffedd67af1bf177fe1fad6295fa8e0d8c6d" }, "downloads": -1, "filename": "retox-1.0.0-py2-none-any.whl", "has_sig": false, "md5_digest": "e3ebf1b9d3881b7f4f633648a5729a66", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10181, "upload_time": "2017-12-13T04:40:46", "url": "https://files.pythonhosted.org/packages/be/4c/f41fd608321d1276a7a0e427ad134684380a1800732b40002ceac14a6157/retox-1.0.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "6a70415661bfdd9d11ddd0ac7fab87bd", "sha256": "af0369c543a4ff576d8e8e040fd2c06f7971bfb7fa3751923514edd9e4ba640c" }, "downloads": -1, "filename": "retox-1.0.0.tar.gz", "has_sig": false, "md5_digest": "6a70415661bfdd9d11ddd0ac7fab87bd", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8201, "upload_time": "2017-12-13T04:40:49", "url": "https://files.pythonhosted.org/packages/a5/45/c9fe38fbd5b1e7ee22ed0e7578642061dc306959de3df5d6bf0c4edc58d3/retox-1.0.0.tar.gz" } ], "1.1.0": [ { "comment_text": "", "digests": { "md5": "b98e043712bf42ef2bf7aa3a0e9a1fed", "sha256": "5472ca3a05eca0d224d2d6102e26b98d68c2a93307bfc290497eed0af8329ed0" }, "downloads": -1, "filename": "retox-1.1.0-py2-none-any.whl", "has_sig": false, "md5_digest": "b98e043712bf42ef2bf7aa3a0e9a1fed", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10175, "upload_time": "2017-12-13T06:38:20", "url": "https://files.pythonhosted.org/packages/a8/b3/d7913f83ef6f2e436208b7f0a12acc5bc6dafa500a75d176d7aac6b0ff79/retox-1.1.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b6334530d05d8e6f4db204d7222b0ddf", "sha256": "068c3663041d6bd8b9c6da8de5523c9a3b2e888d3f83a3ec76d1c31595c97926" }, "downloads": -1, "filename": "retox-1.1.0.tar.gz", "has_sig": false, "md5_digest": "b6334530d05d8e6f4db204d7222b0ddf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 7922, "upload_time": "2017-12-13T06:38:22", "url": "https://files.pythonhosted.org/packages/a6/09/0f808fb90c340989f74f89b3c0bab02cea94119d1e853d35819777f72078/retox-1.1.0.tar.gz" } ], "1.1.1": [ { "comment_text": "", "digests": { "md5": "a4d8eb9801c2750d753f8a8869481e31", "sha256": "cf6d04da72c0cc95afe966216e32a0e7c93c3237e91b8bc16127cdbe0333fddb" }, "downloads": -1, "filename": "retox-1.1.1-py2-none-any.whl", "has_sig": false, "md5_digest": "a4d8eb9801c2750d753f8a8869481e31", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10154, "upload_time": "2017-12-13T07:06:50", "url": "https://files.pythonhosted.org/packages/d4/cc/5101b95ac6d5d9ebd9af1d00853909c79f3117358b07de1507dab9e2c7ff/retox-1.1.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ae52c066087d74bf80e40eb72e64110e", "sha256": "709fe1975ec6818e3246285f8390d5e80ef8913620e43187b4dcb0f9fd87a4ee" }, "downloads": -1, "filename": "retox-1.1.1.tar.gz", "has_sig": false, "md5_digest": "ae52c066087d74bf80e40eb72e64110e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8352, "upload_time": "2017-12-13T07:06:51", "url": "https://files.pythonhosted.org/packages/96/94/fc0cac4c2f5fc3e8eb4956d8e2e416d4eeec2bec828734866d287b718c4f/retox-1.1.1.tar.gz" } ], "1.2.0": [ { "comment_text": "", "digests": { "md5": "cd4d30bddfa151a802aa670c32d16348", "sha256": "43a05a5c95d6f2b909f14ee8d78976999f3f53b32566193e3d53d61d42d1bfe0" }, "downloads": -1, "filename": "retox-1.2.0-py2-none-any.whl", "has_sig": false, "md5_digest": "cd4d30bddfa151a802aa670c32d16348", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10462, "upload_time": "2017-12-15T09:37:46", "url": "https://files.pythonhosted.org/packages/b5/66/01c7cd2af21032a5a34f1d36d0556a5651a8a5012914d49b4f23eea188d7/retox-1.2.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "e1392483e7475395bcff2594aec61e5f", "sha256": "c315deafac77081c79ffa2355231b51d97ea1169e2095c37b4fd8dc7a180bd69" }, "downloads": -1, "filename": "retox-1.2.0.tar.gz", "has_sig": false, "md5_digest": "e1392483e7475395bcff2594aec61e5f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8694, "upload_time": "2017-12-15T09:37:49", "url": "https://files.pythonhosted.org/packages/6b/76/1b5a06f8cb6cd3ef1e4c7b8786600cad64e55486106eb100c7baafc30334/retox-1.2.0.tar.gz" } ], "1.2.1": [ { "comment_text": "", "digests": { "md5": "ceb87cced26bd61f1cb8db73c0e0125f", "sha256": "efd913f039caa7e890a6b27483fe9b1d94ea9403993ea11d28d2538c18f9c9ea" }, "downloads": -1, "filename": "retox-1.2.1-py2-none-any.whl", "has_sig": false, "md5_digest": "ceb87cced26bd61f1cb8db73c0e0125f", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 10468, "upload_time": "2017-12-17T09:17:01", "url": "https://files.pythonhosted.org/packages/35/67/cd806963a25b3e30a2d7b65d9dc080afb9d0a99429b793aebe38cd67a04d/retox-1.2.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "a36adc9bc8e1c7ec0e66011210a86e62", "sha256": "14023a75f4f318e56845e538e52acd7a3d91996af3542fb8f5f4b743c4cf205d" }, "downloads": -1, "filename": "retox-1.2.1.tar.gz", "has_sig": false, "md5_digest": "a36adc9bc8e1c7ec0e66011210a86e62", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8770, "upload_time": "2017-12-17T09:17:03", "url": "https://files.pythonhosted.org/packages/50/f4/f01e4dcc48fb7c04b2f13a3bcb771aa9a9623ab6e3dd2808fa87c10f3db4/retox-1.2.1.tar.gz" } ], "1.3.0": [ { "comment_text": "", "digests": { "md5": "66984a0a8cd42365c4c73e700bf78493", "sha256": "7fa7a685f55b32f44bce01bb11e274c18228247bae874fe598e7e7dc0bc12bd3" }, "downloads": -1, "filename": "retox-1.3.0-py2-none-any.whl", "has_sig": false, "md5_digest": "66984a0a8cd42365c4c73e700bf78493", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11968, "upload_time": "2017-12-19T06:11:09", "url": "https://files.pythonhosted.org/packages/dc/fc/37afc58d46c7f9abde103ce8c7952c3fa099cc3ad5a618319b3ea66c1f6c/retox-1.3.0-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ff477b7da8d961e29aff732beee724f9", "sha256": "854a9b7f03e23a4e42f9d35929a2d4199ec0074a386d69a31a41b43ebc505e9b" }, "downloads": -1, "filename": "retox-1.3.0.tar.gz", "has_sig": false, "md5_digest": "ff477b7da8d961e29aff732beee724f9", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10738, "upload_time": "2017-12-19T06:11:11", "url": "https://files.pythonhosted.org/packages/79/f0/128214b7341187c1eced18c3d5428ec281fd517a228ae9c8ae218ad0af2c/retox-1.3.0.tar.gz" } ], "1.3.1": [ { "comment_text": "", "digests": { "md5": "ed76595714b58bf6b4a0c60f5d1fc4c7", "sha256": "04854e1f3a9503bca3bdabe89f1628a12d6ee75017884362c58b403af254d027" }, "downloads": -1, "filename": "retox-1.3.1-py2-none-any.whl", "has_sig": false, "md5_digest": "ed76595714b58bf6b4a0c60f5d1fc4c7", "packagetype": "bdist_wheel", "python_version": "py2", "requires_python": null, "size": 11888, "upload_time": "2017-12-19T06:14:48", "url": "https://files.pythonhosted.org/packages/3e/4e/ce7b74923a3ed29489d95a82b327dc63368eb87bc9ef98a52df1860dbd2b/retox-1.3.1-py2-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f5f46b050b1adef8151a9454af6d24ad", "sha256": "150a5d4f9e0f133965ea2a0640f5aab27c83ef3589b8e85e57fa5955bca015af" }, "downloads": -1, "filename": "retox-1.3.1.tar.gz", "has_sig": false, "md5_digest": "f5f46b050b1adef8151a9454af6d24ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 10658, "upload_time": "2017-12-19T06:14:50", "url": "https://files.pythonhosted.org/packages/67/91/cb942fcdc999e66a84fdc0de16b081c6a8671644e4f48c0a86c731b4d271/retox-1.3.1.tar.gz" } ], "1.4.0": [ { "comment_text": "", "digests": { "md5": "b340e4b58e6dc3461f9bedc8c5eedd45", "sha256": "4b440cf32dcd9de30a4ac28ad039aea86448104a432f0a4ef931ebd709eaddc0" }, "downloads": -1, "filename": "retox-1.4.0-py3-none-any.whl", "has_sig": false, "md5_digest": "b340e4b58e6dc3461f9bedc8c5eedd45", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 12508, "upload_time": "2017-12-22T20:10:19", "url": "https://files.pythonhosted.org/packages/be/b7/db46b09555390dda098a608098d70e8d6515cad3f9c97a56f9f82aacce4c/retox-1.4.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "63147bf7f1218127961c06dcfa0ef4e7", "sha256": "1fdede71c8d2879c59a01f94b85e914c532128d14f0b88e962acba64e0fe7433" }, "downloads": -1, "filename": "retox-1.4.0.tar.gz", "has_sig": false, "md5_digest": "63147bf7f1218127961c06dcfa0ef4e7", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 524706, "upload_time": "2017-12-22T20:10:25", "url": "https://files.pythonhosted.org/packages/18/3e/540a3bd1b9c52b0b805ecd01904564e9ebcdb7d5d34619d29e663aac157e/retox-1.4.0.tar.gz" } ], "1.5.0": [ { "comment_text": "", "digests": { "md5": "93e94a9d686479cc489fd1a88f0a9534", "sha256": "75be7719f3753d635391c803fea808a8a42149dd457c0d480fccd8d15c7d28da" }, "downloads": -1, "filename": "retox-1.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "93e94a9d686479cc489fd1a88f0a9534", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13414, "upload_time": "2017-12-29T23:02:57", "url": "https://files.pythonhosted.org/packages/0b/bd/fc0ab02848a0b3c00ac871e0be5f4ba1645b6748989be945b483b0fabd11/retox-1.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "46814075a188e2e665d93b8f0147067f", "sha256": "f5efe91399d31ea91d6e251ed6da21702d38ea35d75576691993975b14acbcb5" }, "downloads": -1, "filename": "retox-1.5.0.tar.gz", "has_sig": false, "md5_digest": "46814075a188e2e665d93b8f0147067f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 525497, "upload_time": "2017-12-29T23:03:01", "url": "https://files.pythonhosted.org/packages/bf/c5/20e8acd7fc527b98c409278cb8c72c966119f3870769f225a4fd105d73d0/retox-1.5.0.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "93e94a9d686479cc489fd1a88f0a9534", "sha256": "75be7719f3753d635391c803fea808a8a42149dd457c0d480fccd8d15c7d28da" }, "downloads": -1, "filename": "retox-1.5.0-py3-none-any.whl", "has_sig": false, "md5_digest": "93e94a9d686479cc489fd1a88f0a9534", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 13414, "upload_time": "2017-12-29T23:02:57", "url": "https://files.pythonhosted.org/packages/0b/bd/fc0ab02848a0b3c00ac871e0be5f4ba1645b6748989be945b483b0fabd11/retox-1.5.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "46814075a188e2e665d93b8f0147067f", "sha256": "f5efe91399d31ea91d6e251ed6da21702d38ea35d75576691993975b14acbcb5" }, "downloads": -1, "filename": "retox-1.5.0.tar.gz", "has_sig": false, "md5_digest": "46814075a188e2e665d93b8f0147067f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 525497, "upload_time": "2017-12-29T23:03:01", "url": "https://files.pythonhosted.org/packages/bf/c5/20e8acd7fc527b98c409278cb8c72c966119f3870769f225a4fd105d73d0/retox-1.5.0.tar.gz" } ] }