(
cls,
registry: _RegistryType,
cls_: Type[_O],
dict_: _ClassDict,
table: Optional[FromClause],
mapper_kw: _MapperKwArgs,
)
| 298 | |
| 299 | @classmethod |
| 300 | def setup_mapping( |
| 301 | cls, |
| 302 | registry: _RegistryType, |
| 303 | cls_: Type[_O], |
| 304 | dict_: _ClassDict, |
| 305 | table: Optional[FromClause], |
| 306 | mapper_kw: _MapperKwArgs, |
| 307 | ) -> Optional[_MapperConfig]: |
| 308 | manager = attributes.opt_manager_of_class(cls) |
| 309 | if manager and manager.class_ is cls_: |
| 310 | raise exc.InvalidRequestError( |
| 311 | f"Class {cls!r} already has been instrumented declaratively" |
| 312 | ) |
| 313 | |
| 314 | if cls_.__dict__.get("__abstract__", False): |
| 315 | return None |
| 316 | |
| 317 | defer_map = _get_immediate_cls_attr( |
| 318 | cls_, "_sa_decl_prepare_nocascade", strict=True |
| 319 | ) or hasattr(cls_, "_sa_decl_prepare") |
| 320 | |
| 321 | if defer_map: |
| 322 | return _DeferredMapperConfig( |
| 323 | registry, cls_, dict_, table, mapper_kw |
| 324 | ) |
| 325 | else: |
| 326 | return _ClassScanMapperConfig( |
| 327 | registry, cls_, dict_, table, mapper_kw |
| 328 | ) |
| 329 | |
| 330 | def __init__( |
| 331 | self, |
no test coverage detected