Compare two flattened element lists by name.
(baseline: list[dict[str, Any]], current: list[dict[str, Any]])
| 96 | |
| 97 | |
| 98 | def _compare_elements(baseline: list[dict[str, Any]], current: list[dict[str, Any]]) -> dict[str, Any]: |
| 99 | """Compare two flattened element lists by name.""" |
| 100 | baseline_by_ref = {e["ref"]: e for e in baseline if e["ref"]} |
| 101 | current_by_ref = {e["ref"]: e for e in current if e["ref"]} |
| 102 | |
| 103 | baseline_refs = set(baseline_by_ref) |
| 104 | current_refs = set(current_by_ref) |
| 105 | |
| 106 | added = [current_by_ref[r] for r in sorted(current_refs - baseline_refs)] |
| 107 | removed = [baseline_by_ref[r] for r in sorted(baseline_refs - current_refs)] |
| 108 | changed = _find_class_changes(baseline_by_ref, current_by_ref, baseline_refs & current_refs) |
| 109 | |
| 110 | return { |
| 111 | "baseline_count": len(baseline), |
| 112 | "current_count": len(current), |
| 113 | "added": added, |
| 114 | "removed": removed, |
| 115 | "changed": changed, |
| 116 | } |
| 117 | |
| 118 | |
| 119 | def _find_class_changes( |
no test coverage detected