(self)
| 516 | @util.memoized_property |
| 517 | @util.preload_module("orm.properties") |
| 518 | def props(self) -> Sequence[MapperProperty[Any]]: |
| 519 | props = [] |
| 520 | MappedColumn = util.preloaded.orm_properties.MappedColumn |
| 521 | |
| 522 | for attr in self.attrs: |
| 523 | if isinstance(attr, str): |
| 524 | prop = self.parent.get_property(attr, _configure_mappers=False) |
| 525 | elif isinstance(attr, schema.Column): |
| 526 | prop = self.parent._columntoproperty[attr] |
| 527 | elif isinstance(attr, MappedColumn): |
| 528 | prop = self.parent._columntoproperty[attr.column] |
| 529 | elif isinstance(attr, attributes.InstrumentedAttribute): |
| 530 | prop = attr.property |
| 531 | else: |
| 532 | prop = None |
| 533 | |
| 534 | if not isinstance(prop, MapperProperty): |
| 535 | raise sa_exc.ArgumentError( |
| 536 | "Composite expects Column objects or mapped " |
| 537 | f"attributes/attribute names as arguments, got: {attr!r}" |
| 538 | ) |
| 539 | |
| 540 | props.append(prop) |
| 541 | return props |
| 542 | |
| 543 | def _column_strategy_attrs(self) -> Sequence[QueryableAttribute[Any]]: |
| 544 | return self._comparable_elements |
nothing calls this directly
no test coverage detected