diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7ba66abd..6f4d3d0b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -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 @@ -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 diff --git a/tests/commands/test_make_variant.py b/tests/commands/test_make_variant.py index a993a37b..a57c21c8 100644 --- a/tests/commands/test_make_variant.py +++ b/tests/commands/test_make_variant.py @@ -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", diff --git a/tests/test_api.py b/tests/test_api.py index af2f7651..d6ed1d35 100644 --- a/tests/test_api.py +++ b/tests/test_api.py @@ -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 @@ -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: @@ -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( diff --git a/variantlib/api.py b/variantlib/api.py index d1f887a4..e79c497a 100644 --- a/variantlib/api.py +++ b/variantlib/api.py @@ -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 @@ -35,7 +34,6 @@ logger = logging.getLogger(__name__) __all__ = [ - "VARIANT_LABEL_LENGTH", "ProviderConfig", "VariantDescription", "VariantFeatureConfig", @@ -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 diff --git a/variantlib/commands/make_variant.py b/variantlib/commands/make_variant.py index e7539939..cf424a03 100644 --- a/variantlib/commands/make_variant.py +++ b/variantlib/commands/make_variant.py @@ -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 @@ -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: diff --git a/variantlib/constants.py b/variantlib/constants.py index 56dfbb5a..06b2998b 100644 --- a/variantlib/constants.py +++ b/variantlib/constants.py @@ -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" @@ -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_]+")