|
1 | | -"""Nox configuration.""" |
2 | | -# pylint: disable=import-error |
| 1 | +"""Nox setup.""" |
3 | 2 |
|
4 | 3 | import shutil |
5 | 4 | from pathlib import Path |
6 | 5 |
|
7 | 6 | import nox |
| 7 | +from nox_uv import session |
8 | 8 |
|
9 | 9 | nox.needs_version = ">=2024.3.2" |
10 | | -nox.options.sessions = [ |
11 | | - # Linting |
12 | | - "lint", |
13 | | - "precommit", |
14 | | - "pylint", |
15 | | - # Testing |
16 | | - "tests", |
17 | | -] |
18 | 10 | nox.options.default_venv_backend = "uv" |
19 | 11 |
|
20 | | - |
21 | 12 | DIR = Path(__file__).parent.resolve() |
22 | 13 |
|
23 | 14 | # ============================================================================= |
24 | 15 | # Linting |
25 | 16 |
|
26 | 17 |
|
27 | | -@nox.session(venv_backend="uv") |
28 | | -def lint(session: nox.Session, /) -> None: |
| 18 | +@session(uv_groups=["lint"], reuse_venv=True) |
| 19 | +def lint(s: nox.Session, /) -> None: |
29 | 20 | """Run the linter.""" |
30 | | - precommit(session) # reuse pre-commit session |
31 | | - pylint(session) # reuse pylint session |
| 21 | + precommit(s) # reuse pre-commit session |
| 22 | + pylint(s) # reuse pylint session |
| 23 | + mypy(s) # reuse mypy session |
32 | 24 |
|
33 | 25 |
|
34 | | -@nox.session(venv_backend="uv") |
35 | | -def precommit(session: nox.Session, /) -> None: |
| 26 | +@session(uv_groups=["lint"], reuse_venv=True) |
| 27 | +def precommit(s: nox.Session, /) -> None: |
36 | 28 | """Run pre-commit.""" |
37 | | - session.run_install( |
38 | | - "uv", |
39 | | - "sync", |
40 | | - "--group=lint", |
41 | | - f"--python={session.virtualenv.location}", |
42 | | - env={"UV_PROJECT_ENVIRONMENT": session.virtualenv.location}, |
43 | | - ) |
44 | | - session.run("pre-commit", "run", "--all-files", *session.posargs) |
45 | | - |
46 | | - |
47 | | -@nox.session(venv_backend="uv") |
48 | | -def pylint(session: nox.Session, /) -> None: |
| 29 | + s.run("pre-commit", "run", "--all-files", *s.posargs) |
| 30 | + |
| 31 | + |
| 32 | +@session(uv_groups=["lint"], reuse_venv=True) |
| 33 | +def pylint(s: nox.Session, /) -> None: |
49 | 34 | """Run PyLint.""" |
50 | | - session.run_install( |
51 | | - "uv", |
52 | | - "sync", |
53 | | - "--group=lint", |
54 | | - f"--python={session.virtualenv.location}", |
55 | | - env={"UV_PROJECT_ENVIRONMENT": session.virtualenv.location}, |
56 | | - ) |
57 | | - session.run("pylint", "zeroth", *session.posargs) |
| 35 | + s.run("pylint", "zeroth", *s.posargs) |
| 36 | + |
| 37 | + |
| 38 | +@session(uv_groups=["lint"], reuse_venv=True) |
| 39 | +def mypy(s: nox.Session, /) -> None: |
| 40 | + """Run mypy.""" |
| 41 | + s.run("mypy", "src/zeroth", *s.posargs) |
58 | 42 |
|
59 | 43 |
|
60 | 44 | # ============================================================================= |
61 | 45 | # Testing |
62 | 46 |
|
63 | 47 |
|
64 | | -@nox.session(venv_backend="uv") |
65 | | -def tests(session: nox.Session, /) -> None: |
| 48 | +@session(uv_groups=["test"], reuse_venv=True) |
| 49 | +def pytest(s: nox.Session, /) -> None: |
66 | 50 | """Run the unit and regular tests.""" |
67 | | - session.run_install( |
68 | | - "uv", |
69 | | - "sync", |
70 | | - "--group=test", |
71 | | - f"--python={session.virtualenv.location}", |
72 | | - env={"UV_PROJECT_ENVIRONMENT": session.virtualenv.location}, |
73 | | - ) |
74 | | - session.run("pytest", *session.posargs) |
| 51 | + s.run("pytest", *s.posargs) |
75 | 52 |
|
76 | 53 |
|
77 | 54 | # ============================================================================= |
| 55 | +# Build |
78 | 56 |
|
79 | 57 |
|
80 | | -@nox.session(venv_backend="uv") |
81 | | -def build(session: nox.Session, /) -> None: |
| 58 | +@session(uv_groups=["build"]) |
| 59 | +def build(s: nox.Session, /) -> None: |
82 | 60 | """Build an SDist and wheel.""" |
83 | 61 | build_path = DIR.joinpath("build") |
84 | 62 | if build_path.exists(): |
85 | 63 | shutil.rmtree(build_path) |
86 | 64 |
|
87 | | - session.run_install( |
88 | | - "uv", |
89 | | - "sync", |
90 | | - "--group=build", |
91 | | - f"--python={session.virtualenv.location}", |
92 | | - env={"UV_PROJECT_ENVIRONMENT": session.virtualenv.location}, |
93 | | - ) |
94 | | - session.run("python", "-m", "build") |
| 65 | + s.run("python", "-m", "build") |
0 commit comments