(registries: Set[_RegistryType], cascade: bool)
| 4282 | |
| 4283 | @util.preload_module("sqlalchemy.orm.decl_api") |
| 4284 | def _dispose_registries(registries: Set[_RegistryType], cascade: bool) -> None: |
| 4285 | registry = util.preloaded.orm_decl_api.registry |
| 4286 | |
| 4287 | orig = set(registries) |
| 4288 | |
| 4289 | for reg in registry._recurse_with_dependents(registries): |
| 4290 | if not cascade and reg._dependents.difference(orig): |
| 4291 | raise sa_exc.InvalidRequestError( |
| 4292 | "Registry has dependent registries that are not disposed; " |
| 4293 | "pass cascade=True to clear these also" |
| 4294 | ) |
| 4295 | |
| 4296 | while reg._managers: |
| 4297 | try: |
| 4298 | manager, _ = reg._managers.popitem() |
| 4299 | except KeyError: |
| 4300 | # guard against race between while and popitem |
| 4301 | pass |
| 4302 | else: |
| 4303 | reg._dispose_manager_and_mapper(manager) |
| 4304 | |
| 4305 | reg._dependents.clear() |
| 4306 | for dep in reg._dependencies: |
| 4307 | dep._dependents.discard(reg) |
| 4308 | reg._dependencies.clear() |
| 4309 | # this wasn't done in the 1.3 clear_mappers() and in fact it |
| 4310 | # was a bug, as it could cause configure_mappers() to invoke |
| 4311 | # the "before_configured" event even though mappers had all been |
| 4312 | # disposed. |
| 4313 | reg._new_mappers = False |
| 4314 | |
| 4315 | |
| 4316 | def reconstructor(fn: _Fn) -> _Fn: |
nothing calls this directly
no test coverage detected