fix: name release assets as GitHub serves them

This commit is contained in:
Abdessamad Derraz committed 2026-10-18 14:49:00 +02:00
1 parent a08827257d
commit dbd47886ce
4 files changed
+35 -4

No files matched your search

+9 -3
View File
@@ -76,7 +76,7 @@ import slot as slot_mod
import slots
import split_pack
from deterministic_zip import _FIXED_DATE_TIME, rebuild_zip_deterministic
from largefiles import asset_name, load_registered_paths
from largefiles import asset_name, load_registered_paths, published_asset_name
from nativemode import (
digest_algorithm,
hash_mismatch_excludes_file,
@@ -3226,8 +3226,14 @@ def _repo_relative(local_path: str, repo_root: str) -> str:
def _release_asset_name(local_path: str, repo_root: str) -> str:
"""The large-files asset install.py downloads for a gitignored file."""
return asset_name(_repo_relative(local_path, repo_root), sorted(_registered(repo_root)))
"""The large-files asset install.py downloads for a gitignored file.
The name GitHub serves, not the one uploaded: a space in the path came
back as a 404 for an installer asking for it verbatim.
"""
return published_asset_name(
asset_name(_repo_relative(local_path, repo_root), sorted(_registered(repo_root)))
)
def _get_repo_path(sha1: str, db: dict) -> str:
+2 -1
View File
@@ -2018,11 +2018,12 @@ def _fetch_url(path: str) -> str:
LARGE_FILES_RELEASE,
asset_names,
load_registered_paths,
published_asset_name,
)
_RELEASE_ASSET_NAMES = {
registered: f"{REPO_URL}/releases/download/{LARGE_FILES_RELEASE}/"
+ urllib.parse.quote(name.replace(" ", "."))
+ urllib.parse.quote(published_asset_name(name))
for registered, name in asset_names(load_registered_paths()).items()
}
return _RELEASE_ASSET_NAMES.get(path) or (
+5
View File
@@ -88,6 +88,11 @@ def asset_name(path: str, registered: Iterable[str]) -> str:
return asset_names([*registered, path])[path]
def published_asset_name(name: str) -> str:
"""The name GitHub serves an asset under: it publishes a space as a dot."""
return name.replace(" ", ".")
def asset_candidates(name: str, registered: Iterable[str]) -> list[str]:
"""Assets that may hold *name*, a registered path or a bare file name.