From f883f116e38d7122622a0f0f1bc9f53f157502c2 Mon Sep 17 00:00:00 2001 From: Ezra Brooks Date: Thu, 12 Nov 2026 11:38:54 -0700 Subject: [PATCH] Shard feedstock-outputs paths by alphanumeric characters feedstock-outputs drops non-alphanumeric characters when sharding, so names like c-compiler 404'd and fell back to the package name instead of the compilers feedstock. --- vinca/pinning.py | 3 ++- vinca/test_pinning.py | 14 ++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/vinca/pinning.py b/vinca/pinning.py index 8ab8580..7d70439 100644 --- a/vinca/pinning.py +++ b/vinca/pinning.py @@ -396,7 +396,8 @@ def _normalized(name: str) -> str: def _feedstock_output_url(package: str) -> str: - prefix = (package.lower() + "zzz")[:3] + # feedstock-outputs shards by the first three alphanumeric characters + prefix = ("".join(c for c in package.lower() if c.isalnum()) + "zzz")[:3] shards = "/".join(prefix) return FEEDSTOCK_OUTPUT_URL.format( shards=shards, package=quote(package.lower(), safe="") diff --git a/vinca/test_pinning.py b/vinca/test_pinning.py index 941ffae..5b7658c 100644 --- a/vinca/test_pinning.py +++ b/vinca/test_pinning.py @@ -8,6 +8,7 @@ from vinca.pinning import ( PinningError, + _feedstock_output_url, _migration_applies_to_platforms, dependencies_from_recipes, dependencies_from_vinca, @@ -600,3 +601,16 @@ def test_existing_active_migration_is_kept_and_overrides_are_unchanged(tmp_path) assert "This comment and value are maintained locally." in text parsed = ruamel.yaml.YAML(typ="safe").load(text) assert parsed["pinning_overrides"] == {"python": ["3.14.* *_cp314"]} + + +@pytest.mark.parametrize( + "package,shards", + [ + ("libboost-devel", "l/i/b"), + ("r-base", "r/b/a"), + ("c-ares", "c/a/r"), + ("go", "g/o/z"), + ], +) +def test_feedstock_output_url_shards_by_alphanumeric_characters(package, shards): + assert _feedstock_output_url(package).endswith(f"/outputs/{shards}/{package}.json")