(
self,
side_data: dict[bool, _SideData],
mode: pw.JoinMode,
defaults: dict[expr.InternalColRef, Any],
direction: Direction,
_filter_out_results_of_forgetting: bool,
)
| 203 | _all_cols: list[_SelectColumn] |
| 204 | |
| 205 | def __init__( |
| 206 | self, |
| 207 | side_data: dict[bool, _SideData], |
| 208 | mode: pw.JoinMode, |
| 209 | defaults: dict[expr.InternalColRef, Any], |
| 210 | direction: Direction, |
| 211 | _filter_out_results_of_forgetting: bool, |
| 212 | ): |
| 213 | super().__init__() |
| 214 | self._side_data = side_data |
| 215 | self._mode = mode |
| 216 | self._defaults = defaults |
| 217 | self._direction = direction |
| 218 | all_cols: list[_SelectColumn] = [] |
| 219 | for sd in self._side_data.values(): |
| 220 | for k in sd.original_table.column_names(): |
| 221 | col = sd.table[k] |
| 222 | source_column = sd.original_table[k] |
| 223 | name = f"_c{int(sd.side)}_{col.name}" |
| 224 | all_cols.append( |
| 225 | _SelectColumn( |
| 226 | internal_name=name, |
| 227 | column=col, |
| 228 | source_column=source_column, |
| 229 | output_name=name, |
| 230 | side=sd.side, |
| 231 | default=defaults.get(source_column._to_internal()), |
| 232 | ) |
| 233 | ) |
| 234 | |
| 235 | self._all_cols = all_cols |
| 236 | merge_result = self._merge() |
| 237 | if _filter_out_results_of_forgetting: |
| 238 | merge_result = merge_result.filter_out_results_of_forgetting( |
| 239 | ensure_consistency=False |
| 240 | ) |
| 241 | self._merge_result = merge_result |
| 242 | |
| 243 | self._sub_desugaring = SubstitutionDesugaring( |
| 244 | { |
| 245 | sc.source_column._to_internal(): self._merge_result[sc.internal_name] |
| 246 | for sc in all_cols |
| 247 | } |
| 248 | ) |
| 249 | self._substitution = { |
| 250 | pw.this: self._merge_result, |
| 251 | pw.left: self._side_data[False].original_table, |
| 252 | pw.right: self._side_data[True].original_table, |
| 253 | } |
| 254 | |
| 255 | @property |
| 256 | def _desugaring(self) -> SubstitutionDesugaring: |
nothing calls this directly
no test coverage detected