Quickstart

riot is configured with a single Python file typically placed at the root of your project and named riotfile.py.

Here is a riotfile.py which defines 5 virtual environment instances. One defines how to run mypy, another for black and 3 instances to run tests with pytest:

from riot import latest, Venv

venv = Venv(
    pys=[3.9],
    venvs=[
        Venv(
            name="fmt",
            command="black .",
            pkgs={
                "black": "==20.8b1",
            },
        ),
        Venv(
            name="mypy",
            command="mypy",
            pkgs={
                "mypy": latest,
            },
        ),
        Venv(
            name="test",
            pys=["3.7", "3.8", "3.9"],
            command="pytest",
            pkgs={
                "pytest": latest,
            },
        ),
    ],
)

To run an instance the run command can be used which will run all instances with a name matching the argument:

$ riot run fmt

will run the first instance which is the command black . in a Python 3.9 virtual environment with black version 20.8b1 installed.

To view all the instances that are produced use the list command:

$ riot list
fmt  Python 3.9 'black==20.8b1'
mypy  Python 3.9 'mypy'
test  Python 3.7 'pytest'
test  Python 3.8 'pytest'
test  Python 3.9 'pytest'

The black and mypy instances will be run with Python 3.9 and the pytest instance will be run in Python 3.7, 3.8 and 3.9.