()
| 22 | |
| 23 | @lru_cache(maxsize=1) |
| 24 | def load_tool_snapshot() -> tuple[PortingModule, ...]: |
| 25 | raw_entries = json.loads(SNAPSHOT_PATH.read_text()) |
| 26 | return tuple( |
| 27 | PortingModule( |
| 28 | name=entry['name'], |
| 29 | responsibility=entry['responsibility'], |
| 30 | source_hint=entry['source_hint'], |
| 31 | status='mirrored', |
| 32 | ) |
| 33 | for entry in raw_entries |
| 34 | ) |
| 35 | |
| 36 | |
| 37 | PORTED_TOOLS = load_tool_snapshot() |