{ "info": { "author": "Paul Becotte", "author_email": "pjbecotte@gmail.com", "bugtrack_url": null, "classifiers": [ "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3", "Programming Language :: Python :: 3.6", "Programming Language :: Python :: 3.7" ], "description": "Intro\n======\n|pypi| |bld| |cvg| |black|\n\nRye is a python task automation tool. It is `one`_ `of`_ a `long`_\n`list`_ of other projects. The question at this point should be, why not\njust use one of thos other tools?\nThe answer is that I had a workflow in mind, but couldn't quite get any\nof the other tools to do it.\n\n* Read from a simple config file\n* Maintain a set of virtualenvs for each environment\n* Update those environments when my pyproject.toml or poetry.lock files changed.\n* Run all my tasks in parallel\n* Let tasks share environments where that makes sense (lint and typing?)\n* Work with poetry\n* Allow installing dependencies and the package separately (for Dockerfile caching)\n\nI was trying to set this up without thinking it through a ton, and kept fighting with\ntox's built in defaults. No way to install packages without the source code. Using\npoetry involved some truly ugly hacks. No auto-update of environments, and hard to share\nenvironments between tasks. I did like that it depended on a config file with a lot of\nbuilt in behaviors that you could inherit from!\n\nI looked at stuff like Nox and Invoke- Nox required more programming then tox and still\nhad a bunch of defaults I'd have to figure out how to override. Invoke would have just\nbeen working from scratch.\n\nWhat I really wanted was a makefile- list tasks, specify dependencies for those tasks,\nand rebuild them when the dependencies change. The actual commands to run should\nbe completely configurable. So Rye was born. It uses pyproject.toml as configuration.\nIt will automatically keep your virtual environments in sync with your config files-\nno matter the tool you're using. It has a good set of default behaviors you can pull in.\nBest of all, every step of the process is completely configurable- if you want!\n\n\n.. code-block:: toml\n\n\t# pyproject.toml\n\t[tool.rye]\n\tdefault_tasks = [\"test\", \"lint\", \"format\", \"typing\"]\n\n\t[tool.rye.\"task.pytest\"]\n\ttarget_environments = [\"poetry.py37\", \"poetry.py36\"]\n\n\t[tool.rye.\"poetry.py36\".\"task.pytest\"]\n\tcommands = [[\"pytest\", \"tests\", \"--no-cov\"]]\n\n\t[tool.rye.\"task.lint\"]\n\ttarget_environments = [\"poetry.py37\"]\n\tcommands = [[\"pylint\", \"src/rye\", \"tests\"]]\n\n\t[tool.rye.\"task.format\"]\n\ttarget_environments = [\"poetry.py37\"]\n\tcommands = [\n\t\t[\"black\", \".\", \"--check\"],\n\t\t[\"isort\", \"-rc\", \"-tc\", \"--check-only\", \"src\", \"tests\"],\n\t]\n\n\t[tool.rye.\"task.typing\"]\n\ttarget_environments = [\"poetry.py37\"]\n\tcommands = [\n\t\t[\"mypy\", \"src/rye\", \"--ignore-missing-imports\"],\n\t]\n\n.. code-block:: bash\n\n\t$ rye\n\tRunning tasks- ['poetry.py37', 'TASK poetry.py37#lint', 'TASK poetry.py37#format', 'TASK poetry.py37#typing']\n\tENV poetry.py37 > Preparing Env\n\tENV poetry.py37 > Already using interpreter /home/pbecotte/venvs/rye/bin/python3.7\n\tENV poetry.py37 > Using base prefix '/usr'\n\tENV poetry.py37 > New python executable in /home/pbecotte/PycharmProjects/rye/.rye/py37/bin/python3.7\n\tENV poetry.py37 > Also creating executable in /home/pbecotte/PycharmProjects/rye/.rye/py37/bin/python\n\tENV poetry.py37 > Installing setuptools, pip, wheel...\n\nRead the full documentation at https://rye.readthedocs.io/en/latest/\nOr check out the source at https://gitlab.com/pjbecotte/rye\n\nInstallation\n==================\n\nYou can install Rye from pypi-\n\n::\n\n\tpip install rye\n\n.. |cvg| image:: https://gitlab.com/pjbecotte/rye/badges/master/coverage.svg\n.. |bld| image:: https://gitlab.com/pjbecotte/rye/badges/master/pipeline.svg\n.. |black| image:: https://img.shields.io/badge/code%20style-black-000000.svg\n.. |pypi| image:: https://badge.fury.io/py/rye.svg\n\n.. _one: https://github.com/theacodes/nox\n.. _of: https://github.com/tox-dev/tox\n.. _long: https://github.com/fabric/fabric\n.. _list: https://www.gnu.org/software/make/\n", "description_content_type": "text/x-rst", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://gitlab.com/pjbecotte/rye", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "rye", "package_url": "https://pypi.org/project/rye/", "platform": "", "project_url": "https://pypi.org/project/rye/", "project_urls": { "Homepage": "https://gitlab.com/pjbecotte/rye", "Repository": "https://gitlab.com/pjbecotte/rye" }, "release_url": "https://pypi.org/project/rye/0.3.2/", "requires_dist": [ "toml (>=0.10,<0.11)", "settingscascade (>=0.3.4,<0.4.0)", "click (>=7.0,<8.0)", "colorama (>=0.4,<0.5)", "virtualenv (>=16.6,<17.0)", "importlib_metadata (>=0.23,<0.24)" ], "requires_python": ">=3.6,<4.0", "summary": "", "version": "0.3.2" }, "last_serial": 6004868, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "a6cf4d35a227edbaca88c325feb6aac7", "sha256": "3278a7ddd45ab8fee143bde4606a87a2f3ee99a53a817d8d578647f792f6e258" }, "downloads": -1, "filename": "rye-0.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "a6cf4d35a227edbaca88c325feb6aac7", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 6924, "upload_time": "2019-07-24T12:58:09", "url": "https://files.pythonhosted.org/packages/b5/a6/1e165ff30a0277639f505302d49b48ed1824886df678109e1e7b56eab29e/rye-0.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "468f18f11139a1cd315e6f69da1ca2fa", "sha256": "528d0b599647a20a37ee2377bf54c159aad431102bb1dc1bbb1526c11dc77a3b" }, "downloads": -1, "filename": "rye-0.0.1.tar.gz", "has_sig": false, "md5_digest": "468f18f11139a1cd315e6f69da1ca2fa", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 5316, "upload_time": "2019-07-24T12:58:11", "url": "https://files.pythonhosted.org/packages/eb/72/9d4d8ec4c670712e794cbf7ca7e9a7445b102f5bc7fbc38e735cff081db6/rye-0.0.1.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "64d97126fdec9e734046bd3a40c0e988", "sha256": "f292b846f6bc84f1d7ebbce4eef4f9373fd7172438e03798ed18aa36e8015fe2" }, "downloads": -1, "filename": "rye-0.1.0-py3-none-any.whl", "has_sig": false, "md5_digest": "64d97126fdec9e734046bd3a40c0e988", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8277, "upload_time": "2019-07-31T18:28:46", "url": "https://files.pythonhosted.org/packages/89/b5/ea13c9e8b7f6ef75f78651bd052ad176e6896ee58db9e64f6b859d04bcd5/rye-0.1.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9783922e69072c0608ff50c441d77c53", "sha256": "38e13d1dffe0c3852e7637bc62e12e12345daa2a803664c6a9281f328c208b4f" }, "downloads": -1, "filename": "rye-0.1.0.tar.gz", "has_sig": false, "md5_digest": "9783922e69072c0608ff50c441d77c53", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 8126, "upload_time": "2019-07-31T18:28:48", "url": "https://files.pythonhosted.org/packages/3f/0d/6161a2733dd4bd67a15776cdde72f7c96d1f7e5f6a65778832ac86176a51/rye-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "bfbf8a79659967431010a5c211c5438e", "sha256": "e94a1206e514876e4f6eef8e172f030d1a1ba0271684ff57b101873057d0bfd0" }, "downloads": -1, "filename": "rye-0.2.0-py3-none-any.whl", "has_sig": false, "md5_digest": "bfbf8a79659967431010a5c211c5438e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8464, "upload_time": "2019-10-04T04:42:28", "url": "https://files.pythonhosted.org/packages/18/3f/15be893ba884338e39cec77a6fc90c5b2d8011e5d13e2760f57963d7d3c1/rye-0.2.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "419abbbcf45545606e6f5353a8feb5d3", "sha256": "e38f23a99936a595bfcda8aa827cc2448f323017dbf80c9dcbaf633c5951be20" }, "downloads": -1, "filename": "rye-0.2.0.tar.gz", "has_sig": false, "md5_digest": "419abbbcf45545606e6f5353a8feb5d3", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 8288, "upload_time": "2019-10-04T04:42:30", "url": "https://files.pythonhosted.org/packages/20/c0/dbfcda915fdb6c594d3274554871e977bbdfcdc526cfde1771119e8f23a5/rye-0.2.0.tar.gz" } ], "0.3": [ { "comment_text": "", "digests": { "md5": "d6d66064baf66845533b2ffdd340de49", "sha256": "6e19799b176a067bb203167c6a08661b1a26cee463f240a95200194df15257f6" }, "downloads": -1, "filename": "rye-0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "d6d66064baf66845533b2ffdd340de49", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8709, "upload_time": "2019-10-17T00:58:38", "url": "https://files.pythonhosted.org/packages/65/3a/30061702de5a586d8cfddad847a50777cb0a139c0a9067bf0c9297f6bb21/rye-0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "883d881c8d7ff356445664733fbaa6d7", "sha256": "011d3e63ef2e74057e6a6e210608a17009f0b9db3398e6aefbe832d3650e7433" }, "downloads": -1, "filename": "rye-0.3.tar.gz", "has_sig": false, "md5_digest": "883d881c8d7ff356445664733fbaa6d7", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 8565, "upload_time": "2019-10-17T00:58:40", "url": "https://files.pythonhosted.org/packages/b0/79/c23c1baa557dc4dd561f3f372759155b8532344c614355072409900ea8c7/rye-0.3.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "64a3b3a9da4677590bd97f2a86807ab0", "sha256": "afa645cfe1e05f7bd835ee8a966b3746e0ff034bc1cd437e6b68ff57470dde7e" }, "downloads": -1, "filename": "rye-0.3.1-py3-none-any.whl", "has_sig": false, "md5_digest": "64a3b3a9da4677590bd97f2a86807ab0", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 8922, "upload_time": "2019-10-17T02:48:58", "url": "https://files.pythonhosted.org/packages/fd/08/2d45774d291a4185b0e478b07958d2d512a143ad4668e581f8ddafdad957/rye-0.3.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "0cb7fc6c2314ac370dd77b8e2543d306", "sha256": "e189dadf06c9a4de668c684800e486af1b2307325893b2830e4372d98b47739c" }, "downloads": -1, "filename": "rye-0.3.1.tar.gz", "has_sig": false, "md5_digest": "0cb7fc6c2314ac370dd77b8e2543d306", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 9046, "upload_time": "2019-10-17T02:49:00", "url": "https://files.pythonhosted.org/packages/48/e6/ec798e540ebda11d28b949e9176dea9b69414b8d927200a41c2edf34f53b/rye-0.3.1.tar.gz" } ], "0.3.2": [ { "comment_text": "", "digests": { "md5": "686119b0f9611ffc85deb6f602a12280", "sha256": "a745ab846652d0e8ccd1367d5460dd9cda50449e7962967c2f206d8d89ef64bd" }, "downloads": -1, "filename": "rye-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "686119b0f9611ffc85deb6f602a12280", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 9270, "upload_time": "2019-10-20T22:31:09", "url": "https://files.pythonhosted.org/packages/e6/90/2a55dec96e0fa0b87a3e2bc700801b366ce620650f6133109f329729de8a/rye-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ade677bed610eff85ba2ccb3fe63f456", "sha256": "05f7d7c2eaa2b053a8651b3d9753a7834aa1bbe5747fa3f9f1abb158a81e6ca1" }, "downloads": -1, "filename": "rye-0.3.2.tar.gz", "has_sig": false, "md5_digest": "ade677bed610eff85ba2ccb3fe63f456", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 9361, "upload_time": "2019-10-20T22:31:10", "url": "https://files.pythonhosted.org/packages/0a/60/e5f3b1430abd3acf7fc567cca78d0d9aa15cc3b7a4968b1f42e5a0fc0453/rye-0.3.2.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "686119b0f9611ffc85deb6f602a12280", "sha256": "a745ab846652d0e8ccd1367d5460dd9cda50449e7962967c2f206d8d89ef64bd" }, "downloads": -1, "filename": "rye-0.3.2-py3-none-any.whl", "has_sig": false, "md5_digest": "686119b0f9611ffc85deb6f602a12280", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": ">=3.6,<4.0", "size": 9270, "upload_time": "2019-10-20T22:31:09", "url": "https://files.pythonhosted.org/packages/e6/90/2a55dec96e0fa0b87a3e2bc700801b366ce620650f6133109f329729de8a/rye-0.3.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "ade677bed610eff85ba2ccb3fe63f456", "sha256": "05f7d7c2eaa2b053a8651b3d9753a7834aa1bbe5747fa3f9f1abb158a81e6ca1" }, "downloads": -1, "filename": "rye-0.3.2.tar.gz", "has_sig": false, "md5_digest": "ade677bed610eff85ba2ccb3fe63f456", "packagetype": "sdist", "python_version": "source", "requires_python": ">=3.6,<4.0", "size": 9361, "upload_time": "2019-10-20T22:31:10", "url": "https://files.pythonhosted.org/packages/0a/60/e5f3b1430abd3acf7fc567cca78d0d9aa15cc3b7a4968b1f42e5a0fc0453/rye-0.3.2.tar.gz" } ] }