compare M4.7 threat parity by component identity
This commit is contained in:
@@ -134,10 +134,15 @@ def compare_reference_graph_to_accepted_ledgers(
|
||||
]
|
||||
if observed_camera_uncertainty != expected_camera_uncertainty:
|
||||
mismatch["camera_uncertainty"] += 1
|
||||
if [item.to_dict() for item in delivery.threats] != _array(
|
||||
threat,
|
||||
"assessments",
|
||||
):
|
||||
observed_assessments = _assessment_index(
|
||||
[item.to_dict() for item in delivery.threats],
|
||||
"graph threat assessments",
|
||||
)
|
||||
expected_assessments = _assessment_index(
|
||||
_array(threat, "assessments"),
|
||||
"accepted threat assessments",
|
||||
)
|
||||
if observed_assessments != expected_assessments:
|
||||
mismatch["threat_assessments"] += 1
|
||||
compared += 1
|
||||
if temporal_stream.readline() or threat_stream.readline():
|
||||
@@ -204,6 +209,19 @@ def _boolean(document: dict[str, object], key: str) -> bool:
|
||||
return value
|
||||
|
||||
|
||||
def _assessment_index(
|
||||
rows: list[dict[str, object]],
|
||||
label: str,
|
||||
) -> dict[str, dict[str, object]]:
|
||||
indexed: dict[str, dict[str, object]] = {}
|
||||
for row in rows:
|
||||
component_id = _string(row, "component_id")
|
||||
if component_id in indexed:
|
||||
raise ReferenceGraphParityError(f"{label} contains a duplicate component")
|
||||
indexed[component_id] = row
|
||||
return indexed
|
||||
|
||||
|
||||
__all__ = [
|
||||
"REFERENCE_GRAPH_PARITY_SCHEMA",
|
||||
"ReferenceGraphParityError",
|
||||
|
||||
Reference in New Issue
Block a user