from __future__ import annotations import hashlib import json from pathlib import Path from typing import Any import yaml def sha256_file(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 load_json(path: Path) -> Any: with path.open(encoding="utf-8") as handle: return json.load(handle) def load_yaml(path: Path) -> Any: with path.open(encoding="utf-8") as handle: return yaml.safe_load(handle)