Release Notes

v0.17.4-1

Bug Fixes

  • pin pip<23.2 to avoid breaking change impacting pip-tools for Python 3.7

v0.17.4

Bug Fixes

  • Fixed an issue that caused base virtual environments to get modified when common dependencies were installed in child virtual environments.

v0.17.3

Bug Fixes

  • Fixes an issue in which riot generated a requirements lockfile for a Venv instance other than the one it was running tests for. This behavior was happening due to logic that skipped Venv instances with pkgs == None while preparing the environment, but not while running tests. The fix is to stop riot from ignoring pkgs-less Venvs in all cases.

v0.17.2

Bug Fixes

  • Avoid using latests versions of virtualenv since it has dropped support for Python 2.7.

v0.17.0

New Features

  • Adds the riot requirements <hash> command, which uses pip-compile to generate a requirements lockfile for venv identified by the hash

  • Adds the -c/--recompile-requirements flag to riot run. When set, this flag causes the requirements.txt lockfile and the venv itself to be regenerated. When omitted, the requirements lockfile is only built if it does not already exist.

v0.16.0

Deprecation Notes

  • Drop support for python 3.6

Bug Fixes

  • Prefix paths are now capped to avoid generating paths longer than the FS can support.

v0.15.0

New Features

  • add riot list --hash-only option to list only venv short hashes

v0.14.1

Bug Fixes

  • Modified the output of the --interpreters flag for the riot list command to be sorted by versions and be newline-separated instead of comma-separated.

v0.14.0

New Features

  • A --interpreters flag has been added to the riot list command, which will output a list containing the unique python versions corresponding to each matching riot venv.

v0.13.0

New Features

  • Add RIOT_ENV_BASE_PATH environment variable to change the default path of .riot directory instead of current path.

  • Riot can now be used to run commands in virtual environments even when a Python setup file is not available in the working directory. A warning will be issued in these cases instead.

Bug Fixes

  • Ensure a “restart” of virtualenv deleting the old one with recreation option (-r)

  • Riot will now use the path of the actual discovered Python binary to create virtual environments, instead of using wrapping shell scripts (e.g. pyenv shims).

  • Ensure that the dev package is always installed in the base environment when it is created for the first time, if any exist.

v0.12.2

Bug Fixes

  • Fixed the shell command to use the correct created virtual environment instead of always defaulting to the base one.

v0.12.1

Bug Fixes

  • Fix issue with riot shell not passing required environment variables

  • Fix issues with riot shell always trying to source ~/.bashrc

v0.12.0

New Features

  • The shell command now uses the system default shell as specified by the SHELL variable instead of enforcing the use of bash.

v0.11.0

New Features

  • Inject riot virtualenv instance data into each run via environment variables:

    • RIOT: always set to "1"

    • RIOT_PYTHON_HINT: the Python version hint provided to riot, e.g. "3.6"

    • RIOT_PYTHON_VERSION: the actual Python found/used by riot, e.g. "3.6.10"

    • RIOT_VENV_HASH: the short hash for the running virtualenv instance, e.g. "d36fc71"

    • RIOT_VENV_IDENT: the string identifier used to create the virtualenv, e.g. "pytest_pytest-cov_mock_typing-extensions" - Note: This is only set if the virtualenv instance has defined packages

    • RIOT_VENV_NAME: the name of the virtualenv instance running, e.g. "test", "mypy", etc

    • RIOT_VENV_PKGS: the string of packages + versions this virtualenv instance provided to the pip install command, e.g. "'pytest' 'pytest-cov' 'flask>=2.0.0'" - Note: this may be empty if only parent virtualenv packages are used

    • RIOT_VENV_FULL_PKGS: the full list of packages this virtualenv instance and all of it’s parents provided to the pip install command, e.g. "'pytest' 'pytest-cov' 'flask>=2.0.0'"

  • Add short hash to command summary.

0.10.0

New Features

  • Match pattern against VenvInstance.name and VenvInstance.short_hash. This allows you to riot run <hash> to run only a specific instance.

0.9.0

New Features

  • Added the shell command to spawn a shell inside a virtual environment instance.

0.8.1

Bug Fixes

  • It is now possible to pass command line arguments (“cmdargs”) that contain spaces. That means command line such as riot run foobar -- -k 'not this' is now interpolated correctly in the command line.

  • Fix the handling of package extras in shells where [ and ] are used special characters (eg. zsh).

0.8.0

New Features

  • Added the create argument that allows explicitly creating and using a virtual environment instance with all the dependencies from parent instances installed within it.

0.7.2

Bug Fixes

  • Fix handling of interpreter override to avoid repeated command invocations.

0.7.1

Bug Fixes

  • Fixed handling of environment variables, package installations and namespace packages.

0.7.0

New Features

  • Add Interpreter.version_info function to get interpreter version as a (major, minor, patch) tuple.

Bug Fixes

  • Fix issue where packages from child Venv may get installed in parent Venv. Instead of copying the parent Venv to create the child, create a new Venv and add the parent Venv``s ``site-packages to the PYTHONPATH when running commands.

0.6.0

New Features

  • Add new riot run -x/--exitfirst option to stop executing further test suites after the first one fails.

  • source the shell from the system’s SHELL environment variable, if that’s missing fall back to /bin/bash as the default shell.

0.5.0

New Features

  • Added the option --skip-missing to skip runs on missing Python interpreters.

  • The environment variables LANG, LANGUAGE, SSL_CERT_FILE, HTTP_PROXY, HTTPS_PROXY, NO_PROXY, PIP_INDEX_URL and PATH are always passed to the test environment variables.