Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 0 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ jobs:

- name: Install the package and test dependencies
run: |
uv venv
uv sync --frozen --extra dev --extra test --extra cli

# Consider using pre-commit.ci for open source project
Expand All @@ -50,7 +49,6 @@ jobs:
python-version: ${{ matrix.python-version }}
- name: Install the package and test dependencies
run: |
uv venv
uv sync --frozen --extra test --extra cli
- name: Run tests
run: uv run --no-project pytest -nauto
4 changes: 0 additions & 4 deletions tests/commands/test_make_variant.py
Original file line number Diff line number Diff line change
Expand Up @@ -108,10 +108,6 @@ def test_make_variant(
[
([], "error: one of the arguments -p/--property --null-variant is required"),
(["--property=x::y"], "argument -p/--property: invalid from_str value"),
(
["--property=x::y::z", "--variant-label=12345678901234567"],
"error: invalid variant label",
),
(
["--property=x::y::z", "--variant-label=null"],
"error: invalid variant label",
Expand Down
31 changes: 4 additions & 27 deletions tests/test_api.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
from variantlib.constants import VARIANT_INFO_PROVIDER_PLUGIN_API_KEY
from variantlib.constants import VARIANT_INFO_PROVIDER_REQUIRES_KEY
from variantlib.constants import VARIANT_INFO_STATIC_PROPERTIES_KEY
from variantlib.constants import VARIANT_LABEL_LENGTH
from variantlib.constants import VARIANTS_JSON_SCHEMA_KEY
from variantlib.constants import VARIANTS_JSON_SCHEMA_URL
from variantlib.constants import VARIANTS_JSON_VARIANT_DATA_KEY
Expand Down Expand Up @@ -590,25 +589,14 @@ def test_make_variant_dist_info_invalid_label():
with pytest.raises(
ValidationError,
match=re.escape(
f"Invalid variant label: 'foo/bar' (must be up to {VARIANT_LABEL_LENGTH} "
"alphanumeric characters)"
"Invalid variant label: 'foo/bar' "
"(must consist only of alphanumeric characters, underscores and dots)"
),
):
make_variant_dist_info(
VariantDescription([VariantProperty("a", "b", "c")]),
variant_label="foo/bar",
)
with pytest.raises(
ValidationError,
match=re.escape(
"Invalid variant label: '12345678901234567' (must be up to "
f"{VARIANT_LABEL_LENGTH} alphanumeric characters)"
),
):
make_variant_dist_info(
VariantDescription([VariantProperty("a", "b", "c")]),
variant_label="12345678901234567",
)


def test_get_variant_label() -> None:
Expand Down Expand Up @@ -669,25 +657,14 @@ def test_get_variant_label() -> None:
with pytest.raises(
ValidationError,
match=re.escape(
f"Invalid variant label: 'foo/bar' (must be up to {VARIANT_LABEL_LENGTH} "
"alphanumeric characters)"
"Invalid variant label: 'foo/bar' "
"(must consist only of alphanumeric characters, underscores and dots)"
),
):
get_variant_label(
VariantDescription([VariantProperty("a", "b", "c")]),
"foo/bar",
)
with pytest.raises(
ValidationError,
match=re.escape(
"Invalid variant label: '12345678901234567' (must be up to "
f"{VARIANT_LABEL_LENGTH} alphanumeric characters)"
),
):
get_variant_label(
VariantDescription([VariantProperty("a", "b", "c")]),
"12345678901234567",
)


@pytest.mark.parametrize(
Expand Down
4 changes: 1 addition & 3 deletions variantlib/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
from variantlib.configuration import VariantConfiguration
from variantlib.constants import NULL_VARIANT_LABEL
from variantlib.constants import VALIDATION_VARIANT_LABEL_REGEX
from variantlib.constants import VARIANT_LABEL_LENGTH
from variantlib.constants import VariantsJsonDict
from variantlib.errors import ValidationError
from variantlib.models.provider import ProviderConfig
Expand All @@ -35,7 +34,6 @@
logger = logging.getLogger(__name__)

__all__ = [
"VARIANT_LABEL_LENGTH",
"ProviderConfig",
"VariantDescription",
"VariantFeatureConfig",
Expand Down Expand Up @@ -375,6 +373,6 @@ def get_variant_label(
elif not VALIDATION_VARIANT_LABEL_REGEX.fullmatch(custom_label):
raise ValidationError(
f"Invalid variant label: {custom_label!r} "
f"(must be up to {VARIANT_LABEL_LENGTH} alphanumeric characters)"
f"(must consist only of alphanumeric characters, underscores and dots)"
)
return custom_label
5 changes: 2 additions & 3 deletions variantlib/commands/make_variant.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
from variantlib.constants import VALIDATION_VARIANT_LABEL_REGEX
from variantlib.constants import VALIDATION_WHEEL_NAME_REGEX
from variantlib.constants import VARIANT_DIST_INFO_FILENAME
from variantlib.constants import VARIANT_LABEL_LENGTH
from variantlib.errors import ValidationError
from variantlib.pyproject_toml import VariantPyProjectToml

Expand Down Expand Up @@ -118,8 +117,8 @@ def make_variant(args: list[str]) -> None:
)
if not VALIDATION_VARIANT_LABEL_REGEX.fullmatch(parsed_args.variant_label):
parser.error(
f"invalid variant label (must be up to {VARIANT_LABEL_LENGTH} "
"alphanumeric characters): {parsed_args.variant_label!r}"
f"Invalid variant label: {parsed_args.variant_label!r} "
f"(must consist only of alphanumeric characters, underscores and dots)"
)

try:
Expand Down
3 changes: 1 addition & 2 deletions variantlib/constants.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
from typing import Literal
from typing import TypedDict

VARIANT_LABEL_LENGTH = 16
NULL_VARIANT_LABEL = "null"
CONFIG_FILENAME = "variants.toml"
VARIANT_DIST_INFO_FILENAME = "variant.json"
Expand All @@ -28,7 +27,7 @@
VARIANTS_JSON_SCHEMA_URL = "https://variants-schema.wheelnext.dev/v0.0.3.json"
VARIANTS_JSON_VARIANT_DATA_KEY: Literal["variants"] = "variants"

VALIDATION_VARIANT_LABEL_REGEX = re.compile(rf"[0-9a-z._]{{1,{VARIANT_LABEL_LENGTH}}}")
VALIDATION_VARIANT_LABEL_REGEX = re.compile(r"[0-9a-z._]+")

VALIDATION_NAMESPACE_REGEX = re.compile(r"[a-z0-9_]+")
VALIDATION_FEATURE_NAME_REGEX = re.compile(r"[a-z0-9_]+")
Expand Down