ColumnAdapter subclass which excludes adaptation of entities from non-matching mappers.
| 580 | |
| 581 | |
| 582 | class ORMAdapter(sql_util.ColumnAdapter): |
| 583 | """ColumnAdapter subclass which excludes adaptation of entities from |
| 584 | non-matching mappers. |
| 585 | |
| 586 | """ |
| 587 | |
| 588 | __slots__ = ("role", "mapper", "is_aliased_class", "aliased_insp") |
| 589 | |
| 590 | is_aliased_class: bool |
| 591 | aliased_insp: Optional[AliasedInsp[Any]] |
| 592 | |
| 593 | def __init__( |
| 594 | self, |
| 595 | role: _TraceAdaptRole, |
| 596 | entity: _InternalEntityType[Any], |
| 597 | *, |
| 598 | equivalents: Optional[_EquivalentColumnMap] = None, |
| 599 | adapt_required: bool = False, |
| 600 | allow_label_resolve: bool = True, |
| 601 | anonymize_labels: bool = False, |
| 602 | selectable: Optional[Selectable] = None, |
| 603 | limit_on_entity: bool = True, |
| 604 | adapt_on_names: bool = False, |
| 605 | adapt_from_selectables: Optional[AbstractSet[FromClause]] = None, |
| 606 | ): |
| 607 | self.role = role |
| 608 | self.mapper = entity.mapper |
| 609 | if selectable is None: |
| 610 | selectable = entity.selectable |
| 611 | if insp_is_aliased_class(entity): |
| 612 | self.is_aliased_class = True |
| 613 | self.aliased_insp = entity |
| 614 | else: |
| 615 | self.is_aliased_class = False |
| 616 | self.aliased_insp = None |
| 617 | |
| 618 | super().__init__( |
| 619 | selectable, |
| 620 | equivalents, |
| 621 | adapt_required=adapt_required, |
| 622 | allow_label_resolve=allow_label_resolve, |
| 623 | anonymize_labels=anonymize_labels, |
| 624 | include_fn=self._include_fn if limit_on_entity else None, |
| 625 | adapt_on_names=adapt_on_names, |
| 626 | adapt_from_selectables=adapt_from_selectables, |
| 627 | ) |
| 628 | |
| 629 | def _include_fn(self, elem): |
| 630 | entity = elem._annotations.get("parentmapper", None) |
| 631 | |
| 632 | return not entity or entity.isa(self.mapper) or self.mapper.isa(entity) |
| 633 | |
| 634 | |
| 635 | class AliasedClass( |
no outgoing calls
no test coverage detected