Skip to content

Commit 813e9cc

Browse files
authored
Add variant_label environment marker (#120)
Signed-off-by: Michał Górny <mgorny@quansight.com>
1 parent 75bea8e commit 813e9cc

2 files changed

Lines changed: 12 additions & 4 deletions

File tree

tests/test_api.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -531,7 +531,8 @@ def test_check_variant_supported_generic() -> None:
531531
)
532532

533533

534-
def test_get_variant_environment_dict() -> None:
534+
@pytest.mark.parametrize("label", [None, "foo"])
535+
def test_get_variant_environment_dict(label: str | None) -> None:
535536
vdesc = VariantDescription(
536537
[
537538
VariantProperty("ns1", "feat1", "val1"),
@@ -540,7 +541,7 @@ def test_get_variant_environment_dict() -> None:
540541
VariantProperty("ns3", "feat2", "val2"),
541542
]
542543
)
543-
assert get_variant_environment_dict(vdesc) == {
544+
expected: dict[str, set[str] | str] = {
544545
"variant_features": {
545546
"ns1 :: feat1",
546547
"ns1 :: feat2",
@@ -559,6 +560,9 @@ def test_get_variant_environment_dict() -> None:
559560
"ns3 :: feat2 :: val2",
560561
},
561562
}
563+
if label is not None:
564+
expected["variant_label"] = label
565+
assert get_variant_environment_dict(vdesc, label) == expected
562566

563567

564568
def test_make_variant_dist_info_invalid_label():

variantlib/api.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -324,16 +324,20 @@ def check_variant_supported(
324324

325325
def get_variant_environment_dict(
326326
variant_desc: VariantDescription,
327-
) -> dict[str, set[str]]:
327+
variant_label: str | None = None,
328+
) -> dict[str, set[str] | str]:
328329
"""Get the dict for packaging Marker.evaluate()"""
329330

330-
return {
331+
ret: dict[str, set[str] | str] = {
331332
"variant_namespaces": {vprop.namespace for vprop in variant_desc.properties},
332333
"variant_features": {
333334
vprop.feature_object.to_str() for vprop in variant_desc.properties
334335
},
335336
"variant_properties": {vprop.to_str() for vprop in variant_desc.properties},
336337
}
338+
if variant_label is not None:
339+
ret["variant_label"] = variant_label
340+
return ret
337341

338342

339343
def get_variant_label(

0 commit comments

Comments
 (0)