MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _access_cls

Method _access_cls

lib/sqlalchemy/orm/clsregistry.py:472–516  ·  view source on GitHub ↗
(self, key: str)

Source from the content-addressed store, hash-verified

470 return None
471
472 def _access_cls(self, key: str) -> Any:
473 cls = self.cls
474
475 manager = attributes.manager_of_class(cls)
476 registry = manager.registry
477 assert registry is not None
478 decl_class_registry = registry._class_registry
479 metadata = _metadata_for_cls(cls, registry)
480
481 if self.tables_only:
482 table = self._resolve_table_key(key, metadata)
483 if table is not None:
484 return table
485 elif key in metadata._schemas:
486 return _GetTable(key, metadata)
487
488 if key in decl_class_registry:
489 dt = _determine_container(key, decl_class_registry[key])
490 if self.tables_only:
491 return dt.cls
492 else:
493 return dt
494
495 if not self.tables_only:
496 table = self._resolve_table_key(key, metadata)
497 if table is not None:
498 return table
499 elif key in metadata._schemas:
500 return _GetTable(key, metadata)
501
502 if "_sa_module_registry" in decl_class_registry and key in cast(
503 _ModuleMarker, decl_class_registry["_sa_module_registry"]
504 ):
505 _module_registry = cast(
506 _ModuleMarker, decl_class_registry["_sa_module_registry"]
507 )
508 return _module_registry.resolve_attr(key)
509
510 if self._resolvers:
511 for resolv in self._resolvers:
512 value = resolv(key)
513 if value is not None:
514 return value
515
516 return self.fallback[key]
517
518 def _raise_for_name(self, name: str, err: Exception) -> NoReturn:
519 generic_match = re.match(r"(.+)\[(.+)\]", name)

Callers

nothing calls this directly

Calls 7

_resolve_table_keyMethod · 0.95
_metadata_for_clsFunction · 0.85
_GetTableClass · 0.85
_determine_containerFunction · 0.85
manager_of_classMethod · 0.80
resolve_attrMethod · 0.80
castFunction · 0.50

Tested by

no test coverage detected