MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _dispose_registries

Function _dispose_registries

lib/sqlalchemy/orm/mapper.py:4284–4313  ·  view source on GitHub ↗
(registries: Set[_RegistryType], cascade: bool)

Source from the content-addressed store, hash-verified

4282
4283@util.preload_module("sqlalchemy.orm.decl_api")
4284def _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
4316def reconstructor(fn: _Fn) -> _Fn:

Callers

nothing calls this directly

Calls 6

differenceMethod · 0.45
popitemMethod · 0.45
clearMethod · 0.45
discardMethod · 0.45

Tested by

no test coverage detected