Ava-82M / verify_release.py
xmanii's picture
Release Ava 82M v0.1
bb3a349 verified
Raw
History Blame Contribute Delete
1.23 kB
#!/usr/bin/env python3
"""Verify the Ava release against artifact_manifest.json."""
from __future__ import annotations
import hashlib
import json
from pathlib import Path
ROOT = Path(__file__).resolve().parent
def sha256(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as handle:
for chunk in iter(lambda: handle.read(1024 * 1024), b""):
digest.update(chunk)
return digest.hexdigest()
def main() -> None:
manifest = json.loads((ROOT / "artifact_manifest.json").read_text())
for filename, expected in manifest["artifacts"].items():
path = ROOT / filename
if not path.is_file():
raise SystemExit(f"missing: {filename}")
actual_size = path.stat().st_size
actual_hash = sha256(path)
if actual_size != expected["bytes"]:
raise SystemExit(
f"size mismatch for {filename}: {actual_size} != {expected['bytes']}"
)
if actual_hash != expected["sha256"]:
raise SystemExit(
f"hash mismatch for {filename}: {actual_hash} != {expected['sha256']}"
)
print(f"ok {filename} {actual_hash}")
if __name__ == "__main__":
main()