Skip to content

Releases: wntrblm/nox

2026.08.17 🪟

Choose a tag to compare

@henryiii henryiii released this 18 Aug 03:09
a976d7e

This is a small follow-up release to better support running the parallel mode on legacy windows.

We'd like to thank the following folks who contributed to this release:

Fixes:

Internal changes:

2026.08.10 🔀

Choose a tag to compare

@henryiii henryiii released this 10 Aug 21:52
57f9e10

This release can run sessions in parallel with --parallel/-j (experimental for now, report any bugs!). Requires session opt-in, or use --allow-parallel. Interpreter discovery now uses the python-discovery package, which should be better at finding Python and supports version specifier sets. Using this, script mode reads requires-python. Many bugs were fixed, mostly in Python version handling, conda version specifiers, and option precedence. Unrecognized global options are now an error.

We'd like to thank the following folks who contributed to this release:

Features:

Fixes:

  • Isolate script mode from inherited PYTHONPATH by @yangfan-yf-yf in #1157
  • Require virtualenv 21+ on Python 3.15 by @henryiii in #1158
  • Correct conda version constraints on Windows by @deepakganesh78 in #1146
  • Make explicit command-line options beat noxfile and alias values by @henryiii in #1145
  • Translate PEP 440 range interpreters to conda version specs by @henryiii in #1150
  • Download upper-bound-only Python ranges by @henryiii in #1148
  • Do not write ~/.local/bin shims when provisioning with uv by @henryiii in #1149
  • Don't crash python_versions() on a major-only max_version by @chuenchen309 in #1140
  • Correct python_versions() minimum for major-only and multiple lower bounds by @Sanjays2402 in #1127
  • Don't crash building the manifest when a python-matrix session has an empty parametrize by @chuenchen309 in #1141
  • Keep an empty inner @parametrize from being dropped when stacked by @chuenchen309 in #1138

Documentation:

Internal changes:

2026.07.11 🏪

Choose a tag to compare

@henryiii henryiii released this 12 Jul 00:31
3284968

This release drops Python 3.9 and brings a batch of performance improvements, like caching uv detection and interpreter discovery, plus lazy module imports on Python 3.15. Various bugs were fixed as well.

We'd like to thank the following folks who contributed to this release:

Features:

Performance:

  • Cache session-name normalization, uv detection, interpreter discovery, and metadata reads by @henryiii in #1113
  • Lazy modules on Python 3.15 by @henryiii in #1115

Fixes:

  • Script-mode pip resolution on Windows and --download-python fallback by @henryiii in #1110
  • Don't crash when a parametrized session has an empty parameter list by @henryiii in #1109
  • Hash fully non-ASCII session names instead of returning the envdir by @henryiii in #1108
  • Interpreter-resolution edge cases in virtualenv.py by @henryiii in #1111
  • Create missing parent directories for the session cache dir by @henryiii in #1104
  • Enforce --error-on-external-run even when log=False by @henryiii in #1107
  • Handle = in set_env values and out-of-tree change_dir in tox-to-nox by @henryiii in #1105
  • Return empty dict from load_toml when script file is missing by @SAY-5 in #1096
  • Show envvars in CLI help by @henryiii in #1085

Documentation:

Internal changes:

  • Add Python 3.15 to the test matrix and classifiers by @henryiii in #1133
  • Isolate run_nox envdir to fix flaky test_main_requires by @henryiii in #1134
  • Assorted simplifications and dead-code removal by @henryiii in #1112
  • Remove Python 3.9-era pins/backports and tighten generator annotations by @henryiii in #1106
  • Run tests in parallel by @henryiii in #965
  • Prevent coverage data corruption from artifact name collisions by @henryiii in #1116
  • Reduce the number of times we contact conda-forge servers on non-Windows by @henryiii in #1120
  • Experimental MSYS2/MinGW test run by @henryiii in #1122
  • Update pre-commit (and dependabot) by @henryiii in #1119
  • Bump conda pin to fix signature-verification plugin conflict by @henryiii in #1103
  • Bump setup-uv to maintained tag scheme by @henryiii in #1084

2026.04.10 🧹

Choose a tag to compare

@henryiii henryiii released this 10 Apr 17:41
97e345e

This release drops Python 3.8 and adds a --usage command for full docstrings. Our .nox dir is now ignored by default, virtualenvs are recreated if symlinks are broken (such as after a Python upgrade), and -t now selects from all available sessions.

We'd like to thank the following folks who contributed to this release:

