Return the full list of 'from' clauses to be displayed. Takes into account a set of existing froms which may be rendered in the FROM clause of enclosing selects; this Select may want to leave those absent if it is automatically correlating.
(
self,
explicit_correlate_froms: Optional[Sequence[FromClause]] = None,
implicit_correlate_froms: Optional[Sequence[FromClause]] = None,
)
| 5064 | return froms |
| 5065 | |
| 5066 | def _get_display_froms( |
| 5067 | self, |
| 5068 | explicit_correlate_froms: Optional[Sequence[FromClause]] = None, |
| 5069 | implicit_correlate_froms: Optional[Sequence[FromClause]] = None, |
| 5070 | ) -> List[FromClause]: |
| 5071 | """Return the full list of 'from' clauses to be displayed. |
| 5072 | |
| 5073 | Takes into account a set of existing froms which may be |
| 5074 | rendered in the FROM clause of enclosing selects; this Select |
| 5075 | may want to leave those absent if it is automatically |
| 5076 | correlating. |
| 5077 | |
| 5078 | """ |
| 5079 | |
| 5080 | froms = self.froms |
| 5081 | |
| 5082 | if self.statement._correlate: |
| 5083 | to_correlate = self.statement._correlate |
| 5084 | if to_correlate: |
| 5085 | to_remove = _cloned_intersection( |
| 5086 | _cloned_intersection( |
| 5087 | froms, explicit_correlate_froms or () |
| 5088 | ), |
| 5089 | to_correlate, |
| 5090 | ) |
| 5091 | froms = [f for f in froms if f not in to_remove] |
| 5092 | |
| 5093 | if self.statement._correlate_except is not None: |
| 5094 | to_remove = _cloned_difference( |
| 5095 | _cloned_intersection(froms, explicit_correlate_froms or ()), |
| 5096 | self.statement._correlate_except, |
| 5097 | ) |
| 5098 | froms = [f for f in froms if f not in to_remove] |
| 5099 | |
| 5100 | if ( |
| 5101 | self.statement._auto_correlate |
| 5102 | and implicit_correlate_froms |
| 5103 | and len(froms) > 1 |
| 5104 | ): |
| 5105 | to_remove = _cloned_intersection(froms, implicit_correlate_froms) |
| 5106 | froms = [f for f in froms if f not in to_remove] |
| 5107 | |
| 5108 | if not len(froms): |
| 5109 | raise exc.InvalidRequestError( |
| 5110 | "Select statement '%r" |
| 5111 | "' returned no FROM clauses " |
| 5112 | "due to auto-correlation; " |
| 5113 | "specify correlate(<tables>) " |
| 5114 | "to control correlation " |
| 5115 | "manually." % self.statement |
| 5116 | ) |
| 5117 | |
| 5118 | return froms |
| 5119 | |
| 5120 | def _memoized_attr__label_resolve_dict( |
| 5121 | self, |
no test coverage detected