MCPcopy
hub / github.com/sqlalchemy/sqlalchemy / _RelationshipArg

Class _RelationshipArg

lib/sqlalchemy/orm/relationships.py:259–291  ·  view source on GitHub ↗

stores a user-defined parameter value that must be resolved and parsed later at mapper configuration time.

Source from the content-addressed store, hash-verified

257
258@dataclasses.dataclass
259class _RelationshipArg(Generic[_T1, _T2]):
260 """stores a user-defined parameter value that must be resolved and
261 parsed later at mapper configuration time.
262
263 """
264
265 __slots__ = "name", "argument", "resolved"
266 name: str
267 argument: _T1
268 resolved: Optional[_T2]
269
270 def _is_populated(self) -> bool:
271 return self.argument is not None
272
273 def _resolve_against_registry(
274 self, clsregistry_resolver: Callable[[str, bool], _class_resolver]
275 ) -> None:
276 attr_value = self.argument
277
278 if isinstance(attr_value, str):
279 self.resolved = clsregistry_resolver(
280 attr_value, self.name == "secondary"
281 )()
282 elif callable(attr_value) and not _is_mapped_class(attr_value):
283 self.resolved = attr_value()
284 else:
285 self.resolved = attr_value
286
287 def effective_value(self) -> Any:
288 if self.resolved is not None:
289 return self.resolved
290 else:
291 return self.argument
292
293
294_RelationshipOrderByArg = Union[Literal[False], Tuple[ColumnElement[Any], ...]]

Callers 1

__init__Method · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected