- Improve coloring of logged commands - by :user:`ssbarnea`. (:issue:`2356`)
- Pass
PROGRAMDATA,PROGRAMFILES(x86),PROGRAMFILESenvironments on Windows by default as it is needed for discovering the VS C++ compiler and start testing against 3.11 - by :user:`gaborbernat`. (:issue:`2492`) - Support PEP-621 static metadata for getting package dependencies - by :user:`gaborbernat`. (:issue:`2499`)
- Add support for editable wheels, make it the default development mode and rename
dev-legacymode toeditable-legacy- by :user:`gaborbernat`. (:issue:`2502`)
- Recognize
TERM=dumborNO_COLORenvironment variables. - by :user:`ssbarnea`. (:issue:`1290`) - Allow passing config directory without filename. - by :user:`ssbarnea`. (:issue:`2340`)
- Avoid ignored explicit argument 're' console message. - by :user:`ssbarnea`. (:issue:`2342`)
- Display registered plugins with
tox --version- by :user:`mxd4`. (:issue:`2358`) - Allow
--hashto be specified in requirements.txt files. - by :user:`masenf`. (:issue:`2373`) - Avoid impossible minversion version requirements. - by :user:`ssbarnea`. (:issue:`2414`)
- Add new documentation for tox 4 - by :user:`gaborbernat`. (:issue:`2408`)
- Use
toxconsole entry point name instead oftox4- by :user:`gaborbernat`. (:issue:`2344`) - Use
.toxas working directory instead of.tox/4- by :user:`gaborbernat`. (:issue:`2346`) - Switch to
hatchlingas build backend instead ofsetuptools- by :user:`gaborbernat`. (:issue:`2368`)
- Fix CLI raises an error for
-vawithignored explicit argument 'a'- by :user:`gaborbernat`. (:issue:`2343`) - Do not interpolate values when parsing
tox.iniconfiguration files - by :user:`gaborbernat`. (:issue:`2350`)
- Deleted the tox mailing list -- by :user:`jugmac00` (:issue:`2364`)
- Display a hint for unrecognized argument CLI parse failures to use
--separator to pass arguments to commands - by :user:`gaborbernat`. (:issue:`2183`) - Do not allow extending the config set beyond setup to ensures that all configuration values are visible via the config sub-command. - by :user:`gaborbernat`. (:issue:`2243`)
- Print a message when ignoring outcome of commands - by :user:`gaborbernat`. (:issue:`2315`)
- Fix type annotation is broken for :meth:`tox.config.sets.ConfigSet.add_config` when adding a container type - by :user:`gaborbernat`. (:issue:`2233`)
- Insert
TOX_WORK_DIR,TOX_ENV_NAME,TOX_ENV_DIRandVIRTUAL_ENVinto the environment variables for all tox environments to keep contract with tox version 3 - by :user:`gaborbernat`. (:issue:`2259`) - Fix plugin initialization order - core plugins first, then 3rd party and finally inline - by :user:`gaborbernat`. (:issue:`2264`)
- Legacy parallel mode should accept
-pflag without arguments - by :user:`gaborbernat`. (:issue:`2299`) - Sequential run fails because the packaging environment is deleted twice for sequential runs with recreate flag on - by :user:`gaborbernat`. (:issue:`2300`)
- Require Python 3.10 to generate docs - by :user:`jugmac00`. (:issue:`2321`)
- Environment assignment for output breaks when using
-rv(when we cannot guess upfront the verbosity level from the CLI arguments) - by :user:`gaborbernat`. (:issue:`2324`) devenvcommand does not respect specified path - by :user:`gaborbernat`. (:issue:`2325`)
- Enable link check during documentation build - by :user:`gaborbernat`. (:issue:`806`)
- Document ownership of the
tox.wikiroot domain - by :user:`gaborbernat`. (:issue:`2242`) - Document :meth:`tox.config.sets.ConfigSet.loaders` - by :user:`gaborbernat`. (:issue:`2287`)
- Fix CLI documentation is missing and broken documentation references - by :user:`gaborbernat`. (:issue:`2310`)
- Support for grouping environment values together by applying labels to them either at :ref:`core <labels>` and :ref:`environment <labels-env>` level, and allow selecting them via the :ref:`-m <tox-run--m>` flag from the CLI - by :user:`gaborbernat`. (:issue:`238`)
- Support for environment files within the :ref:`set_env` configuration via the
file|prefix - by :user:`gaborbernat`. (:issue:`1938`) - Support for
--no-provisionflag - by :user:`gaborbernat`. (:issue:`1951`) - Missing
pyproject.tomlorsetup.pyfile at the tox root folder without the--install-pkgflag assumes no packaging - by :user:`gaborbernat`. (:issue:`1964`) - Add
externalpackage type for :ref:`package` (see :ref:`external-package-builder`), and extract package dependencies for packages passed in via :ref:`--installpkg <tox-run---installpkg>` - by :user:`gaborbernat`. (:issue:`2204`) - Add support for rewriting script invocations that have valid shebang lines when the
TOX_LIMITED_SHEBANGenvironment variable is set and not empty - by :user:`gaborbernat`. (:issue:`2208`) - Support for the
--discoverCLI flag - by :user:`gaborbernat`. (:pull:`2245`) - Moved the python packaging logic into a dedicate package :pypi:`pyproject-api` and use it as a dependency - by :user:`gaborbernat`. (:pull:`2274`)
- Drop python 3.6 support - by :user:`gaborbernat`. (:pull:`2275`)
- Support for selecting target environments with a given factor via the :ref:`-f <tox-run--f>` CLI environment flag - by :user:`gaborbernat`. (:pull:`2290`)
- Fix
CTRL+Cis not stopping the process on Windows - by :user:`gaborbernat`. (:issue:`2159`) - Fix list/depends commands can create tox package environment as runtime environment and display an error message - by :user:`gaborbernat`. (:pull:`2234`)
tox_add_core_configandtox_add_env_confignow take astate: Stateargument instead of a configuration one, andConfignot longer provides theenvsproperty (instead users should migrate toState.envs) - by :user:`gaborbernat`. (:pull:`2275`)
- Expose the parsed CLI arguments on the main configuration object for plugins and allow plugins to define their own configuration section -- by :user:`gaborbernat`. (:pull:`2191`)
- Let tox run fail when all envs are skipped -- by :user:`jugmac00`. (:issue:`2195`)
- Expose the configuration loading mechanism to plugins to define and load their own sections. Add
:meth:`tox_add_env_config <tox.plugin.spec.tox_add_env_config>` plugin hook called after the configuration environment
is created for a tox environment and removed
tox_configure. Add the main configuration object as argument to :meth:`tox_add_core_config <tox.plugin.spec.tox_add_core_config>`. Move the environment list method from the state to the main configuration object to allow its use within plugins -- by :user:`gaborbernat`. (:issue:`2200`) - Allow running code in plugins before and after commands via :meth:`tox_before_run_commands <tox.plugin.spec.tox_before_run_commands>` and :meth:`tox_after_run_commands <tox.plugin.spec.tox_after_run_commands>` plugin points -- by :user:`gaborbernat`. (:issue:`2201`)
- Allow plugins to update the :ref:`set_env` and change the :ref:`pass_env` configurations -- by :user:`gaborbernat`. (:issue:`2215`)
- Fix env variable substitutions with defaults containing colon (e.g. URL) -- by :user:`comabrewer`. (:issue:`2182`)
- Do not allow constructing
ConfigSetdirectly and implement__contains__forLoader-- by :user:`gaborbernat`. (:pull:`2209`) - Fix old-new value on recreate cache miss-match are swapped -- by :user:`gaborbernat`. (:issue:`2211`)
- Report fails when report does not support Unicode characters -- by :user:`gaborbernat`. (:issue:`2213`)
- Adopt furo theme, update our state diagram and description in user docs (SVG + light/dark variant), split
the Python API into its own page from under the plugin page, and document plugin adoption under the
tox-devorganization - by :user:`gaborbernat`. (:issue:`1881`)
- Add support for :ref:`allowlist_externals`, commands not matching error - by :user:`gaborbernat`. (:issue:`1127`)
- Add outcome of environments into the result json (:ref:`--result-json <tox-run---result-json>`) under the
resultkey containingsuccessboolean,exit_codeinteger anddurationfloat value - by :user:`gaborbernat`. (:issue:`1405`) - Add
execsubcommand that allows users to run an arbitrary command within the tox environment (without needing to modify their configuration) - by :user:`gaborbernat`. (:issue:`1790`) - Add check to validate the base Python names and the environments name do not conflict Python spec wise, when they do
raise error if :ref:`ignore_base_python_conflict` is not set or
False- by :user:`gaborbernat`. (:issue:`1840`) - Allow any Unix shell-style wildcards expression for :ref:`pass_env` - by :user:`gaborbernat`. (:issue:`2121`)
- Add support for :ref:`args_are_paths` flag - by :user:`gaborbernat`. (:issue:`2122`)
- Add support for :ref:`env_log_dir` (compared to tox 3 extend content and keep only last run entries) - by :user:`gaborbernat`. (:issue:`2123`)
- Add support for
{:}substitution in ini files as placeholder for the OS path separator - by :user:`gaborbernat`. (:issue:`2125`) - When cleaning directories (for tox environment,
env_log_dir,env_tmp_dirand packaging metadata folders) do not delete the directory itself and recreate, but instead just delete its content (this allows the user to cd into it and still be in a valid folder after a new run) - by :user:`gaborbernat`. (:pull:`2139`) - Changes to help plugin development: simpler tox env creation argument list, expose python creation directly, allow skipping list dependencies install command for pip and executable is only part of the python cache for virtualenv - by :user:`gaborbernat`. (:pull:`2172`)
- Support
#character in path for the tox project - by :user:`gaborbernat`. (:issue:`763`) - If the command expression fails to parse with shlex fallback to literal pass through of the remaining elements - by :user:`gaborbernat`. (:issue:`1944`)
- tox config fails on :ref:`--recreate <tox-config---recreate>` flag, and once specified the output does not reflect the impact of the CLI flags - by :user:`gaborbernat`. (:issue:`2037`)
- Virtual environment creation for Python is always triggered at every run - by :user:`gaborbernat`. (:issue:`2041`)
- Add support for setting :ref:`suicide_timeout`, :ref:`interrupt_timeout` and :ref:`terminate_timeout` - by :user:`gaborbernat`. (:issue:`2124`)
- Parallel show output not working when there's a packaging phase in the run - by :user:`gaborbernat`. (:pull:`2161`)
- Note constraint files are a subset of requirement files - by :user:`gaborbernat`. (:issue:`1939`)
- Add a note about having a package with different Python requirements than tox and not specifying :ref:`base_python` - by :user:`gaborbernat`. (:issue:`1975`)
- Fix :ref:`--runner <tox---runner>` is missing default value and documentation unclear - by :user:`gaborbernat`. (:issue:`2004`)
- Add support for configuration taken from the
setup.cfgfile -by :user:`gaborbernat`. (:issue:`1836`) - Add support for configuration taken from the
pyproject.tomlfile,toxsectionlegacy_tox_inikey - by :user:`gaborbernat`. (:issue:`1837`) - Add configuration documentation - by :user:`gaborbernat`. (:issue:`1914`)
- Implemented
[]substitution (alias for{posargs}) - by :user:`hexagonrecursion`. (:issue:`1928`) - Implement
[testenv] ignore_outcome- "a failing result of this testenv will not make tox fail" - by :user:`hexagonrecursion`. (:issue:`1947`) - Inline plugin support via
tox_.py. This is loaded where the tox config source is discovered. It's a Python file that can contain arbitrary Python code, such as definition of a plugin. Eventually we'll add a plugin that allows succinct declaration/generation of new tox environments - by :user:`gaborbernat`. (:pull:`1963`) - Introduce the installer concept, and collect pip installation into a
pippackage, also attach to this the requirements file parsing which got a major rework - by :user:`gaborbernat`. (:pull:`1991`) - Support CPython
3.10-by :user:`gaborbernat`. (:pull:`2014`)
- Environments with a platform mismatch are no longer silently skipped, but properly reported - by :user:`jugmac00`. (:issue:`1926`)
- Port pip requirements file parser to
toxto achieve full equivalency (such as support for the per requirement--install-optionand--global-optionflags) - by :user:`gaborbernat`. (:issue:`1929`) - Support for extras with paths for Python deps and requirement files - by :user:`gaborbernat`. (:issue:`1933`)
- Due to a bug
\{posargs} {posargs}used to expand to literal{posargs} {posargs}. Now the second{posargs}is expanded.\{posargs} {posargs}expands to{posargs} positional arguments here- by :user:`hexagonrecursion`. (:issue:`1956`) - Enable setting a different
upstreamrepository for the coverage diff report. This has been hardcoded toupstream/rewriteuntil now. by :user:`jugmac00`. (:issue:`1972`) - Enable replacements (a.k.a section substitions) for section names containing a dash in sections
without the
testenv:prefix - by :user:`jugmac00`, :user:`obestwalter`, :user:`eumiro`. (:issue:`1985`) - Fix legacy list env command for empty/missing envlist - by :user:`jugmac00`. (:issue:`1987`)
- Requirements and constraints files handling got reimplemented, which should fix all open issues related to this area - by :user:`gaborbernat`. (:pull:`1991`)
- Use importlib instead of
__import__- by :user:`dmendek`. (:issue:`1995`) - Evaluate factor conditions for
commandkeys - by :user:`jugmac00`. (:issue:`2002`) - Prefer f-strings instead of the str.format method - by :user:`eumiro`. (:issue:`2012`)
- Fix regex validation for SHA 512 hashes - by :user:`jugmac00`. (:issue:`2018`)
- Actually run all environments when
ALLis provided to the legacy env command - by :user:`jugmac00`. (:issue:`2112`) - Move from
appdirstoplatformdirs- by :user:`gaborbernat`. (:pull:`2117`) - Move from
tomltotomli- by :user:`gaborbernat`. (:pull:`2118`)
- Start documenting the plugin interface. Added :meth:`tox_register_tox_env <tox.plugin.spec.tox_register_tox_env>`,
:meth:`tox_add_option <tox.plugin.spec.tox_add_option>`,
:meth:`tox_add_core_config <tox.plugin.spec.tox_add_core_config>`,
tox_configure- by :user:`gaborbernat`. (:pull:`1991`) - Explain how
-vand-qflags play together to determine CLI verbosity level - by :user:`jugmac00`. (:issue:`2005`) - Start polishing the documentation for the upcoming final release - by :user:`jugmac00`. (:pull:`2006`)
- Update documentation about changelog entries for trivial changes - by :user:`jugmac00`. (:issue:`2007`)
- Add basic quickstart implementation (just use pytest with the current Python version) - by :user:`gaborbernat`. (:issue:`1829`)
- Support comments via the
#character within the ini configuration (to force a literal#use\#) - by :user:`gaborbernat`. (:issue:`1831`) - Add support for the
install_commandsettings in the virtual env test environments - by :user:`gaborbernat`. (:issue:`1832`) - Add support for the
package_rootsetupdir( Python scoped) configuration that sets the root directory used for packaging (the location of the historicalsetup.pyand modernpyproject.toml). This can be set at root level, or at tox environment level (the later takes precedence over the former) - by :user:`gaborbernat`. (:issue:`1838`) - Implement support for the
--installpkgCLI flag - by :user:`gaborbernat`. (:issue:`1839`) - Add support for the
list_dependencies_commandsettings in the virtual env test environments - by :user:`gaborbernat`. (:issue:`1842`) - Add support for the
ignore_errorssettings in tox test environments - by :user:`gaborbernat`. (:issue:`1843`) - Add support for the
pip_presettings for virtual environment based tox environments - by :user:`gaborbernat`. (:issue:`1844`) - Add support for the
platformsettings in tox test environments - by :user:`gaborbernat`. (:issue:`1845`) - Add support for the
recreatesettings in tox test environments - by :user:`gaborbernat`. (:issue:`1846`) - Allow Python test and packaging environments with version 2.7 - by :user:`gaborbernat`. (:pull:`1900`)
- Do not construct a requirements file for deps in virtualenv, instead pass content as CLI argument to pip - by :user:`gaborbernat`. (:pull:`1906`)
- Do not display status update environment reports when interrupted or for the final environment ran (because at the final report will be soon printed and makes the status update redundant) - by :user:`gaborbernat`. (:issue:`1909`)
- The
_TOX_SHOW_THREADenvironment variable can be used to print alive threads when tox exists (useful to debug when tox hangs because of some non-finished thread) and also now prints the pid of the local subprocess when reporting the outcome of a execution - by :user:`gaborbernat`. (:pull:`1915`)
- Normalize description text to collapse newlines and one or more than whitespace to a single space - by :user:`gaborbernat`. (:issue:`1829`)
- Support aliases in show config key specification (will print with the primary key) - by :user:`gaborbernat`. (:issue:`1831`)
- Show config no longer marks as unused keys that are inherited (e.g. if the key is coming from
testenvsection and our target istestenv:fix) - by :user:`gaborbernat`. (:issue:`1833`) --alwayscopyand--sitepackageslegacy only flags do not work - by :user:`gaborbernat`. (:issue:`1839`)- Fix handling of
commands_pre/commands/commands_postto be in line with tox 3 (returned incorrect exit codes and post was not always executed) - by :user:`gaborbernat`. (:issue:`1843`) - Support requirement files containing
--hashconstraints - by :user:`gaborbernat`. (:issue:`1903`) - Fix a bug that caused tox to never finish when pulling configuration from a tox run environment that was never executed - by :user:`gaborbernat`. (:pull:`1915`)
- Drop support for
sdistsrcflag because introduces a significant complexity and is barely used (5 hits on a github search). --skip-missing-interpreters,--notest,--sdistonly,--installpkg,--developand--skip-pkg-installCLI flags are no longer available fordevenv(enforce the only sane value for these).
- Drop support for
Remove Jenkins override support: this feature goes against the spirit of tox - blurring the line between the CI and local runs. It also singles out a single CI provider, which opens the door for other CIs wanting similar functionality. Finally, only 54 code file examples came back on a Github search, showing this is a not widely used feature. People who still want Jenkins override support may create a tox plugin to achieve this functionality - by :user:`gaborbernat`. (:issue:`1841`)
- Support the
system_site_packages/sitepackagesflag for virtual environment based tox environments - by :user:`gaborbernat`. (:issue:`1847`) - Support the
always_copy/alwayscopyflag for virtual environment based tox environments - by :user:`gaborbernat`. (:issue:`1848`) - Support the
downloadflag for virtual environment based tox environments - by :user:`gaborbernat`. (:issue:`1849`) - Recreate virtual environment based tox environments when the
virtualenvversion changes - by :user:`gaborbernat`. (:issue:`1865`)
Not all package dependencies are installed when different tox environments in the same run use different set of extras - by :user:`gaborbernat`. (:issue:`1868`)
Support
=separator in requirement file flags, directories as requirements and correctly set the root of the requirements file when using the--rootCLI flag to change the root - by :user:`gaborbernat`. (:issue:`1853`)Cleanup local subprocess file handlers when exiting runs (fixes
ResourceWarning: unclosed fileerrors when running withenv PYTHONTRACEMALLOC=5 PYTHONDEVMODE=yunder a Python built with--with-pydebug) - by :user:`gaborbernat`. (:issue:`1857`)Various small bugfixes:
- honor updating default environment variables set by internal tox via set env (
PIP_DISABLE_PIP_VERSION_CHECK) - do not multi-wrap
HandledErrorin the ini file loader, - skipped environments are logged now with their fail message at default verbosity level,
- fix an error that made the show configuration command crash when making the string of a config value failed,
- support empty-new lines within the set env configurations replacements,
- honor updating default environment variables set by internal tox via set env (
- Add CLI documentation - by :user:`gaborbernat`. (:pull:`1852`)
- Use
.tox/4instead of.tox4folder (so ignores for tox 3 works for tox 4 too), reminder we'll rename this to just.toxbefore public release, however to encourage testing tox 4 in parallel with tox 3 this is helpful - by :user:`gaborbernat`. (:discussion:`1812`) - Colorize the
configcommand: section headers are yellow, keys are green, values remained white, exceptions are light red and comments are cyan - by :user:`gaborbernat`. (:pull:`1821`)
- Support legacy format (
-cconstraint.txt) of constraint files indeps, and expand constraint files too when viewing inside thedepsor calculating weather our environment is up to date or not - by :user:`gaborbernat`. (:issue:`1788`) - When specifying requirements/editable/constraint paths within
depsescape space, unless already escaped to support running specifying transitive requirements files within deps - by :user:`gaborbernat`. (:issue:`1792`) - When using a provisioned tox environment requesting
--recreatefailed withAttributeError- by :user:`gaborbernat`. (:issue:`1793`) - Fix
RequirementsFilefrom tox is rendered incorrectly inconfigcommand - by :user:`gaborbernat`. (:issue:`1820`) - Fix a bug in the configuration system where referring to the same named key in another env/section causes circular dependency error - by :user:`gaborbernat`. (:pull:`1821`)
- Raise
ValueErrorwith descriptive message when a requirements file specified does not exist - by :user:`gaborbernat`. (:pull:`1828`) - Support all valid requirement file specification without delimiting space in the
depsof thetox.ini- by :user:`gaborbernat`. (:issue:`1834`)
- Add code style guide for contributors - by :user:`gaborbernat`. (:issue:`1734`)
- Raise exception when set env enters into a circular reference - by :user:`gaborbernat`. (:issue:`1779`)
- Raise exception when variable substitution enters into a circle.
- Add
{/}as substitution for os specific path separator. - Add
{env_bin_dir}constant substitution. - Implement support for
--discoverflag - by :user:`gaborbernat`. (:pull:`1784`)
Entries in the
set_envdoes not reference environments fromset_env- by :user:`gaborbernat`. (:issue:`1776`)envsubstitution does not uses values fromset_env- by :user:`gaborbernat`. (:issue:`1779`)Adopt tox 3 base pass env list, by adding:
- on all platforms:
LANG,LANGUAGE,CURL_CA_BUNDLE,SSL_CERT_FILE,LD_LIBRARY_PATHandREQUESTS_CA_BUNLDE, - on Windows:
SYSTEMDRIVE- by :user:`gaborbernat`. (:issue:`1780`)
- on all platforms:
Fixed a bug that crashed tox where calling tox with the recreate flag and when multiple environments were reusing the same package - by :user:`gaborbernat`. (:issue:`1782`)
- Python version markers are stripped in package dependencies (after wrongfully being detected as an extra marker).
- In packaging APIs do not set
PYTHONPATH(to empty string) ifbackend-pathis empty. - Fix commands parsing on Windows (do not auto-escape
\- instead users should use the new{\}, and on parsed arguments strip both'and"quoted outcomes). - Allow windows paths in substitution set/default (the
:character used to separate substitution arguments may also be present in paths on Windows - do not support single capital letter values as substitution arguments) - by :user:`gaborbernat`. (:pull:`1784`)
Rework how we handle Python packaging environments:
- the base packaging environment changed from
.packageto.pkg, - merged the
sdist,wheelanddevseparate packaging implementations into one, and internally dynamically pick the one that's needed, - the base packaging environment always uses the same Python environment as tox is installed into,
- the base packaging environment is used to get the metadata of the project (via PEP-517) and to build
sdistanddevpackages, - for building wheels introduced a new per env configurable option
wheel_build_env, if the target Python major/minor and implementation for the run tox environment and the base package tox environment matches set this to.pkg, otherwise this is.pkg-{implementation}{major}{minor}, - internally now packaging environments can create further packaging environments they are responsible of managing,
- updated
dependsto use the packaging logic, - add support skip missing interpreters for depends and show config,
- the base packaging environment changed from
- Add option to disable colored output, and support
NO_COLORandFORCE_COLORenvironment variables - by :user:`gaborbernat`. (:pull:`1630`)
- Fix coverage generation in CI - by :user:`gaborbernat`. (:pull:`1551`)
- Fix the CI failures:
- drop Python 3.5 support as it's not expected to get to a release before EOL,
- fix test using
\ninstead ofos.linesep, - Windows Python 3.6 does not contain
_overlapped.ReadFileInto - by :user:`gaborbernat`. (:pull:`1556`)
- Add base documentation by merging virtualenv structure with tox 3 - by :user:`gaborbernat`. (:pull:`1551`)
- First version all is brand new.
Warning
The current tox is the second iteration of implementation. From version 0.5 all the way to 3.X
we numbered the first iteration. Version 4.0.0a1 is a complete rewrite of the package, and as such this release
history starts from there. The old changelog is still available in the
legacy branch documentation.