Skip to content
Closed
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
47 changes: 27 additions & 20 deletions scripts/ci/materialize_base_python_requirements.py
Original file line number Diff line number Diff line change
Expand Up @@ -370,6 +370,32 @@ def _reject_unsupported_uv_workspace(
)


def _validate_uv_export(
completed: subprocess.CompletedProcess[bytes], lock_path: str
) -> bytes | None:
"""Validate a completed uv export and return its hash-pinned requirements."""
if completed.returncode != 0:
stderr = completed.stderr.decode("utf-8", errors="replace")
normalized_stderr = " ".join(stderr.split())
detail = (
normalized_stderr[:500]
if normalized_stderr
else f"exit status {completed.returncode}"
)
raise RuntimeError(
f"uv export failed for tracked base lock {lock_path}: {detail}"
)

exported = completed.stdout
if not _requirement_lines(exported):
return None
if not _is_fully_hash_pinned_export(exported):
raise RuntimeError(
f"uv export for tracked base lock {lock_path} was not fully hash-pinned"
)
return exported


def _export_uv_lock(
repo_root: pathlib.Path, base_sha: str, lock_path: str
) -> bytes | None:
Expand Down Expand Up @@ -399,26 +425,7 @@ def _export_uv_lock(
f"{type(exc).__name__}"
) from exc

if completed.returncode != 0:
stderr = completed.stderr.decode("utf-8", errors="replace")
normalized_stderr = " ".join(stderr.split())
detail = (
normalized_stderr[:500]
if normalized_stderr
else f"exit status {completed.returncode}"
)
raise RuntimeError(
f"uv export failed for tracked base lock {lock_path}: {detail}"
)

exported = completed.stdout
if not _requirement_lines(exported):
return None
if not _is_fully_hash_pinned_export(exported):
raise RuntimeError(
f"uv export for tracked base lock {lock_path} was not fully hash-pinned"
)
return exported
return _validate_uv_export(completed, lock_path)


def _regular_base_blob_paths(entries: bytes) -> list[tuple[str, pathlib.PurePosixPath]]:
Expand Down
Loading