MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _raise_for_name

Method _raise_for_name

lib/sqlalchemy/orm/clsregistry.py:518–560  ·  view source on GitHub ↗
(self, name: str, err: Exception)

Source from the content-addressed store, hash-verified

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

Callers 2

_resolve_nameMethod · 0.95
__call__Method · 0.95

Calls 5

_metadata_for_clsFunction · 0.85
_get_table_keyFunction · 0.85
stripMethod · 0.80
manager_of_classMethod · 0.80
matchMethod · 0.45

Tested by

no test coverage detected