SQLAlchemy 2.1.0b1__cp313-cp313-win_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. sqlalchemy/__init__.py +295 -0
  2. sqlalchemy/connectors/__init__.py +18 -0
  3. sqlalchemy/connectors/aioodbc.py +161 -0
  4. sqlalchemy/connectors/asyncio.py +476 -0
  5. sqlalchemy/connectors/pyodbc.py +250 -0
  6. sqlalchemy/dialects/__init__.py +62 -0
  7. sqlalchemy/dialects/_typing.py +30 -0
  8. sqlalchemy/dialects/mssql/__init__.py +88 -0
  9. sqlalchemy/dialects/mssql/aioodbc.py +63 -0
  10. sqlalchemy/dialects/mssql/base.py +4110 -0
  11. sqlalchemy/dialects/mssql/information_schema.py +285 -0
  12. sqlalchemy/dialects/mssql/json.py +129 -0
  13. sqlalchemy/dialects/mssql/provision.py +185 -0
  14. sqlalchemy/dialects/mssql/pymssql.py +126 -0
  15. sqlalchemy/dialects/mssql/pyodbc.py +758 -0
  16. sqlalchemy/dialects/mysql/__init__.py +106 -0
  17. sqlalchemy/dialects/mysql/_mariadb_shim.py +312 -0
  18. sqlalchemy/dialects/mysql/aiomysql.py +226 -0
  19. sqlalchemy/dialects/mysql/asyncmy.py +214 -0
  20. sqlalchemy/dialects/mysql/base.py +3870 -0
  21. sqlalchemy/dialects/mysql/cymysql.py +106 -0
  22. sqlalchemy/dialects/mysql/dml.py +279 -0
  23. sqlalchemy/dialects/mysql/enumerated.py +277 -0
  24. sqlalchemy/dialects/mysql/expression.py +146 -0
  25. sqlalchemy/dialects/mysql/json.py +91 -0
  26. sqlalchemy/dialects/mysql/mariadb.py +67 -0
  27. sqlalchemy/dialects/mysql/mariadbconnector.py +330 -0
  28. sqlalchemy/dialects/mysql/mysqlconnector.py +296 -0
  29. sqlalchemy/dialects/mysql/mysqldb.py +312 -0
  30. sqlalchemy/dialects/mysql/provision.py +147 -0
  31. sqlalchemy/dialects/mysql/pymysql.py +157 -0
  32. sqlalchemy/dialects/mysql/pyodbc.py +156 -0
  33. sqlalchemy/dialects/mysql/reflection.py +724 -0
  34. sqlalchemy/dialects/mysql/reserved_words.py +570 -0
  35. sqlalchemy/dialects/mysql/types.py +845 -0
  36. sqlalchemy/dialects/oracle/__init__.py +83 -0
  37. sqlalchemy/dialects/oracle/base.py +3871 -0
  38. sqlalchemy/dialects/oracle/cx_oracle.py +1522 -0
  39. sqlalchemy/dialects/oracle/dictionary.py +507 -0
  40. sqlalchemy/dialects/oracle/oracledb.py +894 -0
  41. sqlalchemy/dialects/oracle/provision.py +288 -0
  42. sqlalchemy/dialects/oracle/types.py +350 -0
  43. sqlalchemy/dialects/oracle/vector.py +368 -0
  44. sqlalchemy/dialects/postgresql/__init__.py +171 -0
  45. sqlalchemy/dialects/postgresql/_psycopg_common.py +193 -0
  46. sqlalchemy/dialects/postgresql/array.py +534 -0
  47. sqlalchemy/dialects/postgresql/asyncpg.py +1331 -0
  48. sqlalchemy/dialects/postgresql/base.py +5729 -0
  49. sqlalchemy/dialects/postgresql/bitstring.py +327 -0
  50. sqlalchemy/dialects/postgresql/dml.py +360 -0
  51. sqlalchemy/dialects/postgresql/ext.py +593 -0
  52. sqlalchemy/dialects/postgresql/hstore.py +413 -0
  53. sqlalchemy/dialects/postgresql/json.py +407 -0
  54. sqlalchemy/dialects/postgresql/named_types.py +521 -0
  55. sqlalchemy/dialects/postgresql/operators.py +130 -0
  56. sqlalchemy/dialects/postgresql/pg8000.py +672 -0
  57. sqlalchemy/dialects/postgresql/pg_catalog.py +344 -0
  58. sqlalchemy/dialects/postgresql/provision.py +175 -0
  59. sqlalchemy/dialects/postgresql/psycopg.py +815 -0
  60. sqlalchemy/dialects/postgresql/psycopg2.py +887 -0
  61. sqlalchemy/dialects/postgresql/psycopg2cffi.py +61 -0
  62. sqlalchemy/dialects/postgresql/ranges.py +1002 -0
  63. sqlalchemy/dialects/postgresql/types.py +388 -0
  64. sqlalchemy/dialects/sqlite/__init__.py +57 -0
  65. sqlalchemy/dialects/sqlite/aiosqlite.py +321 -0
  66. sqlalchemy/dialects/sqlite/base.py +3050 -0
  67. sqlalchemy/dialects/sqlite/dml.py +279 -0
  68. sqlalchemy/dialects/sqlite/json.py +89 -0
  69. sqlalchemy/dialects/sqlite/provision.py +223 -0
  70. sqlalchemy/dialects/sqlite/pysqlcipher.py +157 -0
  71. sqlalchemy/dialects/sqlite/pysqlite.py +754 -0
  72. sqlalchemy/dialects/type_migration_guidelines.txt +145 -0
  73. sqlalchemy/engine/__init__.py +62 -0
  74. sqlalchemy/engine/_processors_cy.cp313-win_arm64.pyd +0 -0
  75. sqlalchemy/engine/_processors_cy.py +92 -0
  76. sqlalchemy/engine/_result_cy.cp313-win_arm64.pyd +0 -0
  77. sqlalchemy/engine/_result_cy.py +633 -0
  78. sqlalchemy/engine/_row_cy.cp313-win_arm64.pyd +0 -0
  79. sqlalchemy/engine/_row_cy.py +232 -0
  80. sqlalchemy/engine/_util_cy.cp313-win_arm64.pyd +0 -0
  81. sqlalchemy/engine/_util_cy.py +136 -0
  82. sqlalchemy/engine/base.py +3334 -0
  83. sqlalchemy/engine/characteristics.py +155 -0
  84. sqlalchemy/engine/create.py +869 -0
  85. sqlalchemy/engine/cursor.py +2416 -0
  86. sqlalchemy/engine/default.py +2393 -0
  87. sqlalchemy/engine/events.py +965 -0
  88. sqlalchemy/engine/interfaces.py +3465 -0
  89. sqlalchemy/engine/mock.py +134 -0
  90. sqlalchemy/engine/processors.py +82 -0
  91. sqlalchemy/engine/reflection.py +2100 -0
  92. sqlalchemy/engine/result.py +1932 -0
  93. sqlalchemy/engine/row.py +397 -0
  94. sqlalchemy/engine/strategies.py +16 -0
  95. sqlalchemy/engine/url.py +922 -0
  96. sqlalchemy/engine/util.py +156 -0
  97. sqlalchemy/event/__init__.py +26 -0
  98. sqlalchemy/event/api.py +220 -0
  99. sqlalchemy/event/attr.py +674 -0
  100. sqlalchemy/event/base.py +472 -0
  101. sqlalchemy/event/legacy.py +258 -0
  102. sqlalchemy/event/registry.py +390 -0
  103. sqlalchemy/events.py +17 -0
  104. sqlalchemy/exc.py +922 -0
  105. sqlalchemy/ext/__init__.py +11 -0
  106. sqlalchemy/ext/associationproxy.py +2072 -0
  107. sqlalchemy/ext/asyncio/__init__.py +29 -0
  108. sqlalchemy/ext/asyncio/base.py +281 -0
  109. sqlalchemy/ext/asyncio/engine.py +1475 -0
  110. sqlalchemy/ext/asyncio/exc.py +21 -0
  111. sqlalchemy/ext/asyncio/result.py +994 -0
  112. sqlalchemy/ext/asyncio/scoping.py +1667 -0
  113. sqlalchemy/ext/asyncio/session.py +1993 -0
  114. sqlalchemy/ext/automap.py +1701 -0
  115. sqlalchemy/ext/baked.py +559 -0
  116. sqlalchemy/ext/compiler.py +600 -0
  117. sqlalchemy/ext/declarative/__init__.py +65 -0
  118. sqlalchemy/ext/declarative/extensions.py +560 -0
  119. sqlalchemy/ext/horizontal_shard.py +481 -0
  120. sqlalchemy/ext/hybrid.py +1877 -0
  121. sqlalchemy/ext/indexable.py +364 -0
  122. sqlalchemy/ext/instrumentation.py +450 -0
  123. sqlalchemy/ext/mutable.py +1081 -0
  124. sqlalchemy/ext/orderinglist.py +439 -0
  125. sqlalchemy/ext/serializer.py +185 -0
  126. sqlalchemy/future/__init__.py +16 -0
  127. sqlalchemy/future/engine.py +15 -0
  128. sqlalchemy/inspection.py +174 -0
  129. sqlalchemy/log.py +283 -0
  130. sqlalchemy/orm/__init__.py +175 -0
  131. sqlalchemy/orm/_orm_constructors.py +2694 -0
  132. sqlalchemy/orm/_typing.py +179 -0
  133. sqlalchemy/orm/attributes.py +2868 -0
  134. sqlalchemy/orm/base.py +970 -0
  135. sqlalchemy/orm/bulk_persistence.py +2152 -0
  136. sqlalchemy/orm/clsregistry.py +582 -0
  137. sqlalchemy/orm/collections.py +1568 -0
  138. sqlalchemy/orm/context.py +3471 -0
  139. sqlalchemy/orm/decl_api.py +2257 -0
  140. sqlalchemy/orm/decl_base.py +2304 -0
  141. sqlalchemy/orm/dependency.py +1306 -0
  142. sqlalchemy/orm/descriptor_props.py +1183 -0
  143. sqlalchemy/orm/dynamic.py +300 -0
  144. sqlalchemy/orm/evaluator.py +379 -0
  145. sqlalchemy/orm/events.py +3386 -0
  146. sqlalchemy/orm/exc.py +237 -0
  147. sqlalchemy/orm/identity.py +302 -0
  148. sqlalchemy/orm/instrumentation.py +746 -0
  149. sqlalchemy/orm/interfaces.py +1589 -0
  150. sqlalchemy/orm/loading.py +1684 -0
  151. sqlalchemy/orm/mapped_collection.py +557 -0
  152. sqlalchemy/orm/mapper.py +4406 -0
  153. sqlalchemy/orm/path_registry.py +814 -0
  154. sqlalchemy/orm/persistence.py +1789 -0
  155. sqlalchemy/orm/properties.py +973 -0
  156. sqlalchemy/orm/query.py +3521 -0
  157. sqlalchemy/orm/relationships.py +3570 -0
  158. sqlalchemy/orm/scoping.py +2220 -0
  159. sqlalchemy/orm/session.py +5389 -0
  160. sqlalchemy/orm/state.py +1175 -0
  161. sqlalchemy/orm/state_changes.py +196 -0
  162. sqlalchemy/orm/strategies.py +3480 -0
  163. sqlalchemy/orm/strategy_options.py +2544 -0
  164. sqlalchemy/orm/sync.py +164 -0
  165. sqlalchemy/orm/unitofwork.py +798 -0
  166. sqlalchemy/orm/util.py +2435 -0
  167. sqlalchemy/orm/writeonly.py +694 -0
  168. sqlalchemy/pool/__init__.py +41 -0
  169. sqlalchemy/pool/base.py +1514 -0
  170. sqlalchemy/pool/events.py +372 -0
  171. sqlalchemy/pool/impl.py +582 -0
  172. sqlalchemy/py.typed +0 -0
  173. sqlalchemy/schema.py +72 -0
  174. sqlalchemy/sql/__init__.py +153 -0
  175. sqlalchemy/sql/_dml_constructors.py +132 -0
  176. sqlalchemy/sql/_elements_constructors.py +2147 -0
  177. sqlalchemy/sql/_orm_types.py +20 -0
  178. sqlalchemy/sql/_selectable_constructors.py +773 -0
  179. sqlalchemy/sql/_typing.py +486 -0
  180. sqlalchemy/sql/_util_cy.cp313-win_arm64.pyd +0 -0
  181. sqlalchemy/sql/_util_cy.py +127 -0
  182. sqlalchemy/sql/annotation.py +590 -0
  183. sqlalchemy/sql/base.py +2602 -0
  184. sqlalchemy/sql/cache_key.py +1066 -0
  185. sqlalchemy/sql/coercions.py +1373 -0
  186. sqlalchemy/sql/compiler.py +8259 -0
  187. sqlalchemy/sql/crud.py +1807 -0
  188. sqlalchemy/sql/ddl.py +1928 -0
  189. sqlalchemy/sql/default_comparator.py +654 -0
  190. sqlalchemy/sql/dml.py +1974 -0
  191. sqlalchemy/sql/elements.py +6016 -0
  192. sqlalchemy/sql/events.py +458 -0
  193. sqlalchemy/sql/expression.py +170 -0
  194. sqlalchemy/sql/functions.py +2257 -0
  195. sqlalchemy/sql/lambdas.py +1443 -0
  196. sqlalchemy/sql/naming.py +209 -0
  197. sqlalchemy/sql/operators.py +2897 -0
  198. sqlalchemy/sql/roles.py +332 -0
  199. sqlalchemy/sql/schema.py +6560 -0
  200. sqlalchemy/sql/selectable.py +7497 -0
  201. sqlalchemy/sql/sqltypes.py +4050 -0
  202. sqlalchemy/sql/traversals.py +1042 -0
  203. sqlalchemy/sql/type_api.py +2425 -0
  204. sqlalchemy/sql/util.py +1495 -0
  205. sqlalchemy/sql/visitors.py +1157 -0
  206. sqlalchemy/testing/__init__.py +96 -0
  207. sqlalchemy/testing/assertions.py +1007 -0
  208. sqlalchemy/testing/assertsql.py +519 -0
  209. sqlalchemy/testing/asyncio.py +128 -0
  210. sqlalchemy/testing/config.py +440 -0
  211. sqlalchemy/testing/engines.py +478 -0
  212. sqlalchemy/testing/entities.py +117 -0
  213. sqlalchemy/testing/exclusions.py +476 -0
  214. sqlalchemy/testing/fixtures/__init__.py +30 -0
  215. sqlalchemy/testing/fixtures/base.py +366 -0
  216. sqlalchemy/testing/fixtures/mypy.py +247 -0
  217. sqlalchemy/testing/fixtures/orm.py +227 -0
  218. sqlalchemy/testing/fixtures/sql.py +538 -0
  219. sqlalchemy/testing/pickleable.py +155 -0
  220. sqlalchemy/testing/plugin/__init__.py +6 -0
  221. sqlalchemy/testing/plugin/bootstrap.py +51 -0
  222. sqlalchemy/testing/plugin/plugin_base.py +828 -0
  223. sqlalchemy/testing/plugin/pytestplugin.py +892 -0
  224. sqlalchemy/testing/profiling.py +329 -0
  225. sqlalchemy/testing/provision.py +596 -0
  226. sqlalchemy/testing/requirements.py +1973 -0
  227. sqlalchemy/testing/schema.py +198 -0
  228. sqlalchemy/testing/suite/__init__.py +19 -0
  229. sqlalchemy/testing/suite/test_cte.py +237 -0
  230. sqlalchemy/testing/suite/test_ddl.py +420 -0
  231. sqlalchemy/testing/suite/test_dialect.py +776 -0
  232. sqlalchemy/testing/suite/test_insert.py +630 -0
  233. sqlalchemy/testing/suite/test_reflection.py +3557 -0
  234. sqlalchemy/testing/suite/test_results.py +660 -0
  235. sqlalchemy/testing/suite/test_rowcount.py +258 -0
  236. sqlalchemy/testing/suite/test_select.py +2112 -0
  237. sqlalchemy/testing/suite/test_sequence.py +317 -0
  238. sqlalchemy/testing/suite/test_table_via_select.py +686 -0
  239. sqlalchemy/testing/suite/test_types.py +2253 -0
  240. sqlalchemy/testing/suite/test_unicode_ddl.py +189 -0
  241. sqlalchemy/testing/suite/test_update_delete.py +139 -0
  242. sqlalchemy/testing/util.py +535 -0
  243. sqlalchemy/testing/warnings.py +52 -0
  244. sqlalchemy/types.py +76 -0
  245. sqlalchemy/util/__init__.py +157 -0
  246. sqlalchemy/util/_collections.py +693 -0
  247. sqlalchemy/util/_collections_cy.cp313-win_arm64.pyd +0 -0
  248. sqlalchemy/util/_collections_cy.pxd +8 -0
  249. sqlalchemy/util/_collections_cy.py +516 -0
  250. sqlalchemy/util/_has_cython.py +46 -0
  251. sqlalchemy/util/_immutabledict_cy.cp313-win_arm64.pyd +0 -0
  252. sqlalchemy/util/_immutabledict_cy.py +240 -0
  253. sqlalchemy/util/compat.py +287 -0
  254. sqlalchemy/util/concurrency.py +322 -0
  255. sqlalchemy/util/cython.py +79 -0
  256. sqlalchemy/util/deprecations.py +401 -0
  257. sqlalchemy/util/langhelpers.py +2256 -0
  258. sqlalchemy/util/preloaded.py +152 -0
  259. sqlalchemy/util/queue.py +304 -0
  260. sqlalchemy/util/tool_support.py +201 -0
  261. sqlalchemy/util/topological.py +120 -0
  262. sqlalchemy/util/typing.py +711 -0
  263. sqlalchemy-2.1.0b1.dist-info/METADATA +267 -0
  264. sqlalchemy-2.1.0b1.dist-info/RECORD +267 -0
  265. sqlalchemy-2.1.0b1.dist-info/WHEEL +5 -0
  266. sqlalchemy-2.1.0b1.dist-info/licenses/LICENSE +19 -0
  267. sqlalchemy-2.1.0b1.dist-info/top_level.txt +1 -0
