Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
427 commits
Select commit Hold shift + click to select a range
4f73b76
ci: group dependabot updates (#755)
henryiii Feb 20, 2024
f8df3c1
Fixed Improper Method Call: Replaced `NotImplementedError` (#749)
nydelzaf Feb 20, 2024
a6cfa2e
Bump minimum virtualenv to 20.14.1 (#747)
johnthagen Feb 20, 2024
a75578a
Allow `--force-python` on unparametrized sessions (#756)
chrysle Feb 20, 2024
d2b02ac
feat: rename run_always to run_install (#770)
henryiii Feb 20, 2024
ea9ea27
feat: more option argument completions (#707)
scop Feb 20, 2024
ef54d13
Update tox_to_nox to support tox 4 (#687)
frenzymadness Feb 20, 2024
ad07cb5
chore: drop uneeded config option (#773)
henryiii Feb 21, 2024
ddea973
Allow tests to pass in environments where NO_COLOR=1 is set (#777)
edgarrmondragon Feb 21, 2024
e3d8578
tests: support running when the Python launcher for UNIX is present (…
henryiii Feb 21, 2024
3b8e026
docs: update some links (#774)
henryiii Feb 21, 2024
911b800
ci: fix coverage combine for different OS's (#778)
henryiii Feb 23, 2024
ffdbb6c
ci: update to artifacts v2 (#772)
henryiii Feb 23, 2024
78a2612
ci: remove skipped job & combine (faster) (#771)
henryiii Feb 23, 2024
1fe4437
feat: add a uv backend (#762)
henryiii Feb 23, 2024
c248a76
chore: cleanup Ruff a bit (#783)
henryiii Feb 24, 2024
55e09cd
fix: always pull versions from metadata (#782)
henryiii Feb 24, 2024
5a097cd
feat: support for reuse_venv option (#730)
samypr100 Feb 25, 2024
93bacbd
Allow configuring `default_venv_backend` with an environment variable…
edgarrmondragon Feb 25, 2024
ff259ce
chore(deps): bump the actions group with 2 updates (#784)
dependabot[bot] Feb 26, 2024
d59e1ac
fix: rebuild env if making an incompatible change (#781)
henryiii Feb 28, 2024
1c6af24
fix: warn user when first argument to session.run is a list (#786)
stefanv Feb 29, 2024
d862350
feat: venv backend fallback (#787)
henryiii Feb 29, 2024
4c8e891
Release 2024.03.02 (#789)
cjolowicz Mar 2, 2024
545a621
fix: missing f-string in --help message (#790)
cjolowicz Mar 4, 2024
419b98a
tests: fix test for conda env when conda isn't installed (#794)
cjolowicz Mar 5, 2024
592f3f0
feat: add venv_backend property (#798)
henryiii Mar 8, 2024
08813c3
fix: look for uv next to python if it's not on PATH (#795)
cjolowicz Mar 8, 2024
efc17bb
feat(action): do not depend on pipx in Nox action (#768)
mayeut Mar 29, 2024
feb2a7e
docs: workaround no longer needed (#806)
henryiii Mar 29, 2024
48f82a1
fix: avoid mixing venv and conda from environment (#804)
henryiii Apr 2, 2024
956f10c
ci: use uv (#805)
henryiii Apr 2, 2024
11dac8c
fix: don't error if not installing to passthrough (#809)
henryiii Apr 7, 2024
9a4068f
feat: add micromamba support (#807)
henryiii Apr 8, 2024
55c7eaf
feat: support default=False (#810)
henryiii Apr 8, 2024
5e3d90d
fix: disallow UV_SYSTEM_PYTHON (#817)
henryiii Apr 12, 2024
bc21883
feat: support None to remone envvars (#812)
henryiii Apr 12, 2024
d3dd1f8
feat: use static arguments instaed of **kwargs (#815)
henryiii Apr 12, 2024
d6e1906
feat: support PEP 723 with a toml load function (#811)
henryiii Apr 12, 2024
8f33d1c
fix: ensure 'uv' always works in a uv venv (#818)
henryiii Apr 15, 2024
5656fce
Release 2024.04.15
theacodes Apr 15, 2024
4fec3b4
ci: macos-latest now is macos-14 (#821)
henryiii Apr 24, 2024
eabad94
chore(ci): use default action tests for macos-14 (#824)
mayeut May 6, 2024
a6e1a4e
chore: drop Python 3.7 (#822)
henryiii May 7, 2024
df7ae00
docs: add warning about uv and local packages (#830)
henryiii May 19, 2024
cf82e6d
chore: use uv if available in action (#831)
henryiii May 23, 2024
4fb39b6
Update type annotation of `stderr` parameter to make it optional (#835)
edgarrmondragon Jun 27, 2024
7a77e80
typo-fix in cookbook (#837)
hmd101 Jul 12, 2024
e0868b6
Fix typos (#839)
ember91 Aug 3, 2024
fd61a65
ci: test with Python 3.13 (#834)
edgarrmondragon Sep 9, 2024
afb5111
chore: add 3.13 to the action defaults (#846)
henryiii Sep 9, 2024
7e1f953
docs: fix contribution guidelines (#850)
tonnico Sep 10, 2024
f2be46a
feat: allow setting tags on parametrized sessions (#832)
living180 Oct 1, 2024
f83bec3
ci: use miniforge (#854)
henryiii Oct 1, 2024
ba29b2c
fix: add missing cookbook recipe snippet imports (#853)
KasperZutterman Oct 1, 2024
a49c730
feat: support for uv-installed pythons (#842)
saucoide Oct 2, 2024
d7072e3
chore: include 3.13 in classifiers (#851)
henryiii Oct 4, 2024
1806181
ci: use astral-sh's setup-uv (#859)
henryiii Oct 7, 2024
19655f4
chore: PyPy no longer supports 3.9 (#858)
henryiii Oct 7, 2024
9058e72
fix: remove add_timestamp from noxfile.options (#856)
tonnico Oct 7, 2024
40d6b49
feat: install_and_run_script (PEP 721) (#847)
henryiii Oct 7, 2024
57a65d8
docs: clean up dev recipe (#862)
henryiii Oct 8, 2024
57825e8
docs: note about uv reinstall (#863)
henryiii Oct 8, 2024
6f295da
docs: add uv sync example (#864)
henryiii Oct 8, 2024
1199ab3
Release 2024.10.09
theacodes Oct 9, 2024
e58a470
Fix typo in changelog
theacodes Oct 9, 2024
771c1c7
chore: cleanup symlink noxfile code (#865)
henryiii Oct 18, 2024
5e02a64
chore: some extra simplifications from Ruff (#870)
henryiii Oct 26, 2024
7dd02a8
chore: use dependency-groups (#873)
henryiii Oct 28, 2024
9cb5661
feat: support session dependencies (`requires`) (#631)
gschaffner Oct 29, 2024
7a94886
feat: expose main as nox.main (#878)
henryiii Oct 29, 2024
6edc697
fix: error with helpful message if invalid option is set via nox.opti…
henryiii Oct 29, 2024
040a93c
feat: add helper to get the Python listing (#877)
henryiii Oct 29, 2024
f2325f1
feat: helper to get dependency-groups (#876)
henryiii Oct 30, 2024
6f3a459
fix: error if invalid reuse_venv set (#872)
henryiii Oct 31, 2024
622458c
refactor: pulled out get_virtualenv & better typing (#882)
henryiii Nov 4, 2024
f4a91df
fix: warning about __main__ already being imported (#884)
henryiii Nov 5, 2024
2c43214
fix: support noxfile being a symlink (#829)
henryiii Nov 11, 2024
7751763
chore: drop some type ignores for colorlog (#888)
henryiii Nov 12, 2024
9731a53
chore: bump pre-commit (#892)
henryiii Nov 12, 2024
a0e7ef5
fix: switch pkgutil for importlib-resources (#887)
henryiii Nov 12, 2024
bdd84a4
fix: validate entries in nox.config, too (#880)
henryiii Nov 12, 2024
aabdc9b
chore: more typing and test improvements (#890)
henryiii Nov 13, 2024
f019411
tests: statically type tests (#894)
henryiii Nov 22, 2024
a844fbf
chore: add more Ruff checks and fixes (#893)
henryiii Nov 22, 2024
aa09595
fix: include encoding for consistent behavior (default in Python 3.15…
henryiii Nov 23, 2024
21298e0
chore(deps): bump astral-sh/setup-uv from 3 to 4 in the actions group…
dependabot[bot] Dec 13, 2024
5f36a5b
tests: use tmp_path instead of tmpdir (#895)
henryiii Dec 13, 2024
ea95a1e
chore: limit the visible items for tab completion (#889)
henryiii Dec 13, 2024
28bbaa5
tests: fix broken mock on CPython 3.12.8+ (#903)
henryiii Dec 13, 2024
60acbbe
fix: correct virtualenv bin dir under mingw python (#901)
davidhewitt Jan 3, 2025
c47dd27
chore(deps): bump astral-sh/setup-uv from 4 to 5 in the actions group…
dependabot[bot] Jan 3, 2025
e2ec513
fix `tox-to-nox` correctly separate the command-line arguments (#906)
chirizxc Jan 3, 2025
82b5542
fix: catch PermissionError from popen when UV is not installed (#908)
btemplep Jan 9, 2025
12b805a
feat: drop support for tox 3 (#910)
henryiii Jan 15, 2025
c27bff9
chore: bump to ruff 0.9 and mypy 1.14 (#909)
henryiii Jan 15, 2025
642c8bb
fix: outer_env issues fixed (#874)
henryiii Jan 16, 2025
a02eb79
fix: use `uv python install` only with uv backend (#900)
oliversen Jan 17, 2025
d25a067
refactor: pull out env creation into helper method (#912)
henryiii Jan 21, 2025
47a29b6
fix: allow pypy- to be used (matching GHA) (#913)
henryiii Jan 29, 2025
73534d2
fix: don't trigger a background update process for virtualenv (#918)
henryiii Jan 30, 2025
beab6c3
feat: support PEP 723 noxfiles (#881)
henryiii Jan 31, 2025
101d7c4
fix(gha): drop PyPy from the default list for the GitHub Action (#916)
henryiii Jan 31, 2025
223c8c6
fix: add a pyproject.toml default for load_toml (#917)
henryiii Jan 31, 2025
97e0fad
fix: handle uvx like uv (#920)
henryiii Jan 31, 2025
97e5a38
fix: don't over-validate lists (#921)
henryiii Jan 31, 2025
c628755
fix: support broken uv (via pyenv) (#922)
henryiii Feb 3, 2025
ae83927
ci: add some suggestions from zizmor (#925)
henryiii Feb 5, 2025
b92b294
ci: trusted publisher (#924)
henryiii Feb 9, 2025
433ad2f
docs: prepare for first 2025 release (#923)
henryiii Feb 9, 2025
a74da2c
Release 2025.02.09
theacodes Feb 9, 2025
e24511d
fix: support Path for envdir (#932)
henryiii Feb 13, 2025
befada1
Fix a typo in the changelog (#936)
gschaffner Feb 21, 2025
2afe225
tests: make skips a bit smarter (#929)
henryiii Feb 27, 2025
21ee4bf
docs: update uv recipe (#933)
henryiii Feb 27, 2025
7a66cc2
docs: fix parametrized session tagging example (#942)
living180 Mar 25, 2025
1bcb213
chore: add our own requirements to conda too (#945)
henryiii Mar 25, 2025
9394ea9
docs: uv now supports pip install . reinstallation (#947)
henryiii Apr 7, 2025
70df6ab
fix: use Python 3.12 for action, allow 3.13, drop 3.8 from auto versi…
henryiii Apr 8, 2025
4e7f644
feat: show skip reason by default (#941)
chirizxc Apr 13, 2025
1d52c8f
Never ignore URL dependencies in PEP 723 noxfiles (#935)
gschaffner Apr 13, 2025
b943f95
fix: uv version is now uv self version, support UV (#955)
henryiii Apr 30, 2025
7219be7
chore(deps): bump astral-sh/setup-uv from 5 to 6 in the actions group…
dependabot[bot] Apr 30, 2025
1acbb4e
chore: use PEP 639 license (#956)
henryiii Apr 30, 2025
aa475d6
fix: add UV_PYTHON to disallowed vars (#959)
henryiii May 1, 2025
a58fe60
fix: support forcing Python on parametrized session (#958)
henryiii May 1, 2025
e0b5e33
fix: conda_install issue with newer conda (#957)
henryiii May 1, 2025
2254a1e
chore: bump version to 2025.05.01 (#960)
henryiii May 1, 2025
3a04af4
refactor: use dict instead of OrderedDict (#963)
henryiii May 2, 2025
6f1c568
ci: modernize and remove rc conda channel (#964)
henryiii May 2, 2025
a0e1323
chore: add better reprs for some internal classes (#966)
henryiii May 3, 2025
150b546
fix(types): tighten type for venv_backend (#967)
henryiii May 4, 2025
125299e
tests: clear the registry (#968)
henryiii May 5, 2025
ecd52d7
fix: correct minimum versions and test (#962)
henryiii May 6, 2025
4fb4e42
docs: recommend `--locked` over `--frozen` for `uv sync` (#972)
johnthagen May 13, 2025
721dace
chore: add 3.14 beta 1 support (#970)
henryiii May 13, 2025
6a90dcf
docs: update badge from black to ruff (#971)
shenxianpeng May 13, 2025
382fc8c
feat: color help on 3.14+ and suggestions, plus no abbrev (#973)
henryiii May 27, 2025
7be8fd3
docs: add rustworkx as an example user (#975)
IvanIsCoding Jun 12, 2025
2fffa15
fix: hide new coverage warning on 3.14 (#980)
henryiii Jun 12, 2025
8e3ce80
fix: let uv replace the directory instead of deleting it ourselves (#…
henryiii Jun 12, 2025
089308a
ci: restore minimums test (#982)
henryiii Jun 12, 2025
e895c3a
Document `nox-uv` third party package (#978)
johnthagen Jun 12, 2025
4ef794d
docs: add `--script` to `uv run` inline metadata for nox-uv example (…
johnthagen Jun 16, 2025
50a740a
ci: drop Windows 2019 (#985)
henryiii Jun 16, 2025
ddd05e8
Tweak grammar in a comment in tasks.py (#987)
brettcannon Jun 20, 2025
7f93235
fix: ensure there are no duplicate log handlers (#991)
saucoide Jul 21, 2025
58d1a4d
chore(deps): bump the actions group across 1 directory with 4 updates…
dependabot[bot] Oct 8, 2025
05f0d0b
chore: bump pre-commit (#1000)
henryiii Oct 8, 2025
a4b43d5
fix: percolate the `verbose` global option to the `silent` argument f…
agriyakhetarpal Oct 8, 2025
c804a04
fix: correctly match free-threaded python versions (#999)
zzzeek Oct 8, 2025
df43085
feat: add `--download-python` python option (#989)
saucoide Oct 8, 2025
1ea9b9b
chore: fix typing issue from multiple merges (#1001)
henryiii Oct 8, 2025
f485dde
fix: github actions windows ARM support (#1002)
henryiii Oct 8, 2025
5a282bd
feat(action): 3.10-3.14 default (#1003)
henryiii Oct 10, 2025
5dc7723
chore: no longer needed on 3.14 RCs/final (#1006)
henryiii Oct 11, 2025
e7a288d
chore(deps): bump astral-sh/setup-uv from 6 to 7 in the actions group…
dependabot[bot] Oct 13, 2025
c6541cd
fix: support scripts with custom names (#1007)
henryiii Oct 13, 2025
53bf191
tests: add conda marker (#969)
henryiii Oct 13, 2025
55acc2a
ci: adapt for bot name in commits (#1009)
henryiii Oct 14, 2025
a0d354c
feat: use a separate logging level for session info instead of warning
Spacetown Oct 14, 2025
1a4b11a
fix: log output of failed process (#974)
jbdyn Oct 14, 2025
bd6629a
fix: validation error for nox.options.keywords (#1011)
henryiii Oct 14, 2025
1dc6910
chore: remove docs from default dev group (#1012)
henryiii Oct 14, 2025
6174960
fix: show a warning if a duplicate session is encountered (#1013)
henryiii Oct 15, 2025
449f935
docs: prepare for 2025.10.14 (#1010)
henryiii Oct 15, 2025
572f34a
ci: run conda on Windows/Linux again (#1015)
henryiii Oct 15, 2025
4eb0037
fix: make pbs an optional dependency (#1017)
henryiii Oct 15, 2025
7cb2614
fix: include time on longer runs (#1014)
henryiii Oct 17, 2025
d9e5e0c
chore: prepare for 2025.10.16 (#1018)
henryiii Oct 17, 2025
38dea06
chore(deps): bump the actions group with 2 updates (#1020)
dependabot[bot] Oct 29, 2025
b17113d
fix: json should support Path (#1026)
henryiii Oct 30, 2025
3455f55
fix: avoid warnings when running in script mode (#1025)
henryiii Oct 30, 2025
6d669ae
fix(typing): install env was typed differently (#1028)
henryiii Nov 5, 2025
f690869
chore: pytest log_level is better than log_cli_level (#1029)
henryiii Nov 10, 2025
5cfea65
ci: use last intel macOS image (#1031)
henryiii Nov 11, 2025
9e9b47e
chore: add a few more passing ruff checks (#1030)
henryiii Nov 11, 2025
0eee2e4
chore: prepare for 2025.11.12 (#1032)
henryiii Nov 12, 2025
e3afd2d
feat: drop Python 3.8 (#1004)
henryiii Nov 12, 2025
3802570
tests: use sysmon on 3.14 (#1034)
henryiii Nov 13, 2025
e0c34eb
ci: fix conda (#1035)
henryiii Nov 13, 2025
af8ea87
tests: fix action test (#1036)
henryiii Nov 13, 2025
97dcd31
chore(deps): bump the actions group across 1 directory with 3 updates…
dependabot[bot] Jan 6, 2026
66b4df0
chore: bump packaging dep to remove pyparsing (#1047)
henryiii Jan 6, 2026
5dbd95e
chore: optimize the naming of constants to enhance readability (#1041)
wu-zhao-min Jan 8, 2026
f8edf5f
fix(types): Better typing for .run (#1037)
henryiii Jan 8, 2026
a0660b1
docs: avoid newest docutils until sphinx-tabs updates (#1052)
henryiii Jan 28, 2026
c72769b
docs: duplicated session name in cookbook (#1050)
kai687 Jan 28, 2026
11eee27
fix: better support for multiple session decorators (#1048)
henryiii Jan 28, 2026
7207b3f
fix: support uv 0.10.0 (#1055)
henryiii Feb 6, 2026
516d9bc
fix: show tags (#1058)
henryiii Feb 9, 2026
264f457
chore: normalize extra (#1059)
henryiii Feb 9, 2026
90a8aef
Revert "feat: drop Python 3.8 (#1004)" (#1060)
henryiii Feb 9, 2026
5a277b7
docs: prepare for release (#1061)
henryiii Feb 10, 2026
68c619d
Reapply "feat: drop Python 3.8 (#1004)" (#1060) (#1062)
henryiii Feb 16, 2026
f4e3191
chore: use prek (#1065)
agriyakhetarpal Feb 16, 2026
fa5e8d8
feat: add a `nox --usage <session>` command to print full docstrings …
agriyakhetarpal Feb 16, 2026
0ad8cc7
chore(deps): bump the actions group with 3 updates (#1068)
dependabot[bot] Mar 5, 2026
5a90136
chore(ci): switch artifact attestations to actions/attest (#1070)
scop Mar 12, 2026
4ff681f
fix: ignore forcecolor falsy (#1073)
henryiii Mar 23, 2026
bf90952
tests: pin to working conda version (#1079)
henryiii Apr 9, 2026
e0f64e6
fix: recreate if broken symlinks are present (#1078)
henryiii Apr 9, 2026
63dcab9
fix: more uv variables set (#1056)
henryiii Apr 9, 2026
47cb9c3
fix: ignore default selection for tags and keywords (#1057)
henryiii Apr 9, 2026
4c7a215
fix: write out .gitignore/CACHEDIR.TAG to our dir (#1072)
henryiii Apr 9, 2026
b6a6156
fix: fully pin actions in composite action (#1080)
henryiii Apr 10, 2026
2577f31
ci: add zizmor (#1082)
henryiii Apr 10, 2026
8d5c759
chore: prepare for 2026.04.10 (#1081)
henryiii Apr 10, 2026
97e345e
docs: add thanks section (#1083)
henryiii Apr 10, 2026
ea8e1fe
ci: bump setup-uv to maintained tag scheme (#1084)
henryiii Apr 12, 2026
909d6e1
fix: show envvars in CLI help (#1085)
henryiii Apr 16, 2026
64ddef9
feat: drop Python 3.9 (#1049)
henryiii Apr 16, 2026
71eb524
tests: run in parallel (#965)
henryiii Apr 17, 2026
18f714b
chore(deps): bump astral-sh/setup-uv in the actions group (#1087)
dependabot[bot] Apr 27, 2026
e463529
ci: bump conda pin to fix signature-verification plugin conflict (#1103)
henryiii Jun 10, 2026
1ccd752
docs: document venv backend for EOL Python (#1101)
Himanshuagrawal4 Jun 10, 2026
e0ef19c
docs: fix typo in README installation section (#1097)
TejasAmle Jun 10, 2026
b60af14
chore(deps): bump the actions group across 1 directory with 2 updates…
dependabot[bot] Jun 10, 2026
48ec9a5
Clarify session.notify target docs (#1099)
Himanshuagrawal4 Jun 10, 2026
234f28b
chore(deps): bump the actions group with 2 updates (#1114)
dependabot[bot] Jun 11, 2026
1c284eb
fix(project): return empty dict from load_toml when script file missi…
SAY-5 Jun 11, 2026
27ef502
docs: list micromamba in --default-venv-backend supported names (#1092)
SAY-5 Jun 12, 2026
b91eb81
chore: remove Python 3.9-era pins/backports and tighten generator ann…
henryiii Jun 12, 2026
d3d95f4
fix: enforce --error-on-external-run even when log=False (#1107)
henryiii Jun 12, 2026
4545fea
fix(tox-to-nox): handle '=' in set_env values and out-of-tree change_…
henryiii Jun 13, 2026
145920c
fix: create missing parent directories for the session cache dir (#1104)
henryiii Jun 13, 2026
c304bea
fix: interpreter-resolution edge cases in virtualenv.py (#1111)
henryiii Jun 13, 2026
f07b824
fix: hash fully non-ASCII session names instead of returning the envd…
henryiii Jun 13, 2026
fdb5c07
fix: don't crash when a parametrized session has an empty parameter l…
henryiii Jun 13, 2026
31fdbc5
fix: script-mode pip resolution on Windows and --download-python fall…
henryiii Jun 13, 2026
7a02442
perf: cache session-name normalization, uv detection, interpreter dis…
henryiii Jun 13, 2026
6f3564c
refactor: assorted simplifications and dead-code removal (#1112)
henryiii Jun 13, 2026
801d2c2
fix: prevent coverage data corruption from artifact name collisions (…
henryiii Jun 17, 2026
82cef5a
fix: support uv venv backend under MSYS2/MinGW (#1088)
henryiii Jun 17, 2026
e2f19be
ci: reduce the number of times we contact conda-forge servers on non-…
henryiii Jun 20, 2026
e539ce5
chore: update pre-commit (and dependabot) (#1119)
henryiii Jun 20, 2026
982fcfa
chore(deps): bump dependency-groups in the pre-commit group (#1121)
dependabot[bot] Jun 22, 2026
5bd0f83
perf: lazy modules on Python 3.15 (#1115)
henryiii Jun 22, 2026
13d501a
ci: add experimental MSYS2/MinGW test run
henryiii Jun 26, 2026
9591600
ci: build nox with isolation under MSYS2
henryiii Jun 26, 2026
9ca9526
ci: skip uv install on MinGW in tests session
henryiii Jun 26, 2026
8761e83
ci: install MinGW gcc toolchain for native build deps
henryiii Jun 26, 2026
cf69555
Merge remote-tracking branch 'origin/fix/uv-mingw-venv' into ci-msys2
henryiii Jun 26, 2026
d67d546
ci: install msys uv and merge #1117 to exercise uv backend on MinGW
henryiii Jun 26, 2026
5c54519
ci: get uv CLI from setup-uv (no uv package exists in MSYS2)
henryiii Jun 26, 2026
3b158c9
ci: inherit runner PATH so MinGW Python sees standalone uv
henryiii Jun 26, 2026
fd51dc5
ci: force virtualenv backend so MinGW session stays MinGW
henryiii Jun 26, 2026
3acd024
test: account for MinGW POSIX venv layout in bin-path tests
henryiii Jun 26, 2026
a6bc619
ci: temporary probe of MinGW venv layout
henryiii Jun 26, 2026
5869ae5
test: assert MinGW venv layout in test_create; drop CI probe
henryiii Jun 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 0 additions & 10 deletions .coveragerc

This file was deleted.

6 changes: 0 additions & 6 deletions .flake8

This file was deleted.

16 changes: 0 additions & 16 deletions .github/ISSUE_TEMPLATE/bug.md

This file was deleted.

52 changes: 52 additions & 0 deletions .github/ISSUE_TEMPLATE/bug.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
name: 🐞 Bug Report
description: File a bug/issue
title: "<title>"
labels:
- "bug"
body:
- type: textarea
attributes:
label: Current Behavior
description: A concise description of what you're experiencing.
validations:
required: false
- type: textarea
attributes:
label: Expected Behavior
description: A concise description of what you expected to happen.
validations:
required: false
- type: textarea
attributes:
label: Steps To Reproduce
description: Steps to reproduce the behavior.
placeholder: |
1. With this Nox session/file...
2. Run '...'
3. See error...
validations:
required: false
- type: textarea
attributes:
label: Environment
description: |
examples:
- **OS**: Ubuntu 24.04
- **Python**: 3.14.3
- **Nox**: 2026.04.10
value: |
- OS:
- Python:
- Nox:
render: Markdown
validations:
required: false
- type: textarea
attributes:
label: Anything else?
description: |
Links? References? Anything that will give us more context about the issue you are encountering!

Tip: You can attach images or log files by clicking this area to highlight it and then dragging files in.
validations:
required: false
4 changes: 4 additions & 0 deletions .github/ISSUE_TEMPLATE/config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
contact_links:
- name: Winterbloom Discord server
url: https://discord.gg/C5EH3N3fsk
about: You can ask questions and chat about Nox under this server's '#nox' channel.
14 changes: 0 additions & 14 deletions .github/ISSUE_TEMPLATE/feature_request.md

This file was deleted.

33 changes: 33 additions & 0 deletions .github/ISSUE_TEMPLATE/feature_request.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: 🚀 Feature Request
description: Request a new feature or enhancement
title: "<title>"
labels:
- "enhancement"
body:
- type: textarea
attributes:
label: How would this feature be useful?
description: Describe any use cases this solves or frustrations it alleviates.
validations:
required: false

- type: textarea
attributes:
label: Describe the solution you'd like
description: If you have an idea on how to do this, let us know here!
validations:
required: false

- type: textarea
attributes:
label: Describe alternatives you've considered
description: If there's some workaround or alternative solutions, let us know here!
validations:
required: false

- type: textarea
attributes:
label: Anything else?
description: Any other relevant information or background.
validations:
required: false
96 changes: 96 additions & 0 deletions .github/action_helper.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
from __future__ import annotations

import json
import platform
import sys


def filter_version(version: str) -> str:
"""return python 'major.minor'"""

# remove interpreter prefix
if version.startswith("pypy-"):
version_ = version[5:]
elif version.startswith("pypy"):
version_ = version[4:]
elif version.startswith("~"):
version_ = version[1:]
else:
version_ = version

# remove extra specifier e.g. "3.12-dev" => "3.12", "~3.12.0-0" => "3.12"
version_ = version_.split("-")[0]

# Handle free-threaded
free_threaded = version_.endswith("t")
if free_threaded:
version_ = version_[:-1]

version_parts = version_.split(".")
if len(version_parts) < 2:
msg = f"invalid version: {version}"
raise ValueError(msg)
if not version_parts[0].isdigit():
msg = f"invalid major python version: {version}"
raise ValueError(msg)
if not version_parts[1].isdigit():
msg = f"invalid minor python version: {version}"
raise ValueError(msg)
return ".".join(version_parts[:2]) + ("t" if free_threaded else "")


def valid_version(version: str) -> bool:
if sys.platform.startswith("win32") and platform.machine().lower() in {
"arm64",
"aarch64",
}:
if version in {"2.7", "3.6", "3.7", "3.8", "3.9", "3.10"}:
return False
return True


def setup_action(input_: str, *, self_version: str = "3.12") -> None:
versions = [version.strip() for version in input_.split(",") if version.strip()]

pypy_versions = [version for version in versions if version.startswith("pypy")]
pypy_versions_filtered = [filter_version(version) for version in pypy_versions]
if len(pypy_versions) != len(set(pypy_versions_filtered)):
msg = (
"multiple versions specified for the same 'major.minor' PyPy interpreter:"
f" {pypy_versions}"
)
raise ValueError(msg)

cpython_versions = [version for version in versions if version not in pypy_versions]
cpython_versions_filtered = [
filter_version(version) for version in cpython_versions
]
if len(cpython_versions) != len(set(cpython_versions_filtered)):
msg = (
"multiple versions specified for the same 'major.minor' CPython"
f" interpreter: {cpython_versions}"
)
raise ValueError(msg)

# cpython shall be installed last because
# other interpreters also define pythonX.Y symlinks.
versions = [v for v in pypy_versions + cpython_versions if valid_version(v)]

# we want to install our own self version last to ease nox set-up
if self_version in cpython_versions_filtered:
index = cpython_versions_filtered.index(self_version)
index = versions.index(cpython_versions[index])
cpython_nox = versions.pop(index)
versions.append(cpython_nox)
else:
# add this to install nox
versions.append(self_version)

print(f"interpreters={json.dumps(versions)}")


if __name__ == "__main__":
if len(sys.argv) != 2:
msg = f"invalid arguments: {sys.argv}"
raise AssertionError(msg)
setup_action(sys.argv[1])
24 changes: 24 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
version: 2

updates:
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
groups:
github-actions:
patterns:
- "*"
cooldown:
default-days: 7

- package-ecosystem: "pre-commit"
directory: "/"
schedule:
interval: "monthly"
groups:
pre-commit:
patterns:
- "*"
cooldown:
default-days: 7
4 changes: 4 additions & 0 deletions .github/release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
changelog:
exclude:
authors:
- dependabot[bot]
53 changes: 53 additions & 0 deletions .github/workflows/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
name: Action
on:
push:
branches:
- "main"
- "**action**"
pull_request:
paths:
- ".github/workflows/action.yml"
- ".github/action_helper.py"
- "action.yml"
workflow_dispatch:
# allow manual runs on branches without a PR

env:
FORCE_COLOR: "1"

permissions: {}

jobs:
action-default-tests:
runs-on: ${{ matrix.os }}
strategy:
matrix:
os:
- ubuntu-24.04
- ubuntu-24.04-arm
- windows-2022
- windows-2025
- windows-11-arm
- macos-15-intel
- macos-15
steps:
- uses: actions/checkout@v6.0.3
with:
persist-credentials: false
- uses: astral-sh/setup-uv@v8.2.0
- uses: ./
- run: nox --session github_actions_default_tests

action-all-tests:
runs-on: windows-latest
steps:
- uses: actions/checkout@v6.0.3
with:
persist-credentials: false
- uses: actions/setup-python@v6
with:
python-version: 3.12
- uses: ./
with:
python-versions: "pypy-2.7, pypy-3.8, pypy-3.9, pypy-3.10, pypy-3.11, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12, 3.13, 3.14, 3.13t, 3.14t"
- run: nox --session github_actions_all_tests
49 changes: 49 additions & 0 deletions .github/workflows/cd.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
name: CD
on:
push:
branches: [main]
pull_request:
workflow_dispatch:
release:
types: [published]

env:
FORCE_COLOR: "1"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions: {}

jobs:
dist:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6.0.3
with:
persist-credentials: false
- uses: hynek/build-and-inspect-python-package@v2

deploy:
needs: [dist]
environment:
name: pypi
url: https://pypi.org/project/nox
permissions:
id-token: write
attestations: write
runs-on: ubuntu-latest
if: github.event_name == 'release' && github.event.action == 'published'
steps:
- uses: actions/download-artifact@v8
with:
name: Packages
path: dist

- name: Generate artifact attestation for sdist and wheel
uses: actions/attest@v4
with:
subject-path: "dist/*"

- uses: pypa/gh-action-pypi-publish@release/v1
Loading
Loading