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 frompyproject.toml, resolves the dependency groups you ask for, syncs the session environment, and installs the current project in editable mode. - 📉 Exercise multiple dependency strategies:
Resolutionexposeshighest,lowest, andlowest-directmodes so you can cover both everyday development and lower-bound compatibility in CI. - 🧪 Keep test sessions short without hiding
pytest:pytest()forwardss.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 likepytest-xdistare installed. - 🖥️ Skip GPU-only jobs safely:
supports_cuda()andcuda_driver_version()use NVML to decide whether CUDA-specific sessions should run.
📦 Installation
[!NOTE]
liblaf-nox-recipesrequires Python 3.12+ and expectsuvto be available anywhere yournoxsessions 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.
📝 License
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.