Skip to content
Merged
Changes from all commits
Commits
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
37 changes: 19 additions & 18 deletions noxfile.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from __future__ import annotations

import os
import functools
import pathlib
import shutil
Expand Down Expand Up @@ -52,7 +53,11 @@
]

# Default args for all 'uv sync' and 'uv run' calls
UV_ARGS = ["--frozen", "--quiet", "--active"]
UV_ARGS = [
"--frozen",
"--quiet",
"--active",
]


@nox.session(name="dev", python=False)
Expand All @@ -61,10 +66,12 @@ def dev_session(session: nox.Session) -> None:
session.run_install("uv", "sync")


@nox.session(name="test")
@nox.session(name="test", python=False)
def run_tests_with_coverage(session: nox.Session) -> None:
"""Run pytest in isolated environment, display coverage. Extra arguements passed to pytest."""
uv_args = UV_ARGS + [f"--python={session.virtualenv.location}"]
uv_args = UV_ARGS
if "UV_PYTHON" in os.environ:
uv_args = UV_ARGS + [f"--python={os.environ['UV_PYTHON']}"]

partial = "partial-coverage" in session.posargs

Expand All @@ -83,41 +90,35 @@ def run_tests_with_coverage(session: nox.Session) -> None:
coverage("html")


@nox.session(name="combine")
@nox.session(name="combine", python=False)
def combine_coverage(session: nox.Session) -> None:
"""Combine parallel-mode coverage files and produce reports."""
uv_args = UV_ARGS + [f"--python={session.virtualenv.location}"]

session.run_install("uv", "sync", *uv_args)
session.run_install("uv", "sync", *UV_ARGS)

coverage = functools.partial(session.run, "uv", "run", *uv_args, "coverage")
coverage = functools.partial(session.run, "uv", "run", *UV_ARGS, "coverage")

coverage("combine")
coverage("report", "--show-missing")
coverage("html")
coverage("json")


@nox.session(name="lint")
@nox.session(name="lint", python=False)
def run_linters(session: nox.Session) -> None:
"""Run code linters, and type checking against all files."""
uv_args = UV_ARGS + [f"--python={session.virtualenv.location}"]

session.run_install("uv", "sync", "--group", "lint", *uv_args)
session.run_install("uv", "sync", "--group", "lint", *UV_ARGS)

for linter_args in LINTERS:
session.run("uv", "run", *uv_args, *linter_args)
session.run("uv", "run", *UV_ARGS, *linter_args)


@nox.session(name="format")
@nox.session(name="format", python=False)
def run_formatters(session: nox.Session) -> None:
"""Run code formatters against all files."""
uv_args = UV_ARGS + [f"--python={session.virtualenv.location}"]

session.run_install("uv", "sync", "--group", "format", *uv_args)
session.run_install("uv", "sync", "--group", "format", *UV_ARGS)

for formatter_args in FORMATTERS:
session.run("uv", "run", *uv_args, *formatter_args)
session.run("uv", "run", *UV_ARGS, *formatter_args)


@nox.session(name="build", python=False)
Expand Down