1# sql/__init__.py
2# Copyright (C) 2005-2025 the SQLAlchemy authors and contributors
3# <see AUTHORS file>
4#
5# This module is part of SQLAlchemy and is released under
6# the MIT License: https://www.opensource.org/licenses/mit-license.php
7from typing import Any
8from typing import TYPE_CHECKING
9
10from ._typing import ColumnExpressionArgument as ColumnExpressionArgument
11from ._typing import NotNullable as NotNullable
12from ._typing import Nullable as Nullable
13from .base import Executable as Executable
14from .base import ExecutableStatement as ExecutableStatement
15from .base import SyntaxExtension as SyntaxExtension
16from .compiler import COLLECT_CARTESIAN_PRODUCTS as COLLECT_CARTESIAN_PRODUCTS
17from .compiler import FROM_LINTING as FROM_LINTING
18from .compiler import NO_LINTING as NO_LINTING
19from .compiler import WARN_LINTING as WARN_LINTING
20from .ddl import BaseDDLElement as BaseDDLElement
21from .ddl import CheckFirst as CheckFirst
22from .ddl import DDL as DDL
23from .ddl import DDLElement as DDLElement
24from .ddl import ExecutableDDLElement as ExecutableDDLElement
25from .expression import aggregate_order_by as aggregate_order_by
26from .expression import Alias as Alias
27from .expression import alias as alias
28from .expression import all_ as all_
29from .expression import and_ as and_
30from .expression import any_ as any_
31from .expression import asc as asc
32from .expression import between as between
33from .expression import bindparam as bindparam
34from .expression import case as case
35from .expression import cast as cast
36from .expression import ClauseElement as ClauseElement
37from .expression import collate as collate
38from .expression import column as column
39from .expression import ColumnCollection as ColumnCollection
40from .expression import ColumnElement as ColumnElement
41from .expression import CompoundSelect as CompoundSelect
42from .expression import cte as cte
43from .expression import Delete as Delete
44from .expression import delete as delete
45from .expression import desc as desc
46from .expression import distinct as distinct
47from .expression import except_ as except_
48from .expression import except_all as except_all
49from .expression import exists as exists
50from .expression import extract as extract
51from .expression import false as false
52from .expression import False_ as False_
53from .expression import from_dml_column as from_dml_column
54from .expression import FromClause as FromClause
55from .expression import func as func
56from .expression import funcfilter as funcfilter
57from .expression import Insert as Insert
58from .expression import insert as insert
59from .expression import intersect as intersect
60from .expression import intersect_all as intersect_all
61from .expression import Join as Join
62from .expression import join as join
63from .expression import label as label
64from .expression import LABEL_STYLE_DEFAULT as LABEL_STYLE_DEFAULT
65from .expression import (
66 LABEL_STYLE_DISAMBIGUATE_ONLY as LABEL_STYLE_DISAMBIGUATE_ONLY,
67)
68from .expression import LABEL_STYLE_NONE as LABEL_STYLE_NONE
69from .expression import (
70 LABEL_STYLE_TABLENAME_PLUS_COL as LABEL_STYLE_TABLENAME_PLUS_COL,
71)
72from .expression import lambda_stmt as lambda_stmt
73from .expression import LambdaElement as LambdaElement
74from .expression import lateral as lateral
75from .expression import literal as literal
76from .expression import literal_column as literal_column
77from .expression import modifier as modifier
78from .expression import not_ as not_
79from .expression import null as null
80from .expression import nulls_first as nulls_first
81from .expression import nulls_last as nulls_last
82from .expression import nullsfirst as nullsfirst
83from .expression import nullslast as nullslast
84from .expression import or_ as or_
85from .expression import outerjoin as outerjoin
86from .expression import outparam as outparam
87from .expression import over as over
88from .expression import quoted_name as quoted_name
89from .expression import Select as Select
90from .expression import select as select
91from .expression import Selectable as Selectable
92from .expression import SelectLabelStyle as SelectLabelStyle
93from .expression import SQLColumnExpression as SQLColumnExpression
94from .expression import StatementLambdaElement as StatementLambdaElement
95from .expression import Subquery as Subquery
96from .expression import table as table
97from .expression import TableClause as TableClause
98from .expression import TableSample as TableSample
99from .expression import tablesample as tablesample
100from .expression import text as text
101from .expression import true as true
102from .expression import True_ as True_
103from .expression import try_cast as try_cast
104from .expression import tuple_ as tuple_
105from .expression import type_coerce as type_coerce
106from .expression import union as union
107from .expression import union_all as union_all
108from .expression import Update as Update
109from .expression import update as update
110from .expression import Values as Values
111from .expression import values as values
112from .expression import within_group as within_group
113from .visitors import ClauseVisitor as ClauseVisitor
114
115
116def __go(lcls: Any) -> None:
117 from .. import util as _sa_util
118
119 from . import base
120 from . import coercions
121 from . import elements
122 from . import lambdas
123 from . import selectable
124 from . import schema
125 from . import traversals
126 from . import type_api
127
128 if not TYPE_CHECKING:
129 base.coercions = elements.coercions = coercions
130 base.elements = elements
131 base.type_api = type_api
132 coercions.elements = elements
133 coercions.lambdas = lambdas
134 coercions.schema = schema
135 coercions.selectable = selectable
136
137 from .annotation import _prepare_annotations
138 from .annotation import Annotated
139 from .elements import AnnotatedColumnElement
140 from .elements import ClauseList
141 from .selectable import AnnotatedFromClause
142
143 _prepare_annotations(ColumnElement, AnnotatedColumnElement)
144 _prepare_annotations(FromClause, AnnotatedFromClause)
145 _prepare_annotations(ClauseList, Annotated)
146
147 _sa_util.preloaded.import_prefix("sqlalchemy.sql")
148
149
150__go(locals())