(self, key: str)
| 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) |
nothing calls this directly
no test coverage detected