{"id":37071698,"url":"https://github.com/dantebben/nox-uv","last_synced_at":"2026-02-05T05:08:00.186Z","repository":{"id":286352215,"uuid":"961154286","full_name":"dantebben/nox-uv","owner":"dantebben","description":"Facilitate nox integration with uv for Python projects","archived":false,"fork":false,"pushed_at":"2026-01-03T19:58:20.000Z","size":276,"stargazers_count":25,"open_issues_count":2,"forks_count":4,"subscribers_count":3,"default_branch":"main","last_synced_at":"2026-01-14T10:29:57.994Z","etag":null,"topics":["nox","python","uv"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dantebben.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-05T21:47:30.000Z","updated_at":"2026-01-03T19:58:23.000Z","dependencies_parsed_at":null,"dependency_job_id":"c3a57b21-ee10-4c5a-ad55-b2ac084df8f3","html_url":"https://github.com/dantebben/nox-uv","commit_stats":null,"previous_names":["dantebben/nox-uv"],"tags_count":13,"template":false,"template_full_name":null,"purl":"pkg:github/dantebben/nox-uv","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dantebben%2Fnox-uv","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dantebben%2Fnox-uv/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dantebben%2Fnox-uv/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dantebben%2Fnox-uv/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dantebben","download_url":"https://codeload.github.com/dantebben/nox-uv/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dantebben%2Fnox-uv/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29113198,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-05T03:44:17.043Z","status":"ssl_error","status_checked_at":"2026-02-05T03:44:12.077Z","response_time":65,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nox","python","uv"],"created_at":"2026-01-14T08:24:48.019Z","updated_at":"2026-02-05T05:08:00.180Z","avatar_url":"https://github.com/dantebben.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Intro\n\n[![GitHub Actions][github-actions-badge]](https://github.com/dantebben/nox-uv/actions)\n[![PyPI version][pypi-version-badge]](https://pypi.python.org/pypi/nox-uv)\n[![Python versions][python-versions-badge]](https://pypi.python.org/pypi/nox-uv)\n[![uv][uv-badge]](https://github.com/astral-sh/uv)\n[![Nox][nox-badge]](https://github.com/wntrblm/nox)\n[![Ruff][ruff-badge]](https://github.com/astral-sh/ruff)\n[![Type checked with mypy][mypy-badge]](https://mypy-lang.org/)\n\n[github-actions-badge]: https://github.com/dantebben/nox-uv/workflows/CI/badge.svg\n[pypi-version-badge]: https://img.shields.io/pypi/v/nox-uv.svg\n[python-versions-badge]: https://img.shields.io/pypi/pyversions/nox-uv.svg\n[uv-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/uv/main/assets/badge/v0.json\n[nox-badge]: https://img.shields.io/badge/%F0%9F%A6%8A-Nox-D85E00.svg\n[ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json\n[mypy-badge]: https://www.mypy-lang.org/static/mypy_badge.svg\n\n`nox-uv` is a simple drop-in replacement for [nox](https://nox.thea.codes/)'s `@nox.session` that\ninstalls dependencies constrained by [uv](https://docs.astral.sh/uv/)'s lockfile.\n\n## Usage\n\nAdd `nox-uv` as a development dependency. The following example adds it into a `nox`\n`dependency-group`.\n\n```shell\nuv add --group nox nox-uv\n```\n\nUsing the following configuration within `pyproject.toml` as an example:\n\n```toml\n[dependency-groups]\nnox = [\n    \"nox-uv\",\n]\ntest = [\n    \"pytest\",\n    \"pytest-cov\",\n]\ntype_check = [\n    \"mypy\",\n]\nlint = [\n    \"ruff\",\n]\n```\n\nWithin, your `noxfile.py`:\n\n1. Import `session` from `nox_uv`.\n2. Set `venv_backend` to `\"uv\"`. This can be done globally using\n   `options.default_venv_backend = \"uv\"`.\n3. Use the new [`uv_*` parameters](#added-parameters) to `session` to control which dependencies\n   are synced into the session's virtual environment in addition to the project's main\n   dependencies.\n     - `uv sync` is used to install dependencies so that their versions are constrained by\n       `uv.lock`.\n     - By default (configurable with the `uv_sync_locked` parameter), `uv.lock` is also\n       validated to be up to date.\n\n```py\nfrom nox import Session, options\nfrom nox_uv import session\n\noptions.default_venv_backend = \"uv\"\n\n\n@session(\n    python=[\"3.10\", \"3.11\", \"3.12\", \"3.13\", \"3.14\"],\n    uv_groups=[\"test\"],\n)\ndef test(s: Session) -\u003e None:\n    s.run(\"python\", \"-m\", \"pytest\")\n\n\n@session(uv_groups=[\"type_check\"])\ndef type_check(s: Session) -\u003e None:\n    s.run(\"mypy\", \"src\")\n\n\n@session(uv_only_groups=[\"lint\"])\ndef lint(s: Session) -\u003e None:\n    s.run(\"ruff\", \"check\", \".\")\n    s.run(\"ruff\", \"format\", \"--check\", \".\")\n```\n\n\u003e [!NOTE]\n\u003e All `@session(...)` parameters are keywords only, no positional parameters are allowed.\n\n\u003e [!NOTE]\n\u003e The `default_groups` defined in `pyproject.toml` are _not_ installed by default. The\n\u003e user must explicitly list the desired groups in the `uv_groups` parameter.\n\n### Added parameters\n\n- `uv_groups`: list of `uv` _dependency-groups_\n- `uv_extras`: list of `uv` _optional-dependencies_\n- `uv_only_groups`: list of `uv` _only-groups_ to include. Prevents installation of project\n   _dependencies_\n- `uv_all_extras`: boolean to install all _optional-dependencies_ from `pyproject.toml`\n- `uv_no_extras`: list of extras to exclude during install of `uv_all_extras`\n- `uv_all_groups`: boolean to install all _dependency-groups_\n- `uv_no_groups`: list of groups to exclude during install of `uv_all_groups`\n- `uv_no_install_project`: boolean to not install the current project\n- `uv_sync_locked`: boolean to validate that `uv.lock` is up to date\n- `uv_quiet`: boolean to silence `uv sync` command\n\n\n## Inspiration\n\nThis is heavily influenced by, but much more limited than,\n[nox-poetry](https://nox-poetry.readthedocs.io).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdantebben%2Fnox-uv","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdantebben%2Fnox-uv","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdantebben%2Fnox-uv/lists"}