Skip to content

Commit 5848022

Browse files
ngoldbaumalex
andauthored
replace tox with nox (#862)
* replace tox with nox * Apply suggestions from code review Co-authored-by: Alex Gaynor <[email protected]> * consolidate install commands --------- Co-authored-by: Alex Gaynor <[email protected]>
1 parent 4dd997e commit 5848022

File tree

5 files changed

+113
-98
lines changed

5 files changed

+113
-98
lines changed

.github/workflows/ci.yml

Lines changed: 38 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -15,29 +15,29 @@ jobs:
1515
fail-fast: false
1616
matrix:
1717
PYTHON:
18-
- {VERSION: "3.12", TOXENV: "docs", COVERAGE: "false"}
19-
- {VERSION: "3.12", TOXENV: "meta", COVERAGE: "false"}
20-
- {VERSION: "3.12", TOXENV: "mypy", COVERAGE: "false"}
21-
- {VERSION: "pypy-3.9", TOXENV: "pypy3"}
22-
- {VERSION: "pypy-3.10", TOXENV: "pypy3"}
23-
- {VERSION: "3.7", TOXENV: "py37"}
24-
- {VERSION: "3.8", TOXENV: "py38"}
25-
- {VERSION: "3.9", TOXENV: "py39"}
26-
- {VERSION: "3.10", TOXENV: "py310"}
27-
- {VERSION: "3.11", TOXENV: "py311"}
28-
- {VERSION: "3.12", TOXENV: "py312"}
29-
- {VERSION: "3.13-dev", TOXENV: "py313"}
30-
- {VERSION: "3.13-dev", TOXENV: "py313", NOTE: "system", SODIUM_INSTALL: "system"}
31-
- {VERSION: "3.13-dev", TOXENV: "py313", NOTE: "minimal", SODIUM_INSTALL_MINIMAL: "1"}
32-
name: "Linux ${{ matrix.PYTHON.TOXENV }} ${{ matrix.PYTHON.NOTE }}"
18+
- {VERSION: "3.12", NOXSESSION: "docs", COVERAGE: "false"}
19+
- {VERSION: "3.12", NOXSESSION: "meta", COVERAGE: "false"}
20+
- {VERSION: "3.12", NOXSESSION: "mypy", COVERAGE: "false"}
21+
- {VERSION: "pypy-3.9", NOXSESSION: "tests"}
22+
- {VERSION: "pypy-3.10", NOXSESSION: "tests"}
23+
- {VERSION: "3.7", NOXSESSION: "tests"}
24+
- {VERSION: "3.8", NOXSESSION: "tests"}
25+
- {VERSION: "3.9", NOXSESSION: "tests"}
26+
- {VERSION: "3.10", NOXSESSION: "tests"}
27+
- {VERSION: "3.11", NOXSESSION: "tests"}
28+
- {VERSION: "3.12", NOXSESSION: "tests"}
29+
- {VERSION: "3.13", NOXSESSION: "tests"}
30+
- {VERSION: "3.13", NOXSESSION: "tests", NOTE: "system", SODIUM_INSTALL: "system"}
31+
- {VERSION: "3.13", NOXSESSION: "tests", NOTE: "minimal", SODIUM_INSTALL_MINIMAL: "1"}
32+
name: "Linux ${{ matrix.PYTHON.VERSION }} ${{ matrix.PYTHON.NOXSESSION }} ${{ matrix.PYTHON.NOTE }}"
3333
steps:
3434
- uses: actions/[email protected]
3535
- name: Setup python
3636
uses: actions/setup-python@v5
3737
with:
3838
python-version: ${{ matrix.PYTHON.VERSION }}
39-
- name: Install tox and coverage
40-
run: pip install tox coverage
39+
- name: Install nox and coverage
40+
run: pip install nox coverage
4141
- name: Install libsodium (system install only)
4242
run: |
4343
wget --timeout=60 https://download.libsodium.org/libsodium/releases/LATEST.tar.gz || \
@@ -53,15 +53,14 @@ jobs:
5353
SODIUM_INSTALL_MINIMAL: ${{ matrix.PYTHON.SODIUM_INSTALL_MINIMAL }}
5454
if: matrix.PYTHON.SODIUM_INSTALL == 'system'
5555
- name: Run tests
56-
run: LIBSODIUM_MAKE_ARGS="-j$(nproc)" tox
56+
run: LIBSODIUM_MAKE_ARGS="-j$(nproc)" nox -s ${{ matrix.python.NOXSESSION }}
5757
env:
58-
TOXENV: ${{ matrix.PYTHON.TOXENV }}
5958
SODIUM_INSTALL_MINIMAL: ${{ matrix.PYTHON.SODIUM_INSTALL_MINIMAL }}
6059
SODIUM_INSTALL: ${{ matrix.PYTHON.SODIUM_INSTALL }}
6160
- name: Upload coverage
6261
run: |
6362
curl -o codecov.sh -f https://codecov.io/bash || curl -o codecov.sh -f https://codecov.io/bash || curl -o codecov.sh -f https://codecov.io/bash || curl -o codecov.sh -f https://codecov.io/bash || curl -o codecov.sh -f https://codecov.io/bash
64-
bash codecov.sh -n "Python ${{ matrix.PYTHON.VERSION }}${{ matrix.PYTHON.NOTE }} on macOS"
63+
bash codecov.sh -n "Python ${{ matrix.PYTHON.VERSION }}${{ matrix.PYTHON.NOTE }} on Linux"
6564
if: matrix.PYTHON.COVERAGE != 'false'
6665

6766
macos:
@@ -72,25 +71,24 @@ jobs:
7271
- 'macos-13'
7372
- 'macos-latest'
7473
PYTHON:
75-
- {VERSION: "3.7", TOXENV: "py37"}
76-
- {VERSION: "3.13-dev", TOXENV: "py313"}
77-
- {VERSION: "3.13-dev", TOXENV: "py313", NOTE: " (minimal build)", SODIUM_INSTALL_MINIMAL: "1"}
74+
- {VERSION: "3.7", NOXSESSION: "tests"}
75+
- {VERSION: "3.13", NOXSESSION: "tests"}
76+
- {VERSION: "3.13", NOXSESSION: "tests", NOTE: " (minimal build)", SODIUM_INSTALL_MINIMAL: "1"}
7877
exclude:
79-
- PYTHON: {VERSION: "3.7", TOXENV: "py37"}
78+
- PYTHON: {VERSION: "3.7", NOXSESSION: "tests"}
8079
RUNNER: macos-latest
81-
name: "Python ${{ matrix.PYTHON.VERSION }}${{ matrix.PYTHON.NOTE }} on ${{ matrix.RUNNER }}"
80+
name: "${{ matrix.RUNNER }} ${{ matrix.PYTHON.VERSION }} ${{ matrix.python.NOXSESSION }} ${{ matrix.PYTHON.NOTE }}"
8281
steps:
8382
- uses: actions/[email protected]
8483
- name: Setup python
8584
uses: actions/setup-python@v5
8685
with:
8786
python-version: ${{ matrix.PYTHON.VERSION }}
88-
- name: Install tox and coverage
89-
run: pip install tox coverage
87+
- name: Install nox and coverage
88+
run: pip install nox coverage
9089
- name: Run tests
91-
run: LIBSODIUM_MAKE_ARGS="-j$(sysctl -n hw.ncpu)" tox
90+
run: LIBSODIUM_MAKE_ARGS="-j$(sysctl -n hw.ncpu)" nox -s ${{ matrix.python.NOXSESSION }}
9291
env:
93-
TOXENV: ${{ matrix.PYTHON.TOXENV }}
9492
SODIUM_INSTALL_MINIMAL: ${{ matrix.PYTHON.SODIUM_INSTALL_MINIMAL }}
9593
- name: Upload coverage
9694
run: |
@@ -104,14 +102,14 @@ jobs:
104102
- {ARCH: 'x86', SODIUM_ARCH: 'Win32'}
105103
- {ARCH: 'x64', SODIUM_ARCH: 'x64'}
106104
PYTHON:
107-
- {VERSION: "3.7", TOXENV: "py37", SODIUM_MSVC_VERSION: "v142"}
108-
- {VERSION: "3.8", TOXENV: "py38", SODIUM_MSVC_VERSION: "v142"}
109-
- {VERSION: "3.9", TOXENV: "py39", SODIUM_MSVC_VERSION: "v142"}
110-
- {VERSION: "3.10", TOXENV: "py310", SODIUM_MSVC_VERSION: "v142"}
111-
- {VERSION: "3.11", TOXENV: "py311", SODIUM_MSVC_VERSION: "v142"}
112-
- {VERSION: "3.12", TOXENV: "py312", SODIUM_MSVC_VERSION: "v142"}
113-
- {VERSION: "3.13-dev", TOXENV: "py313", SODIUM_MSVC_VERSION: "v142"}
114-
name: "Python ${{ matrix.PYTHON.VERSION }} on Windows ${{ matrix.WINDOWS.ARCH }}"
105+
- {VERSION: "3.7", NOXSESSION: "tests", SODIUM_MSVC_VERSION: "v142"}
106+
- {VERSION: "3.8", NOXSESSION: "tests", SODIUM_MSVC_VERSION: "v142"}
107+
- {VERSION: "3.9", NOXSESSION: "tests", SODIUM_MSVC_VERSION: "v142"}
108+
- {VERSION: "3.10", NOXSESSION: "tests", SODIUM_MSVC_VERSION: "v142"}
109+
- {VERSION: "3.11", NOXSESSION: "tests", SODIUM_MSVC_VERSION: "v142"}
110+
- {VERSION: "3.12", NOXSESSION: "tests", SODIUM_MSVC_VERSION: "v142"}
111+
- {VERSION: "3.13", NOXSESSION: "tests", SODIUM_MSVC_VERSION: "v142"}
112+
name: "Windows ${{ matrix.WINDOWS.ARCH }} ${{ matrix.PYTHON.VERSION }} ${{ matrix.PYTHON.NOXSESSION }}"
115113
steps:
116114
- uses: actions/[email protected]
117115
- name: Setup python
@@ -123,19 +121,17 @@ jobs:
123121
run: |
124122
Expand-Archive src/libsodium-1.0.20-stable-msvc.zip -DestinationPath c:\
125123
shell: powershell
126-
- name: Install tox and coverage
127-
run: pip install tox coverage
124+
- name: Install nox and coverage
125+
run: pip install nox coverage
128126
- name: Run tests
129127
run: |
130128
set PYNACL_SODIUM_LIBRARY_NAME=sodium
131129
set PYNACL_SODIUM_STATIC=1
132130
set SODIUM_INSTALL=system
133131
set INCLUDE=C:/libsodium/include;%INCLUDE%
134132
set LIB=C:/libsodium/${{ matrix.WINDOWS.SODIUM_ARCH }}/release/${{ matrix.PYTHON.SODIUM_MSVC_VERSION }}/static;%LIB%
135-
tox
133+
nox -s ${{ matrix.PYTHON.NOXSESSION }}
136134
IF %ERRORLEVEL% NEQ 0 EXIT /B %ERRORLEVEL%
137-
env:
138-
TOXENV: ${{ matrix.PYTHON.TOXENV }}
139135
shell: cmd
140136
- name: Upload coverage
141137
run: |

MANIFEST.in

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
include tox.ini
1+
include noxfile.py
22
include LICENSE
33
include README.rst
44
include CHANGELOG.rst

noxfile.py

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
import nox
2+
3+
nox.options.reuse_existing_virtualenvs = True
4+
nox.options.default_venv_backend = "uv|virtualenv"
5+
6+
7+
@nox.session
8+
def tests(session: nox.Session) -> None:
9+
session.install("coverage", "pretend", ".[tests]")
10+
11+
session.run(
12+
"coverage",
13+
"run",
14+
"--parallel-mode",
15+
"-m",
16+
"pytest",
17+
"--capture=no",
18+
"--strict-markers",
19+
*session.posargs,
20+
)
21+
session.run("coverage", "combine")
22+
session.run("coverage", "report", "-m")
23+
24+
25+
@nox.session
26+
def docs(session: nox.Session) -> None:
27+
session.install("doc8", ".[docs]")
28+
tmpdir = session.create_tmp()
29+
30+
session.run(
31+
"sphinx-build",
32+
"-W",
33+
"-b",
34+
"html",
35+
"-d",
36+
f"{tmpdir}/doctrees",
37+
"docs",
38+
"docs/_build/html",
39+
)
40+
session.run(
41+
"sphinx-build",
42+
"-W",
43+
"-b",
44+
"doctest",
45+
"-d",
46+
f"{tmpdir}/doctrees",
47+
"docs",
48+
"docs/_build/html",
49+
)
50+
session.run(
51+
"sphinx-build", "-W", "-b", "linkcheck", "docs", "docs/_build/html"
52+
)
53+
session.run("doc8", "README.rst", "docs/", "--ignore-path", "docs/_build/")
54+
55+
56+
@nox.session
57+
def meta(session: nox.Session) -> None:
58+
session.install("black", "flake8", "flake8-import-order", "check-manifest")
59+
60+
session.run("flake8", ".")
61+
session.run("black", "--check", ".")
62+
session.run("check-manifest", ".")
63+
64+
65+
@nox.session
66+
def mypy(session: nox.Session) -> None:
67+
session.install(".[tests]", "mypy")
68+
69+
session.run("mypy")

setup.cfg

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,7 @@
11
[metadata]
22
license_files = LICENSE
3+
4+
[flake8]
5+
ignore = E203,E501,W503,W504
6+
select = E,W,F,I
7+
application-import-names = nacl

tox.ini

Lines changed: 0 additions & 55 deletions
This file was deleted.

0 commit comments

Comments
 (0)