sqlalchemy/__init__.py ADDED
@@ -0,0 +1,295 @@
1
+ # __init__.py
2
+ # Copyright (C) 2005-2026 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
7
+
8
+ from __future__ import annotations
9
+
10
+ from typing import Any
11
+
12
+ from . import util as _util
13
+ from .engine import AdaptedConnection as AdaptedConnection
14
+ from .engine import BaseRow as BaseRow
15
+ from .engine import BindTyping as BindTyping
16
+ from .engine import ChunkedIteratorResult as ChunkedIteratorResult
17
+ from .engine import Compiled as Compiled
18
+ from .engine import Connection as Connection
19
+ from .engine import create_engine as create_engine
20
+ from .engine import create_mock_engine as create_mock_engine
21
+ from .engine import create_pool_from_url as create_pool_from_url
22
+ from .engine import CreateEnginePlugin as CreateEnginePlugin
23
+ from .engine import CursorResult as CursorResult
24
+ from .engine import Dialect as Dialect
25
+ from .engine import Engine as Engine
26
+ from .engine import engine_from_config as engine_from_config
27
+ from .engine import ExceptionContext as ExceptionContext
28
+ from .engine import ExecutionContext as ExecutionContext
29
+ from .engine import FrozenResult as FrozenResult
30
+ from .engine import Inspector as Inspector
31
+ from .engine import IteratorResult as IteratorResult
32
+ from .engine import make_url as make_url
33
+ from .engine import MappingResult as MappingResult
34
+ from .engine import MergedResult as MergedResult
35
+ from .engine import NestedTransaction as NestedTransaction
36
+ from .engine import Result as Result
37
+ from .engine import result_tuple as result_tuple
38
+ from .engine import ResultProxy as ResultProxy
39
+ from .engine import RootTransaction as RootTransaction
40
+ from .engine import Row as Row
41
+ from .engine import RowMapping as RowMapping
42
+ from .engine import ScalarResult as ScalarResult
43
+ from .engine import Transaction as Transaction
44
+ from .engine import TwoPhaseTransaction as TwoPhaseTransaction
45
+ from .engine import TypeCompiler as TypeCompiler
46
+ from .engine import URL as URL
47
+ from .inspection import inspect as inspect
48
+ from .pool import AssertionPool as AssertionPool
49
+ from .pool import AsyncAdaptedQueuePool as AsyncAdaptedQueuePool
50
+ from .pool import NullPool as NullPool
51
+ from .pool import Pool as Pool
52
+ from .pool import PoolProxiedConnection as PoolProxiedConnection
53
+ from .pool import PoolResetState as PoolResetState
54
+ from .pool import QueuePool as QueuePool
55
+ from .pool import SingletonThreadPool as SingletonThreadPool
56
+ from .pool import StaticPool as StaticPool
57
+ from .schema import BaseDDLElement as BaseDDLElement
58
+ from .schema import BLANK_SCHEMA as BLANK_SCHEMA
59
+ from .schema import CheckConstraint as CheckConstraint
60
+ from .schema import CheckFirst as CheckFirst
61
+ from .schema import Column as Column
62
+ from .schema import ColumnDefault as ColumnDefault
63
+ from .schema import Computed as Computed
64
+ from .schema import Constraint as Constraint
65
+ from .schema import CreateTable as CreateTable
66
+ from .schema import CreateTableAs as CreateTableAs
67
+ from .schema import CreateView as CreateView
68
+ from .schema import DDL as DDL
69
+ from .schema import DDLElement as DDLElement
70
+ from .schema import DefaultClause as DefaultClause
71
+ from .schema import DropTable as DropTable
72
+ from .schema import DropView as DropView
73
+ from .schema import ExecutableDDLElement as ExecutableDDLElement
74
+ from .schema import FetchedValue as FetchedValue
75
+ from .schema import ForeignKey as ForeignKey
76
+ from .schema import ForeignKeyConstraint as ForeignKeyConstraint
77
+ from .schema import Identity as Identity
78
+ from .schema import Index as Index
79
+ from .schema import insert_sentinel as insert_sentinel
80
+ from .schema import MetaData as MetaData
81
+ from .schema import PrimaryKeyConstraint as PrimaryKeyConstraint
82
+ from .schema import Sequence as Sequence
83
+ from .schema import Table as Table
84
+ from .schema import UniqueConstraint as UniqueConstraint
85
+ from .sql import ColumnExpressionArgument as ColumnExpressionArgument
86
+ from .sql import NotNullable as NotNullable
87
+ from .sql import Nullable as Nullable
88
+ from .sql import SelectLabelStyle as SelectLabelStyle
89
+ from .sql.expression import aggregate_order_by as aggregate_order_by
90
+ from .sql.expression import AggregateOrderBy as AggregateOrderBy
91
+ from .sql.expression import Alias as Alias
92
+ from .sql.expression import alias as alias
93
+ from .sql.expression import AliasedReturnsRows as AliasedReturnsRows
94
+ from .sql.expression import all_ as all_
95
+ from .sql.expression import and_ as and_
96
+ from .sql.expression import any_ as any_
97
+ from .sql.expression import asc as asc
98
+ from .sql.expression import between as between
99
+ from .sql.expression import BinaryExpression as BinaryExpression
100
+ from .sql.expression import bindparam as bindparam
101
+ from .sql.expression import BindParameter as BindParameter
102
+ from .sql.expression import bitwise_not as bitwise_not
103
+ from .sql.expression import BooleanClauseList as BooleanClauseList
104
+ from .sql.expression import CacheKey as CacheKey
105
+ from .sql.expression import Case as Case
106
+ from .sql.expression import case as case
107
+ from .sql.expression import Cast as Cast
108
+ from .sql.expression import cast as cast
109
+ from .sql.expression import ClauseElement as ClauseElement
110
+ from .sql.expression import ClauseList as ClauseList
111
+ from .sql.expression import collate as collate
112
+ from .sql.expression import CollectionAggregate as CollectionAggregate
113
+ from .sql.expression import column as column
114
+ from .sql.expression import ColumnClause as ColumnClause
115
+ from .sql.expression import ColumnCollection as ColumnCollection
116
+ from .sql.expression import ColumnElement as ColumnElement
117
+ from .sql.expression import ColumnOperators as ColumnOperators
118
+ from .sql.expression import CompoundSelect as CompoundSelect
119
+ from .sql.expression import CTE as CTE
120
+ from .sql.expression import cte as cte
121
+ from .sql.expression import custom_op as custom_op
122
+ from .sql.expression import Delete as Delete
123
+ from .sql.expression import delete as delete
124
+ from .sql.expression import desc as desc
125
+ from .sql.expression import distinct as distinct
126
+ from .sql.expression import except_ as except_
127
+ from .sql.expression import except_all as except_all
128
+ from .sql.expression import Executable as Executable
129
+ from .sql.expression import Exists as Exists
130
+ from .sql.expression import exists as exists
131
+ from .sql.expression import Extract as Extract
132
+ from .sql.expression import extract as extract
133
+ from .sql.expression import false as false
134
+ from .sql.expression import False_ as False_
135
+ from .sql.expression import FrameClause as FrameClause
136
+ from .sql.expression import FrameClauseType as FrameClauseType
137
+ from .sql.expression import from_dml_column as from_dml_column
138
+ from .sql.expression import FromClause as FromClause
139
+ from .sql.expression import FromGrouping as FromGrouping
140
+ from .sql.expression import func as func
141
+ from .sql.expression import funcfilter as funcfilter
142
+ from .sql.expression import Function as Function
143
+ from .sql.expression import FunctionElement as FunctionElement
144
+ from .sql.expression import FunctionFilter as FunctionFilter
145
+ from .sql.expression import GenerativeSelect as GenerativeSelect
146
+ from .sql.expression import Grouping as Grouping
147
+ from .sql.expression import HasCTE as HasCTE
148
+ from .sql.expression import HasPrefixes as HasPrefixes
149
+ from .sql.expression import HasSuffixes as HasSuffixes
150
+ from .sql.expression import Insert as Insert
151
+ from .sql.expression import insert as insert
152
+ from .sql.expression import intersect as intersect
153
+ from .sql.expression import intersect_all as intersect_all
154
+ from .sql.expression import Join as Join
155
+ from .sql.expression import join as join
156
+ from .sql.expression import Label as Label
157
+ from .sql.expression import label as label
158
+ from .sql.expression import LABEL_STYLE_DEFAULT as LABEL_STYLE_DEFAULT
159
+ from .sql.expression import (
160
+ LABEL_STYLE_DISAMBIGUATE_ONLY as LABEL_STYLE_DISAMBIGUATE_ONLY,
161
+ )
162
+ from .sql.expression import LABEL_STYLE_NONE as LABEL_STYLE_NONE
163
+ from .sql.expression import (
164
+ LABEL_STYLE_TABLENAME_PLUS_COL as LABEL_STYLE_TABLENAME_PLUS_COL,
165
+ )
166
+ from .sql.expression import lambda_stmt as lambda_stmt
167
+ from .sql.expression import LambdaElement as LambdaElement
168
+ from .sql.expression import Lateral as Lateral
169
+ from .sql.expression import lateral as lateral
170
+ from .sql.expression import literal as literal
171
+ from .sql.expression import literal_column as literal_column
172
+ from .sql.expression import modifier as modifier
173
+ from .sql.expression import not_ as not_
174
+ from .sql.expression import Null as Null
175
+ from .sql.expression import null as null
176
+ from .sql.expression import nulls_first as nulls_first
177
+ from .sql.expression import nulls_last as nulls_last
178
+ from .sql.expression import nullsfirst as nullsfirst
179
+ from .sql.expression import nullslast as nullslast
180
+ from .sql.expression import Operators as Operators
181
+ from .sql.expression import or_ as or_
182
+ from .sql.expression import OrderByList as OrderByList
183
+ from .sql.expression import outerjoin as outerjoin
184
+ from .sql.expression import outparam as outparam
185
+ from .sql.expression import Over as Over
186
+ from .sql.expression import over as over
187
+ from .sql.expression import quoted_name as quoted_name
188
+ from .sql.expression import ReleaseSavepointClause as ReleaseSavepointClause
189
+ from .sql.expression import ReturnsRows as ReturnsRows
190
+ from .sql.expression import (
191
+ RollbackToSavepointClause as RollbackToSavepointClause,
192
+ )
193
+ from .sql.expression import SavepointClause as SavepointClause
194
+ from .sql.expression import ScalarSelect as ScalarSelect
195
+ from .sql.expression import Select as Select
196
+ from .sql.expression import select as select
197
+ from .sql.expression import Selectable as Selectable
198
+ from .sql.expression import SelectBase as SelectBase
199
+ from .sql.expression import SQLColumnExpression as SQLColumnExpression
200
+ from .sql.expression import StatementLambdaElement as StatementLambdaElement
201
+ from .sql.expression import Subquery as Subquery
202
+ from .sql.expression import table as table
203
+ from .sql.expression import TableClause as TableClause
204
+ from .sql.expression import TableSample as TableSample
205
+ from .sql.expression import tablesample as tablesample
206
+ from .sql.expression import TableValuedAlias as TableValuedAlias
207
+ from .sql.expression import text as text
208
+ from .sql.expression import TextAsFrom as TextAsFrom
209
+ from .sql.expression import TextClause as TextClause
210
+ from .sql.expression import TextualSelect as TextualSelect
211
+ from .sql.expression import true as true
212
+ from .sql.expression import True_ as True_
213
+ from .sql.expression import try_cast as try_cast
214
+ from .sql.expression import TryCast as TryCast
215
+ from .sql.expression import TString as TString
216
+ from .sql.expression import tstring as tstring
217
+ from .sql.expression import Tuple as Tuple
218
+ from .sql.expression import tuple_ as tuple_
219
+ from .sql.expression import type_coerce as type_coerce
220
+ from .sql.expression import TypeClause as TypeClause
221
+ from .sql.expression import TypeCoerce as TypeCoerce
222
+ from .sql.expression import UnaryExpression as UnaryExpression
223
+ from .sql.expression import union as union
224
+ from .sql.expression import union_all as union_all
225
+ from .sql.expression import Update as Update
226
+ from .sql.expression import update as update
227
+ from .sql.expression import UpdateBase as UpdateBase
228
+ from .sql.expression import Values as Values
229
+ from .sql.expression import values as values
230
+ from .sql.expression import ValuesBase as ValuesBase
231
+ from .sql.expression import Visitable as Visitable
232
+ from .sql.expression import within_group as within_group
233
+ from .sql.expression import WithinGroup as WithinGroup
234
+ from .types import ARRAY as ARRAY
235
+ from .types import BIGINT as BIGINT
236
+ from .types import BigInteger as BigInteger
237
+ from .types import BINARY as BINARY
238
+ from .types import BLOB as BLOB
239
+ from .types import BOOLEAN as BOOLEAN
240
+ from .types import Boolean as Boolean
241
+ from .types import CHAR as CHAR
242
+ from .types import CLOB as CLOB
243
+ from .types import DATE as DATE
244
+ from .types import Date as Date
245
+ from .types import DATETIME as DATETIME
246
+ from .types import DateTime as DateTime
247
+ from .types import DECIMAL as DECIMAL
248
+ from .types import DOUBLE as DOUBLE
249
+ from .types import Double as Double
250
+ from .types import DOUBLE_PRECISION as DOUBLE_PRECISION
251
+ from .types import Enum as Enum
252
+ from .types import FLOAT as FLOAT
253
+ from .types import Float as Float
254
+ from .types import INT as INT
255
+ from .types import INTEGER as INTEGER
256
+ from .types import Integer as Integer
257
+ from .types import Interval as Interval
258
+ from .types import JSON as JSON
259
+ from .types import LargeBinary as LargeBinary
260
+ from .types import NCHAR as NCHAR
261
+ from .types import NUMERIC as NUMERIC
262
+ from .types import Numeric as Numeric
263
+ from .types import NumericCommon as NumericCommon
264
+ from .types import NVARCHAR as NVARCHAR
265
+ from .types import PickleType as PickleType
266
+ from .types import REAL as REAL
267
+ from .types import SMALLINT as SMALLINT
268
+ from .types import SmallInteger as SmallInteger
269
+ from .types import String as String
270
+ from .types import TEXT as TEXT
271
+ from .types import Text as Text
272
+ from .types import TIME as TIME
273
+ from .types import Time as Time
274
+ from .types import TIMESTAMP as TIMESTAMP
275
+ from .types import TupleType as TupleType
276
+ from .types import TypeDecorator as TypeDecorator
277
+ from .types import Unicode as Unicode
278
+ from .types import UnicodeText as UnicodeText
279
+ from .types import UUID as UUID
280
+ from .types import Uuid as Uuid
281
+ from .types import VARBINARY as VARBINARY
282
+ from .types import VARCHAR as VARCHAR
283
+
284
+ __version__ = "2.1.0b1"
285
+
286
+
287
+ def __go(lcls: Any) -> None:
288
+ _util.preloaded.import_prefix("sqlalchemy")
289
+
290
+ from . import exc
291
+
292
+ exc._version_token = "".join(__version__.split(".")[0:2])
293
+
294
+
295
+ __go(locals())
@@ -0,0 +1,18 @@
1
+ # connectors/__init__.py
2
+ # Copyright (C) 2005-2026 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
7
+
8
+
9
+ from ..engine.interfaces import Dialect
10
+
11
+
12
+ class Connector(Dialect):
13
+ """Base class for dialect mixins, for DBAPIs that work
14
+ across entirely different database backends.
15
+
16
+ Currently the only such mixin is pyodbc.
17
+
18
+ """
@@ -0,0 +1,161 @@
1
+ # connectors/aioodbc.py
2
+ # Copyright (C) 2005-2026 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
7
+ # mypy: ignore-errors
8
+
9
+ from __future__ import annotations
10
+
11
+ from typing import TYPE_CHECKING
12
+
13
+ from .asyncio import AsyncAdapt_dbapi_connection
14
+ from .asyncio import AsyncAdapt_dbapi_cursor
15
+ from .asyncio import AsyncAdapt_dbapi_ss_cursor
16
+ from .pyodbc import PyODBCConnector
17
+ from ..connectors.asyncio import AsyncAdapt_dbapi_module
18
+ from ..util.concurrency import await_
19
+
20
+ if TYPE_CHECKING:
21
+ from ..engine.interfaces import ConnectArgsType
22
+ from ..engine.url import URL
23
+
24
+
25
+ class AsyncAdapt_aioodbc_cursor(AsyncAdapt_dbapi_cursor):
26
+ __slots__ = ()
27
+
28
+ def setinputsizes(self, *inputsizes):
29
+ # see https://github.com/aio-libs/aioodbc/issues/451
30
+ return self._cursor._impl.setinputsizes(*inputsizes)
31
+
32
+ # how it's supposed to work
33
+ # return await_(self._cursor.setinputsizes(*inputsizes))
34
+
35
+
36
+ class AsyncAdapt_aioodbc_ss_cursor(
37
+ AsyncAdapt_aioodbc_cursor, AsyncAdapt_dbapi_ss_cursor
38
+ ):
39
+ __slots__ = ()
40
+
41
+
42
+ class AsyncAdapt_aioodbc_connection(AsyncAdapt_dbapi_connection):
43
+ _cursor_cls = AsyncAdapt_aioodbc_cursor
44
+ _ss_cursor_cls = AsyncAdapt_aioodbc_ss_cursor
45
+ __slots__ = ()
46
+
47
+ @property
48
+ def autocommit(self):
49
+ return self._connection.autocommit
50
+
51
+ @autocommit.setter
52
+ def autocommit(self, value):
53
+ # https://github.com/aio-libs/aioodbc/issues/448
54
+ # self._connection.autocommit = value
55
+
56
+ self._connection._conn.autocommit = value
57
+
58
+ def ping(self, reconnect):
59
+ return await_(self._connection.ping(reconnect))
60
+
61
+ def add_output_converter(self, *arg, **kw):
62
+ self._connection.add_output_converter(*arg, **kw)
63
+
64
+ def character_set_name(self):
65
+ return self._connection.character_set_name()
66
+
67
+ def cursor(self, server_side=False):
68
+ # aioodbc sets connection=None when closed and just fails with
69
+ # AttributeError here. Here we use the same ProgrammingError +
70
+ # message that pyodbc uses, so it triggers is_disconnect() as well.
71
+ if self._connection.closed:
72
+ raise self.dbapi.ProgrammingError(
73
+ "Attempt to use a closed connection."
74
+ )
75
+ return super().cursor(server_side=server_side)
76
+
77
+ def rollback(self):
78
+ # aioodbc sets connection=None when closed and just fails with
79
+ # AttributeError here. should be a no-op
80
+ if not self._connection.closed:
81
+ super().rollback()
82
+
83
+ def commit(self):
84
+ # aioodbc sets connection=None when closed and just fails with
85
+ # AttributeError here. should be a no-op
86
+ if not self._connection.closed:
87
+ super().commit()
88
+
89
+ def close(self):
90
+ # aioodbc sets connection=None when closed and just fails with
91
+ # AttributeError here. should be a no-op
92
+ if not self._connection.closed:
93
+ super().close()
94
+
95
+
96
+ class AsyncAdapt_aioodbc_dbapi(AsyncAdapt_dbapi_module):
97
+ def __init__(self, aioodbc, pyodbc):
98
+ super().__init__(aioodbc, dbapi_module=pyodbc)
99
+ self.aioodbc = aioodbc
100
+ self.pyodbc = pyodbc
101
+ self.paramstyle = pyodbc.paramstyle
102
+ self._init_dbapi_attributes()
103
+ self.Cursor = AsyncAdapt_dbapi_cursor
104
+ self.version = pyodbc.version
105
+
106
+ def _init_dbapi_attributes(self):
107
+ for name in (
108
+ "Warning",
109
+ "Error",
110
+ "InterfaceError",
111
+ "DataError",
112
+ "DatabaseError",
113
+ "OperationalError",
114
+ "InterfaceError",
115
+ "IntegrityError",
116
+ "ProgrammingError",
117
+ "InternalError",
118
+ "NotSupportedError",
119
+ "NUMBER",
120
+ "STRING",
121
+ "DATETIME",
122
+ "BINARY",
123
+ "Binary",
124
+ "BinaryNull",
125
+ "SQL_VARCHAR",
126
+ "SQL_WVARCHAR",
127
+ ):
128
+ setattr(self, name, getattr(self.pyodbc, name))
129
+
130
+ def connect(self, *arg, **kw):
131
+ creator_fn = kw.pop("async_creator_fn", self.aioodbc.connect)
132
+
133
+ return await_(
134
+ AsyncAdapt_aioodbc_connection.create(
135
+ self,
136
+ creator_fn(*arg, **kw),
137
+ )
138
+ )
139
+
140
+
141
+ class aiodbcConnector(PyODBCConnector):
142
+ is_async = True
143
+ supports_statement_cache = True
144
+
145
+ supports_server_side_cursors = True
146
+
147
+ @classmethod
148
+ def import_dbapi(cls):
149
+ return AsyncAdapt_aioodbc_dbapi(
150
+ __import__("aioodbc"), __import__("pyodbc")
151
+ )
152
+
153
+ def create_connect_args(self, url: URL) -> ConnectArgsType:
154
+ arg, kw = super().create_connect_args(url)
155
+ if arg and arg[0]:
156
+ kw["dsn"] = arg[0]
157
+
158
+ return (), kw
159
+
160
+ def get_driver_connection(self, connection):
161
+ return connection._connection