"""Streaming SHA256 hashing utilities for large files.""" from __future__ import annotations import hashlib from pathlib import Path _CHUNK = 1024 * 1024 # 1 MiB def sha256_file(path: Path | str) -> str: """Compute SHA256 of a file in streaming mode (constant memory).""" h = hashlib.sha256() with open(path, "rb") as f: for block in iter(lambda: f.read(_CHUNK), b""): h.update(block) return h.hexdigest() def sha256_bytes(data: bytes) -> str: return hashlib.sha256(data).hexdigest()