Releases: wntrblm/nox
2025.02.09 π
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:
- @btemplep (first contribution)
- @chirizxc (first contribution)
- @davidhewitt (first contribution)
- @gschaffner (first contribution)
- @henryiii
- @oliversen (first contribution)
New features:
- Support PEP 723 noxfiles by @henryiii in #881
- Expose main as
nox.main
by @henryiii in #878 (followup fix: #884) - Support session dependencies (
requires
) by @gschaffner in #631 - Helper to get dependency-groups by @henryiii in #876
- Helper to get the Python listing by @henryiii in #877
- Add a
"pyproject.toml"
default forload_toml
by @henryiii in #917
Bugfixes:
- Correct virtualenv bin dir under mingw python by @davidhewitt in #901
- Allow
pypy-*
to be used as well forpypy*
(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:
- Catch
PermissionError
from popen when UV is not installed by @btemplep in #908 - Use
uv python install
only with uv backend by @oliversen in #900 - Handle
"uvx"
like"uv"
by @henryiii in #920 - Support broken uv (via pyenv) by @henryiii in #922
Tox-to-nox script:
- Drop support for tox 3 by @henryiii in #910
- Switch pkgutil for importlib-resources by @henryiii in #887
- Correctly separate command-line arguments by @chirizxc in #906
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:
- Add more Ruff checks and fixes by @henryiii in #893
- Cleanup symlink noxfile code by @henryiii in #865
- Drop some type ignores for colorlog by @henryiii in #888
- Limit the visible items for tab completion by @henryiii in #889
- More typing and test improvements by @henryiii in #890
- Some extra simplifications from Ruff by @henryiii in #870
- Use dependency-groups by @henryiii in #873
- Pull out env creation into helper method by @henryiii in #912
- Pulled out
get_virtualenv
& better typing by @henryiii in #882 - Fix broken mock on CPython 3.12.8+ in tests by @henryiii in #903
- Statically type tests by @henryiii in #894
- Use
tmp_path
instead oftmpdir
in tests by @henryiii in #895
2024.10.09 π
This release adds explicit support for Python 3.13 and drops support for running Nox itself under Python 3.7. Note that you can still use 3.7 in your Nox sessions, we just dropped support for installing & running nox
itself in 3.7.
We'd like to thank the following folks who conributed to this release:
- @edgarrmondragon
- @ember91
- @henryiii
- @hmd101
- @KasperZutterman
- @living180
- @mayeut
- @saucoide
- @Wurstnase
New features:
- Allow setting tags on parametrized sessions by @living180 in #832
- Added support for
uv
-installed pythons by @saucoide in #842 - Added
session.install_and_run_script
by @henryiii in #847
Bugfixes:
- Updated type annotation of
stderr
parameter to make it optional by @edgarrmondragon in #835 - Removed
add_timestamp
fromnoxfile.options
by @Wurstnase in #856
Documentation:
- Added warning about uv and local packages by @henryiii in #830
- Fixed contribution guidelines by @Wurstnase in #850
- Fixed typos by @ember91 in #839
- Fixed typoss in cookbook by @hmd101 in #837
- Added missing cookbook recipe snippet imports by @KasperZutterman in #853
- Cleaned up
dev
recipe by @henryiii in #862 - Added note about
uv reinstall
by @henryiii in #863 - Added
uv sync
example by @henryiii in #864
Internal changes:
- Use default action tests for macos-14 by @mayeut in #824
- Added 3.13 to the action defaults by @henryiii in #846
- Dropped Python 3.7 by @henryiii in #822
- Included 3.13 in classifiers by @henryiii in #851
- Use
uv
if available in action by @henryiii in #831 - Run tests with Python 3.13 by @edgarrmondragon in #834
- Updated
macos-latest
tomacos-14
by @henryiii in #821 - Use
miniforge
by @henryiii in #854 - Use
astral-sh/setup-uv
by @henryiii in #859 - Dropped PyPy 3.9 from test matrix by @henryiii in #858
2024.04.15 πͺΌ
We'd like to thank the following folks who contributed to this release:
New features:
- Added support for PEP 723 (inline script metadata) with
nox.project.load_toml
by @henryiii in #811 - Added support for
micromamba
by @henryiii in #807 - Added
venv_backend
property to sessions by @henryiii in #798 - Added the ability to use
None
to remove environment variables by @henryiii in #812 - Added support for skipping sessions by default using
default=False
by @henryiii in #810
Bugfixes:
- Use static arguments instead of
**kwargs
by @henryiii in #815 - Do not depend on
pipx
in Nox GitHub action by @mayeut in #768 - Disallow
UV_SYSTEM_PYTHON
by @henryiii in #817 - Ensure 'uv' always works in a uv venv by @henryiii in #818
- Look for
uv
next topython
if it's not onPATH
by @cjolowicz in #795 - Fixed missing f-string in
--help
message by @cjolowicz in #790 - Don't error if not installing to passthrough by @henryiii in #809
- Avoid mixing
venv
andconda
from environment by @henryiii in #804 - Skip test for conda env when
conda
isn't installed by @cjolowicz in #794
2024.03.02
We'd like to thank the following folks who contributed to this release:
- @DiddiLeija
- @MicaelJarniac
- @chrysle
- @edgarrmondragon
- @fazledyn-or
- @franekmagiera
- @frenzymadness
- @henryiii
- @johnthagen
- @mayeut
- @patrick91
- @q0w
- @samypr100
- @scop
- @stasfilin
- @stefanv
New Features:
- Add
uv
backend by @henryiii in #762 - Add venv backend fallback by @henryiii in #787
- Add option
--reuse-venv {yes,no,never,always}
by @samypr100 in #730 - Add environment variable
NOX_DEFAULT_VENV_BACKEND
for default backend by @edgarrmondragon in #780 - Rename
session.run_always
tosession.run_install
by @henryiii in #770 - Add more option argument completions by @scop in #707
- Implement
tox-to-nox
for tox 4 by @frenzymadness in #687 - Allow
--force-python
on unparametrized sessions by @chrysle in #756 - Add
include_outer_env
parameter tosession.run
and friends by @franekmagiera in #652 - GitHub Action: Add support for the
~
version specifier by @mayeut in #712
Bugfixes:
- Rebuild environment when changing to an incompatible backend type by @henryiii in #781
- Warn user when first argument to
session.run
is a list by @stefanv in #786 - Allow overriding
nox.options.sessions
with--tags
by @q0w in #684 - Allow overriding
NO_COLOR
with--force-color
by @stasfilin in #723 - Fix
nox.options.error_on_missing_interpreters
when running in CI by @samypr100 in #725
Documentation Improvements:
- Create an official Nox badge by @johnthagen in #714 and #715
- Add recipe for generating a matrix with GitHub Actions by @henryiii in #696
- Update some links by @henryiii in #774
Internal Changes:
- fix: always pull versions from metadata by @henryiii in #782
- chore: ruff moved to astral-sh by @henryiii in #722
- Use double quotes instead of single in github actions examples by @patrick91 in #724
- tests: fixes when running locally by @henryiii in #721
- chore: modernize Ruff config, bump pre-commit by @henryiii in #744
- chore(deps): bump actions/checkout from 3 to 4 by @dependabot in #738
- chore: ruff-format by @henryiii in #745
- chore(action): update default python-versions by @mayeut in #767
- chore(ci): allow manual runs on branches without a PR by @mayeut in #766
- chore(ci): bump actions/setup-python & conda-incubator/setup-miniconda by @mayeut in #765
- ci: group dependabot updates by @henryiii in #755
- fix(types): improve typing by @henryiii in #720
- ci: fix coverage combine for different OS's by @henryiii in #778
- ci: update to artifacts v2 by @henryiii in #772
- ci: remove skipped job & combine (faster) by @henryiii in #771
- chore: cleanup Ruff a bit by @henryiii in #783
- chore(deps): bump the actions group with 2 updates by @dependabot in #784
- style: add type hints, update few functions by @stasfilin in #728
- Include Python 3.12 in GHA by @DiddiLeija in #743
- Allow tests to pass in environments where NO_COLOR=1 is set by @edgarrmondragon in #777
- tests: support running when the Python launcher for UNIX is present by @henryiii in #775
- chore: drop unneeded config option by @henryiii in #773
- Bump minimum virtualenv to 20.14.1 by @johnthagen in #747
- chore: save session name in
Func
by @MicaelJarniac in #718 - Removed the problematic Python 2.7.18 version by @stasfilin in #726
- Fixed Improper Method Call: Replaced
NotImplementedError
by @fazledyn-or in #749
2023.04.22
We'd like to thank the following folks who contributed to this release:
New Features:
- Add support for
NOXPYTHON
,NOXEXTRAPYTHON
andNOXFORCEPYTHON
by @edgarrmondragon in #688 - feat: --json --list-sessions by @henryiii in #665
Documentation Improvements:
- style: spelling and grammar fixes by @scop in #682
- Add invite link to the discord server to CONTRIBUTING.md by @dcermak in #679
Internal Changes:
- chore: update pre-commit hooks by @edgarrmondragon in #690
- chore: move to using Ruff by @henryiii in #691
- Fix assertion in GHA tests by @FollowTheProcess in #670
- ci: some minor fixes by @henryiii in #675
- Constrain tox to <4.0.0 and minor fixes by @FollowTheProcess in #677
- chore: long term fix for bugbear opinionated checks by @henryiii in #678
- chore: switch to hatchling by @henryiii in #659
- Don't run python 2.7 virtualenv tests for newer versions of virtualenv by @crwilcox in #702
- allow the use of argcomplete 3 by @reaperhulk in #700
- fix: enable
list_sessions
for session completion by @scop in #699 - chore: remove 3.6 tests, min version is 3.7 by @crwilcox in #703
Full Changelog: 2022.11.21...2023.04.22
2022.11.21 π¦
We'd like to thank the following folks who contributed to this release:
New features:
- Include Python 3.11 classifier & testing (#655)
Improvements:
- Fixed a few typos (#661, #660)
- Drop dependency on
py
(#647) nox.session.run
now accepts apathlib.Path
for the command (#649)- Document
nox.session.run
'sstdout
andstderr
arguments and add example of capturing output (#651)
Bugfixes:
- GitHub Action: replace deprecated set-output command (#668)
- GitHub Action: point docs to 2022.8.7 not latest (#664)
- Docs: fix argument passing in
session.posargs
example (#653) - Include GitHub action helper in
MANIFEST.in
(#645)
Internal changes:
2022.8.7 π§
We'd like to thank the following folks who contributed to this release:
- @CN-M
- @crwilcox
- @DiddiLeija
- @edgarrmondragon
- @FollowTheProcess
- @hauntsaninja
- @henryiii
- @johnthagen
- @jwodder
- @ktbarrett
- @mayeut
- @meowmeowmeowcat
- @NickleDave
- @raddessi
- @zhanpon
Removals:
New features:
- Official Nox GitHub Action (#594, #606, #609, #620, #629, #637, #632, #633)
- Missing interpreters now error the session on CI by default (#567)
- Allow configurable child shutdown timeouts (#565)
- Add session tags (#627)
- Add short
-N
alias for--no-reuse-existing-virtualenvs
(#639) - Export session name in
NOX_CURRENT_SESSION
environment variable (#641)
Improvements:
- Add
VENV_DIR
todev
session in cookbook (#591) - Fix typo in
tutorial.rst
(#586) - Use consistent spelling for Nox in documentation (#581)
- Support descriptions in
tox-to-nox
(#575) - Document that
silent=True
returns the command output (#578) - Support argcomplete v2 (#564)
Bugfixes:
- Fix incorrect
FileNotFoundError
inload_nox_module
(#571)
Internal changes:
- Update the classifiers, documentation, and more to point to the new Winterbloom location (#587)
- Support PEP 621 (
pyproject.toml
) (#616, #619) - Configure language code to avoid warning on sphinx build (#626)
- Use latest GitHub action runners and include macOS (#613)
- Jazz up the README with some badges/logo etc. (#605, #614)
- Prefer type checking against Jinja2 (#610)
- Introduce GitHub issue forms (#600, #603, #608)
- Full strictness checking on mypy (#595, #596)
- Drop 99% coverage threshold flag for 3.10 in noxfile (#593)
- Create a
requirements-dev.txt
(#582) - Use
myst-parser
for Markdown docs (#561)
2022.1.7 π₯³
Claudio Jolowicz, Diego Ramirez, and Tom Fleet have become maintainers of Nox. We'd like to thank the following folks who contributed to this release:
- @brettcannon
- @cjolowicz
- @dhermes
- @DiddiLeija
- @FollowTheProcess
- @franekmagiera
- @henryiii
- @jugmac00
- @maciej-lech
- @nawatts
- @Tolker-KU
New features:
- Add
mamba
backend (#444, #448, #546, #551) - Add
session.debug
to show debug-level messages (#489) - Add cookbook page to the documentation (#483)
- Add support for the
FORCE_COLOR
environment variable (#524, #548) - Allow using
session.chdir()
as a context manager (#543) - Deprecate use of
session.install()
without a valid backend (#537)
Improvements:
- Test against Python 3.10 (#495, $502, #506)
- Add support for the
channel
option when using theconda
backend (#522) - Show more specific error message when the
--keywords
expression contains a syntax error (#493) - Include reference to
session.notify()
in tutorial page (#500) - Document how
session.run()
fails and how to handle failures (#533) - Allow the list of sessions to be empty (#523)
Bugfixes:
- Fix broken temporary directory when using
session.chdir()
(#555, #556) - Set the
CONDA_PREFIX
environment variable (#538) - Fix
bin
directory for theconda
backend on Windows (#535)
Internal changes:
- Replace deprecated
load_module
withexec_module
(#498) - Include tests with source distributions (#552)
- Add missing copyright notices (#509)
- Use the new ReadTheDocs configurations (#527)
- Bump the Python version used by ReadTheDocs to 3.8 (#496)
- Improve the Sphinx config file (#499)
- Update all linter versions (#528)
- Add pre-commit and new checks (#530, #539)
- Check
MANIFEST.in
during CI (#552) - Remove redundant
LICENSE
fromMANIFEST.in
(#505) - Make
setuptools
use the standard library'sdistutils
to work aroundvirtualenv
bug. (#547, #549) - Use
shlex.join()
when logging a command (#490) - Use
shutil.rmtree()
over shelling out torm -rf
in noxfile (#519) - Fix missing Python 3.9 CI session (#529)
- Unpin docs session and add
--error-on-missing-interpreter
to CI (#532) - Enable color output from Nox, pytest, and pre-commit during CI (#542)
- Only run
conda_tests
session by default if user has conda installed (#521) - Update dependencies in
requirements-conda-test.txt
(#536)
2021.10.1 π
New features:
- Add
session.warn
to output warnings (#482) - Add a shared session cache directory (#476)
- Add
session.invoked_from
(#472)
Improvements:
- Conda logs now respect
nox.options.verbose
(#466) - Add
session.notify
example to docs (#467) - Add friendlier message if no
noxfile.py
is found (#463) - Show the
noxfile.py
docstring when usingnox -l
(#459) - Mention more projects that use Nox in the docs (#460)
Internal changes:
- Move configs into pyproject.toml or setup.cfg (flake8) (#484)
- Decouple
test_session_completer
from project level noxfile (#480) - Run Flynt to convert str.format to f-strings (#464)
- Add python 3.10.0-rc2 to GitHub Actions (#475, #479)
- Simplify CI build (#461)
- Use PEP 517 build system, remove
setup.py
, usesetup.cfg
(#456, #457, #458) - Upgrade to mypy 0.902 (#455)
Special thanks to our contributors: