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