Skip to main content

liblaf-nox-recipes keeps noxfile.py sessions small by packaging the uv, pytest, and CUDA glue you would otherwise repeat across repositories.

✨ Features

  • 💨 Bootstrap uv-managed environments in one call: setup_uv() compiles constraints from pyproject.toml, resolves the dependency groups you ask for, syncs the session environment, and installs the current project in editable mode.
  • 📉 Exercise multiple dependency strategies: Resolution exposes highest, lowest, and lowest-direct modes so you can cover both everyday development and lower-bound compatibility in CI.
  • 🧪 Keep test sessions short without hiding pytest: pytest() forwards s.posargs, supports per-session environment variables, and keeps shared flags out of each @nox.session.
  • ⚡ Run CodSpeed-friendly benchmarks: pytest_bench() adds the benchmark marker, --codspeed, and single-process defaults when helpers like pytest-xdist are installed.
  • 🖥️ Skip GPU-only jobs safely: supports_cuda() and cuda_driver_version() use NVML to decide whether CUDA-specific sessions should run.

📦 Installation

[!NOTE] liblaf-nox-recipes requires Python 3.12+ and expects uv to be available anywhere your nox sessions run.

uv add --dev liblaf-nox-recipes

If you also want uv to create and manage the virtual environments that nox uses, install nox-uv and set nox.options.default_venv_backend = "uv" in your noxfile.py.

🚀 Quick Start

from typing import Any

import nox

from liblaf import nox_recipes as recipes
from liblaf.nox_recipes import Resolution

nox.options.default_venv_backend = "uv"
nox.options.reuse_existing_virtualenvs = True

PYPROJECT: dict[str, Any] = nox.project.load_toml("pyproject.toml")
PYTHON_VERSIONS: list[str] = nox.project.python_versions(PYPROJECT)


@nox.session(python=PYTHON_VERSIONS, reuse_venv=True, tags=["test"])
@nox.parametrize(
    "resolution",
    [
        nox.param(Resolution.HIGHEST, id="highest"),
        nox.param(Resolution.LOWEST_DIRECT, id="lowest-direct"),
    ],
)
def test(s: nox.Session, resolution: Resolution) -> None:
    recipes.setup_uv(s, groups=["test"], resolution=resolution)
    recipes.pytest(s, suppress_no_test_exit_code=True)

Start with setup_uv() for the common case. When you need finer control, drop down to uv_pip_compile(), uv_pip_sync(), and uv_pip_install() directly. For GPU-only jobs, guard the session with supports_cuda() before doing any CUDA-dependent work.

⌨️ Local Development

git clone https://github.com/liblaf/nox-recipes.git
cd nox-recipes
mise run install
nox
mise run docs:serve

nox executes the test-tagged matrix from noxfile.py, and mise run docs:serve rebuilds the docs site that also embeds this README.

🤝 Contributing

Focused issues and pull requests are welcome. Please run nox before opening a PR, and rebuild the docs with mise run docs:serve when you change documentation or public APIs.

PR WELCOME

Contributors


📝 License

Copyright © 2026 liblaf.
This project is MIT licensed.

Metadata

Release files for liblaf-nox-recipes 0.1.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for liblaf-nox-recipes 0.1.6
File Size Uploaded Provenance Actions
liblaf_nox_recipes-0.1.6.tar.gz 8.2 kB With provenance Details for liblaf_nox_recipes-0.1.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for liblaf-nox-recipes 0.1.6
File Interpreter ABI Platform Actions
liblaf_nox_recipes-0.1.6-py3-none-any.whl Python 3 none any Details for liblaf_nox_recipes-0.1.6-py3-none-any.whl

Total release size: 18.1 kB

Release files / liblaf_nox_recipes-0.1.6.tar.gz

Download URL liblaf_nox_recipes-0.1.6.tar.gz
Size 8.2 kB
Tags Source
SHA-256 checksum
How to use checksums
e3f02372809a938b8c8706dd98e1821b594120fc52793184ac761724b2163d48
BLAKE2b-256 checksum
How to use checksums
e952bbaf2099c6bb96cf862178b903bfa2442f6e581cb7adbd3d8988dc219763
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Release files / liblaf_nox_recipes-0.1.6-py3-none-any.whl

Download URL liblaf_nox_recipes-0.1.6-py3-none-any.whl
Size 9.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d969effaf8c84de7fb4668fbc19d213b748f637a8b3fae0309895df70c52733c
BLAKE2b-256 checksum
How to use checksums
adeeaa653ffe0f348ce568bb7ea48231dc2b376d7687566984d1deb9de8eb579
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

Security for liblaf-nox-recipes 0.1.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for liblaf_nox_recipes-0.1.6.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Apr 5, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page