Features:

Fixes:

Internal changes:

Full Changelog: 2026.02.09...2026.04.10

2026.02.09 ❤️‍🩹

Choose a tag to compare

@henryiii henryiii released this 10 Feb 04:38
5a277b7

This small release supports uv 0.10's new requirement that --clear be passed to clear an environment. Python 3.8 support was temporarily re-added since uv 0.10 still supports 3.8, so nox on 3.8 was affected.

We'd like to thank the following folks who contributed to this release:

Bugfixes:

Internal changes:

Documentation:

2025.11.12 🦃

Choose a tag to compare

@henryiii henryiii released this 12 Nov 18:38
0eee2e4

This is a small release to fix a warning when running in script mode before we drop Python 3.8.

We'd like to thank the following folks who contributed to this release:

Bugfixes:

Internal changes:

2025.10.16 ⏲️

Choose a tag to compare

@henryiii henryiii released this 17 Oct 01:52
d9e5e0c

This is a quick release to make our new dependency, pbs-installer, optional. This is only needed to install Python if you are not using the uv backend. We've also added the time taken to the output when it's over a second.

We'd like to thank the following folks who contributed to this release:

Changes:

  • Make pbs-installer an optional dependency by @henryiii in #1017
  • Include time on longer runs (adds humanize dependency) by @henryiii in #1014

Internal:

2025.10.14 🥧

Choose a tag to compare

@henryiii henryiii released this 15 Oct 03:17
449f935

This release updates the default for the GitHub Action to target the current range of recommended Pythons (3.10-3.14). There's now a mechanism to control if nox downloads Python (even when not using uv). Several fixes include better free-threading support, custom filenames in script mode, and support for GitHub Actions Windows ARM runners.

We'd like to thank the following folks who contributed to this release:

Features:

  • Add --download-python python option by @saucoide in #989
  • Add session.env_dir to get the Path to the environment by @jbdyn in #974

Changes:

  • GitHub Action 3.10-3.14 default by @henryiii in #1003
  • Percolate the verbose global option to the silent argument for session installation commands, and document it by @agriyakhetarpal in #983
  • Disallow abbreviated options by @henryiii in #973
  • Log output of failed process by @jbdyn in #974
  • Use a separate logging level (SESSION_INFO) for session info instead of warning by @Spacetown in #990

Bugfixes:

  • Support scripts with custom names by @henryiii in #1007
  • Correctly match free-threaded python versions by @zzzeek in #999
  • Let uv replace the directory instead of deleting it ourselves by @henryiii in #981
  • Tighten type for venv_backend by @henryiii in #967
  • GitHub Actions Windows ARM support by @henryiii in #1002
  • Show a warning (eventually error) if a duplicate session is encountered by @henryiii in #1013
  • Fix validation error for nox.options.keywords by @henryiii in #1011

Documentation:

Internal changes:

2025.05.01 🌸

Choose a tag to compare

@henryiii henryiii released this 01 May 16:35
2254a1e

This is a bugfix release that primarily adds support for uv 0.7+. A few other small fixes were made.

We'd like to thank the following folks who contributed to this release:

Bugfixes:

Documentation:

Internal changes:

2025.02.09 💝

Choose a tag to compare

@theacodes theacodes released this 09 Feb 19:01
a74da2c

This release improves PEP 723 support, including adding dependencies to the noxfile itself ("plugins"). It adds the long-awaited "requires" option, allowing sessions to require other sessions. And it brings further improvements to the pyproject.toml support, including helpers for dependency-groups and Python version lists.

We'd like to thank the following folks who contributed to this release:

New features:

Bugfixes:

  • Correct virtualenv bin dir under mingw python by @davidhewitt in #901
  • Allow pypy-* to be used as well for pypy* (matching GHA) by @henryiii in #913
  • Don't trigger a background update process for virtualenv by @henryiii in #918
  • Include encoding for consistent behavior (default in Python 3.15+) by @henryiii in #891
  • Outer env issues fixed by @henryiii in #874
  • Support noxfile being a symlink by @henryiii in #829
  • Drop PyPy from the default list for the GitHub Action by @henryiii in #916

Bugfixes related to uv support:

Tox-to-nox script:

Improved noxfile validation:

  • Error if invalid reuse_venv set by @henryiii in #872
  • Error with helpful message if invalid option is set via nox.options by @henryiii in #871 (followup fix: #921)
  • Validate entries in nox.config, too, using attrs by @henryiii in #880

Internal changes: