from typing import Any, Optional from . import visitors join_condition: Any = ... def find_join_source(clauses, join_to): ... def visit_binary_product(fn, expr): ... def find_tables(clause, check_columns: bool = ..., include_aliases: bool = ..., include_joins: bool = ..., include_selects: bool = ..., include_crud: bool = ...): ... def unwrap_order_by(clause): ... def unwrap_label_reference(element): ... def expand_column_list_from_order_by(collist, order_by): ... def clause_is_present(clause, search): ... def surface_selectables(clause): ... def surface_column_elements(clause): ... def selectables_overlap(left, right): ... def bind_values(clause): ... def adapt_criterion_to_null(crit, nulls): ... def splice_joins(left, right, stop_on: Optional[Any] = ...): ... def reduce_columns(columns, *clauses, **kw): ... def criterion_as_pairs(expression, consider_as_foreign_keys: Optional[Any] = ..., consider_as_referenced_keys: Optional[Any] = ..., any_operator: bool = ...): ... class ClauseAdapter(visitors.ReplacingCloningVisitor): __traverse_options__: Any = ... selectable: Any = ... include_fn: Any = ... exclude_fn: Any = ... equivalents: Any = ... adapt_on_names: Any = ... def __init__(self, selectable, equivalents: Optional[Any] = ..., include_fn: Optional[Any] = ..., exclude_fn: Optional[Any] = ..., adapt_on_names: bool = ..., anonymize_labels: bool = ...) -> None: ... def replace(self, col): ... class ColumnAdapter(ClauseAdapter): columns: Any = ... adapt_required: Any = ... allow_label_resolve: Any = ... def __init__(self, selectable, equivalents: Optional[Any] = ..., chain_to: Optional[Any] = ..., adapt_required: bool = ..., include_fn: Optional[Any] = ..., exclude_fn: Optional[Any] = ..., adapt_on_names: bool = ..., allow_label_resolve: bool = ..., anonymize_labels: bool = ...) -> None: ... def wrap(self, adapter): ... def traverse(self, obj): ... adapt_clause: Any = ... adapt_list: Any = ...