(self, name: str, err: Exception)
| 516 | return self.fallback[key] |
| 517 | |
| 518 | def _raise_for_name(self, name: str, err: Exception) -> NoReturn: |
| 519 | generic_match = re.match(r"(.+)\[(.+)\]", name) |
| 520 | |
| 521 | if generic_match: |
| 522 | clsarg = generic_match.group(2).strip("'") |
| 523 | raise exc.InvalidRequestError( |
| 524 | f"When initializing mapper {self.prop.parent}, " |
| 525 | f'expression "relationship({self.arg!r})" seems to be ' |
| 526 | "using a generic class as the argument to relationship(); " |
| 527 | "please state the generic argument " |
| 528 | "using an annotation, e.g. " |
| 529 | f'"{self.prop.key}: Mapped[{generic_match.group(1)}' |
| 530 | f"['{clsarg}']] = relationship()\"" |
| 531 | ) from err |
| 532 | else: |
| 533 | manager = attributes.manager_of_class(self.cls) |
| 534 | registry = manager.registry |
| 535 | metadata = ( |
| 536 | _metadata_for_cls(self.cls, registry) |
| 537 | if registry is not None |
| 538 | else None |
| 539 | ) |
| 540 | |
| 541 | # when deprecated fallback lookup in |
| 542 | # _resolve_table_key is removed, consider adding |
| 543 | # additional context to the error message if the |
| 544 | # unqualified key is located under BLANK_SCHEMA |
| 545 | if metadata is not None and metadata.schema is not None: |
| 546 | schema_key = _get_table_key(name, metadata.schema) |
| 547 | assert schema_key not in metadata.tables |
| 548 | |
| 549 | raise exc.InvalidRequestError( |
| 550 | "When initializing mapper %s, expression %r failed to " |
| 551 | "locate a name (%r). If this is a class name, consider " |
| 552 | "adding this relationship() to the %r class after " |
| 553 | "both dependent classes have been defined." |
| 554 | % ( |
| 555 | self.prop.parent, |
| 556 | self.arg, |
| 557 | name, |
| 558 | self.cls, |
| 559 | ) |
| 560 | ) from err |
| 561 | |
| 562 | def _resolve_name(self) -> Union[Table, Type[Any], _ModNS]: |
| 563 | name = self.arg |
no test coverage detected