diff --git a/e2e/MODULE.bazel b/e2e/MODULE.bazel new file mode 100644 index 000000000..e69de29bb diff --git a/e2e/cases/MODULE.bazel b/e2e/cases/MODULE.bazel index fcd99dfac..4ce964105 100644 --- a/e2e/cases/MODULE.bazel +++ b/e2e/cases/MODULE.bazel @@ -123,6 +123,7 @@ include("//uv-deps-650:setup.MODULE.bazel") include("//uv-data-purelib:setup.MODULE.bazel") include("//uv-dup-lock-records:setup.MODULE.bazel") include("//uv-duplicate-whl-labels:setup.MODULE.bazel") +include("//uv-extra-marker:setup.MODULE.bazel") include("//uv-git-source:setup.MODULE.bazel") include("//uv-include-group:setup.MODULE.bazel") include("//uv-incompatible-wheel-source:setup.MODULE.bazel") diff --git a/e2e/cases/uv-extra-marker/BUILD.bazel b/e2e/cases/uv-extra-marker/BUILD.bazel new file mode 100644 index 000000000..df3db1a33 --- /dev/null +++ b/e2e/cases/uv-extra-marker/BUILD.bazel @@ -0,0 +1,14 @@ +load("@aspect_rules_py//py:defs.bzl", "py_test") + +py_test( + name = "extra_marker", + srcs = [ + "__test__.py", + ], + dep_group = "ci", + main = "__test__.py", + python_version = "3.11", + deps = [ + "@pypi_uv_extra_marker//colorama", + ], +) diff --git a/e2e/cases/uv-extra-marker/__test__.py b/e2e/cases/uv-extra-marker/__test__.py new file mode 100644 index 000000000..5244124d6 --- /dev/null +++ b/e2e/cases/uv-extra-marker/__test__.py @@ -0,0 +1,12 @@ +#!/usr/bin/env python3 +"""Reproduce omitted extra-only markers. + +The dev dependency group activates the project's `build` extra, which should +make `colorama` available. If rules_py evaluates `extra == 'build'` to false +because the active venv is named `dev`, the dependency is dropped and this +import fails. +""" + +import colorama + +print(f"colorama: {colorama.__file__}") diff --git a/e2e/cases/uv-extra-marker/pyproject.toml b/e2e/cases/uv-extra-marker/pyproject.toml new file mode 100644 index 000000000..1702531c6 --- /dev/null +++ b/e2e/cases/uv-extra-marker/pyproject.toml @@ -0,0 +1,15 @@ +[project] +name = "extra-marker" +version = "0.0.0" +requires-python = ">=3.11" +dependencies = [] + +[project.optional-dependencies] +build = [ + "colorama", +] + +[dependency-groups] +ci = [ + "extra-marker[build]", +] diff --git a/e2e/cases/uv-extra-marker/setup.MODULE.bazel b/e2e/cases/uv-extra-marker/setup.MODULE.bazel new file mode 100644 index 000000000..9168008ce --- /dev/null +++ b/e2e/cases/uv-extra-marker/setup.MODULE.bazel @@ -0,0 +1,8 @@ +uv = use_extension("@aspect_rules_py//uv:extensions.bzl", "uv") +uv.declare_hub(hub_name = "pypi_uv_extra_marker") +uv.project( + hub_name = "pypi_uv_extra_marker", + lock = "//uv-extra-marker:uv.lock", + pyproject = "//uv-extra-marker:pyproject.toml", +) +use_repo(uv, "pypi_uv_extra_marker") diff --git a/e2e/cases/uv-extra-marker/uv.lock b/e2e/cases/uv-extra-marker/uv.lock new file mode 100644 index 000000000..8f463cdfb --- /dev/null +++ b/e2e/cases/uv-extra-marker/uv.lock @@ -0,0 +1,34 @@ +version = 1 +revision = 3 +requires-python = ">=3.11" + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "extra-marker" +version = "0.0.0" +source = { virtual = "." } + +[package.optional-dependencies] +build = [ + { name = "colorama", marker = "extra == 'build'" }, +] + +[package.dev-dependencies] +ci = [ + { name = "extra-marker", extra = ["build"] }, +] + +[package.metadata] +requires-dist = [{ name = "colorama", marker = "extra == 'build'" }] +provides-extras = ["build"] + +[package.metadata.requires-dev] +ci = [{ name = "extra-marker", extras = ["build"] }]