-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathnoxfile.py
70 lines (57 loc) · 2 KB
/
noxfile.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
from __future__ import annotations
from pathlib import Path
from typing import TYPE_CHECKING, Literal
import nox
if TYPE_CHECKING:
from nox import Session
PYTHON_VERSIONS = ["3.9", "3.10", "3.11", "3.12", "3.13"]
PYRIGHT_PYTHON_PYLANCE_VERSION: Literal["latest-release", "latest-prerelease"] = "latest-release"
PYRIGHT_PYTHON_FORCE_VERSION: str | None = None
COMMON_PYTEST_OPTIONS = [
"--cov",
"src",
"--cov-append",
"--cov-report",
"term-missing",
"-n",
"2",
"--showlocals",
]
here = Path(__file__).parent
nox.options.error_on_external_run = True
nox.options.default_venv_backend = "uv"
@nox.session(name="unit", python=PYTHON_VERSIONS, tags=["tests"])
def unit_tests(session: Session) -> None:
(here / ".coverage").unlink(missing_ok=True)
session.run_install(
"uv",
"sync",
"--all-extras",
"--group=test",
env={"UV_PROJECT_ENVIRONMENT": session.virtualenv.location},
)
test_files: list[str] = session.posargs or []
session.run("pytest", *COMMON_PYTEST_OPTIONS, "-vv", *test_files)
@nox.session(name="pyright", python=PYTHON_VERSIONS, tags=["lint"])
def pyright(session: Session) -> None:
session.run_install(
"uv",
"sync",
"--all-extras",
"--group=lint",
env={"UV_PROJECT_ENVIRONMENT": session.virtualenv.location},
)
env = {"PYRIGHT_PYTHON_PYLANCE_VERSION": PYRIGHT_PYTHON_PYLANCE_VERSION}
if PYRIGHT_PYTHON_FORCE_VERSION:
env["PYRIGHT_PYTHON_FORCE_VERSION"] = PYRIGHT_PYTHON_FORCE_VERSION
session.run("pyright", "--version", external=True, env=env)
session.run("pyright", *session.posargs, external=True, env=env)
@nox.session(name="vulture", python=PYTHON_VERSIONS, tags=["lint"])
def vulture(session: Session) -> None:
session.run_install(
"uv",
"sync",
"--group=lint",
env={"UV_PROJECT_ENVIRONMENT": session.virtualenv.location},
)
session.run("vulture", "src/", "--min-confidence=100", "--sort-by-size", external=True)