| 71 | self.disk_migrations[key] = migration_obj |
| 72 | |
| 73 | async def build_graph(self) -> None: |
| 74 | self.load_disk() |
| 75 | self.graph = MigrationGraph() |
| 76 | self.applied_migrations = set(await self.recorder.applied_migrations()) |
| 77 | |
| 78 | for key, migration in self.disk_migrations.items(): |
| 79 | self.graph.add_node(key, migration) |
| 80 | |
| 81 | for key, migration in self.disk_migrations.items(): |
| 82 | self._add_internal_dependencies(key, migration) |
| 83 | |
| 84 | for key, migration in self.disk_migrations.items(): |
| 85 | self._add_external_dependencies(key, migration) |
| 86 | |
| 87 | self.graph.validate_consistency() |
| 88 | |
| 89 | def _check_key(self, key: MigrationKey, current_app: str) -> MigrationKey | None: |
| 90 | if (key.name != "__first__" and key.name != "__latest__") or key in self.graph.nodes: |