KPrashanth's picture
Deploy Rachana Data Studio
14954f2 verified
Raw
History Blame Contribute Delete
1.58 kB
from __future__ import annotations
import hashlib
from datetime import datetime, timezone
from typing import Any
from data_studio.identity import canonical_json
def backup_manifest(environment: str, collections: dict[str, str], hf_artifacts: dict[str, str]) -> dict[str, Any]:
payload = {
"schema_version": "1.0",
"environment": environment,
"collections": collections,
"hf_artifacts": hf_artifacts,
}
return {
**payload,
"manifest_checksum": hashlib.sha256(canonical_json(payload).encode("utf-8")).hexdigest(),
"created_at": datetime.now(timezone.utc).isoformat(),
}
def impact_report(
revoked_entity_id: str,
dependency_edges: list[dict[str, str]],
) -> dict[str, Any]:
affected: set[str] = set()
frontier = [revoked_entity_id]
while frontier:
current = frontier.pop()
for edge in dependency_edges:
if edge["from"] == current and edge["to"] not in affected:
affected.add(edge["to"])
frontier.append(edge["to"])
return {"revoked_entity_id": revoked_entity_id, "affected_entities": sorted(affected)}
def quality_drift(
baseline_failure_rate: float,
current_failure_rate: float,
investigation_delta: float,
) -> dict[str, Any]:
delta = current_failure_rate - baseline_failure_rate
return {
"baseline_failure_rate": baseline_failure_rate,
"current_failure_rate": current_failure_rate,
"delta": delta,
"investigation_required": delta >= investigation_delta,
}