sqlspec 0.36.0__cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.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 (531) hide show
  1. ac8f31065839703b4e70__mypyc.cpython-310-aarch64-linux-gnu.so +0 -0
  2. sqlspec/__init__.py +140 -0
  3. sqlspec/__main__.py +12 -0
  4. sqlspec/__metadata__.py +14 -0
  5. sqlspec/_serialization.py +315 -0
  6. sqlspec/_typing.py +700 -0
  7. sqlspec/adapters/__init__.py +0 -0
  8. sqlspec/adapters/adbc/__init__.py +5 -0
  9. sqlspec/adapters/adbc/_typing.py +82 -0
  10. sqlspec/adapters/adbc/adk/__init__.py +5 -0
  11. sqlspec/adapters/adbc/adk/store.py +1273 -0
  12. sqlspec/adapters/adbc/config.py +295 -0
  13. sqlspec/adapters/adbc/core.cpython-310-aarch64-linux-gnu.so +0 -0
  14. sqlspec/adapters/adbc/core.py +735 -0
  15. sqlspec/adapters/adbc/data_dictionary.py +334 -0
  16. sqlspec/adapters/adbc/driver.py +529 -0
  17. sqlspec/adapters/adbc/events/__init__.py +5 -0
  18. sqlspec/adapters/adbc/events/store.py +285 -0
  19. sqlspec/adapters/adbc/litestar/__init__.py +5 -0
  20. sqlspec/adapters/adbc/litestar/store.py +502 -0
  21. sqlspec/adapters/adbc/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  22. sqlspec/adapters/adbc/type_converter.py +140 -0
  23. sqlspec/adapters/aiosqlite/__init__.py +25 -0
  24. sqlspec/adapters/aiosqlite/_typing.py +82 -0
  25. sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
  26. sqlspec/adapters/aiosqlite/adk/store.py +818 -0
  27. sqlspec/adapters/aiosqlite/config.py +334 -0
  28. sqlspec/adapters/aiosqlite/core.cpython-310-aarch64-linux-gnu.so +0 -0
  29. sqlspec/adapters/aiosqlite/core.py +315 -0
  30. sqlspec/adapters/aiosqlite/data_dictionary.py +208 -0
  31. sqlspec/adapters/aiosqlite/driver.py +313 -0
  32. sqlspec/adapters/aiosqlite/events/__init__.py +5 -0
  33. sqlspec/adapters/aiosqlite/events/store.py +20 -0
  34. sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
  35. sqlspec/adapters/aiosqlite/litestar/store.py +279 -0
  36. sqlspec/adapters/aiosqlite/pool.py +533 -0
  37. sqlspec/adapters/asyncmy/__init__.py +21 -0
  38. sqlspec/adapters/asyncmy/_typing.py +87 -0
  39. sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
  40. sqlspec/adapters/asyncmy/adk/store.py +703 -0
  41. sqlspec/adapters/asyncmy/config.py +302 -0
  42. sqlspec/adapters/asyncmy/core.cpython-310-aarch64-linux-gnu.so +0 -0
  43. sqlspec/adapters/asyncmy/core.py +360 -0
  44. sqlspec/adapters/asyncmy/data_dictionary.py +124 -0
  45. sqlspec/adapters/asyncmy/driver.py +383 -0
  46. sqlspec/adapters/asyncmy/events/__init__.py +5 -0
  47. sqlspec/adapters/asyncmy/events/store.py +104 -0
  48. sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
  49. sqlspec/adapters/asyncmy/litestar/store.py +296 -0
  50. sqlspec/adapters/asyncpg/__init__.py +19 -0
  51. sqlspec/adapters/asyncpg/_typing.py +88 -0
  52. sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
  53. sqlspec/adapters/asyncpg/adk/store.py +748 -0
  54. sqlspec/adapters/asyncpg/config.py +569 -0
  55. sqlspec/adapters/asyncpg/core.cpython-310-aarch64-linux-gnu.so +0 -0
  56. sqlspec/adapters/asyncpg/core.py +367 -0
  57. sqlspec/adapters/asyncpg/data_dictionary.py +162 -0
  58. sqlspec/adapters/asyncpg/driver.py +487 -0
  59. sqlspec/adapters/asyncpg/events/__init__.py +6 -0
  60. sqlspec/adapters/asyncpg/events/backend.py +286 -0
  61. sqlspec/adapters/asyncpg/events/store.py +40 -0
  62. sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
  63. sqlspec/adapters/asyncpg/litestar/store.py +251 -0
  64. sqlspec/adapters/bigquery/__init__.py +14 -0
  65. sqlspec/adapters/bigquery/_typing.py +86 -0
  66. sqlspec/adapters/bigquery/adk/__init__.py +5 -0
  67. sqlspec/adapters/bigquery/adk/store.py +827 -0
  68. sqlspec/adapters/bigquery/config.py +353 -0
  69. sqlspec/adapters/bigquery/core.cpython-310-aarch64-linux-gnu.so +0 -0
  70. sqlspec/adapters/bigquery/core.py +715 -0
  71. sqlspec/adapters/bigquery/data_dictionary.py +128 -0
  72. sqlspec/adapters/bigquery/driver.py +548 -0
  73. sqlspec/adapters/bigquery/events/__init__.py +5 -0
  74. sqlspec/adapters/bigquery/events/store.py +139 -0
  75. sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
  76. sqlspec/adapters/bigquery/litestar/store.py +325 -0
  77. sqlspec/adapters/bigquery/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  78. sqlspec/adapters/bigquery/type_converter.py +107 -0
  79. sqlspec/adapters/cockroach_asyncpg/__init__.py +24 -0
  80. sqlspec/adapters/cockroach_asyncpg/_typing.py +72 -0
  81. sqlspec/adapters/cockroach_asyncpg/adk/__init__.py +3 -0
  82. sqlspec/adapters/cockroach_asyncpg/adk/store.py +410 -0
  83. sqlspec/adapters/cockroach_asyncpg/config.py +238 -0
  84. sqlspec/adapters/cockroach_asyncpg/core.cpython-310-aarch64-linux-gnu.so +0 -0
  85. sqlspec/adapters/cockroach_asyncpg/core.py +55 -0
  86. sqlspec/adapters/cockroach_asyncpg/data_dictionary.py +107 -0
  87. sqlspec/adapters/cockroach_asyncpg/driver.py +144 -0
  88. sqlspec/adapters/cockroach_asyncpg/events/__init__.py +3 -0
  89. sqlspec/adapters/cockroach_asyncpg/events/store.py +20 -0
  90. sqlspec/adapters/cockroach_asyncpg/litestar/__init__.py +3 -0
  91. sqlspec/adapters/cockroach_asyncpg/litestar/store.py +142 -0
  92. sqlspec/adapters/cockroach_psycopg/__init__.py +38 -0
  93. sqlspec/adapters/cockroach_psycopg/_typing.py +129 -0
  94. sqlspec/adapters/cockroach_psycopg/adk/__init__.py +13 -0
  95. sqlspec/adapters/cockroach_psycopg/adk/store.py +868 -0
  96. sqlspec/adapters/cockroach_psycopg/config.py +484 -0
  97. sqlspec/adapters/cockroach_psycopg/core.cpython-310-aarch64-linux-gnu.so +0 -0
  98. sqlspec/adapters/cockroach_psycopg/core.py +63 -0
  99. sqlspec/adapters/cockroach_psycopg/data_dictionary.py +215 -0
  100. sqlspec/adapters/cockroach_psycopg/driver.py +284 -0
  101. sqlspec/adapters/cockroach_psycopg/events/__init__.py +6 -0
  102. sqlspec/adapters/cockroach_psycopg/events/store.py +34 -0
  103. sqlspec/adapters/cockroach_psycopg/litestar/__init__.py +3 -0
  104. sqlspec/adapters/cockroach_psycopg/litestar/store.py +325 -0
  105. sqlspec/adapters/duckdb/__init__.py +25 -0
  106. sqlspec/adapters/duckdb/_typing.py +81 -0
  107. sqlspec/adapters/duckdb/adk/__init__.py +14 -0
  108. sqlspec/adapters/duckdb/adk/store.py +850 -0
  109. sqlspec/adapters/duckdb/config.py +463 -0
  110. sqlspec/adapters/duckdb/core.cpython-310-aarch64-linux-gnu.so +0 -0
  111. sqlspec/adapters/duckdb/core.py +257 -0
  112. sqlspec/adapters/duckdb/data_dictionary.py +140 -0
  113. sqlspec/adapters/duckdb/driver.py +430 -0
  114. sqlspec/adapters/duckdb/events/__init__.py +5 -0
  115. sqlspec/adapters/duckdb/events/store.py +57 -0
  116. sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
  117. sqlspec/adapters/duckdb/litestar/store.py +330 -0
  118. sqlspec/adapters/duckdb/pool.py +293 -0
  119. sqlspec/adapters/duckdb/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  120. sqlspec/adapters/duckdb/type_converter.py +118 -0
  121. sqlspec/adapters/mock/__init__.py +72 -0
  122. sqlspec/adapters/mock/_typing.py +147 -0
  123. sqlspec/adapters/mock/config.py +483 -0
  124. sqlspec/adapters/mock/core.py +319 -0
  125. sqlspec/adapters/mock/data_dictionary.py +366 -0
  126. sqlspec/adapters/mock/driver.py +721 -0
  127. sqlspec/adapters/mysqlconnector/__init__.py +36 -0
  128. sqlspec/adapters/mysqlconnector/_typing.py +141 -0
  129. sqlspec/adapters/mysqlconnector/adk/__init__.py +15 -0
  130. sqlspec/adapters/mysqlconnector/adk/store.py +1060 -0
  131. sqlspec/adapters/mysqlconnector/config.py +394 -0
  132. sqlspec/adapters/mysqlconnector/core.cpython-310-aarch64-linux-gnu.so +0 -0
  133. sqlspec/adapters/mysqlconnector/core.py +303 -0
  134. sqlspec/adapters/mysqlconnector/data_dictionary.py +235 -0
  135. sqlspec/adapters/mysqlconnector/driver.py +483 -0
  136. sqlspec/adapters/mysqlconnector/events/__init__.py +8 -0
  137. sqlspec/adapters/mysqlconnector/events/store.py +98 -0
  138. sqlspec/adapters/mysqlconnector/litestar/__init__.py +5 -0
  139. sqlspec/adapters/mysqlconnector/litestar/store.py +426 -0
  140. sqlspec/adapters/oracledb/__init__.py +60 -0
  141. sqlspec/adapters/oracledb/_numpy_handlers.py +141 -0
  142. sqlspec/adapters/oracledb/_typing.py +182 -0
  143. sqlspec/adapters/oracledb/_uuid_handlers.py +166 -0
  144. sqlspec/adapters/oracledb/adk/__init__.py +10 -0
  145. sqlspec/adapters/oracledb/adk/store.py +2369 -0
  146. sqlspec/adapters/oracledb/config.py +550 -0
  147. sqlspec/adapters/oracledb/core.cpython-310-aarch64-linux-gnu.so +0 -0
  148. sqlspec/adapters/oracledb/core.py +543 -0
  149. sqlspec/adapters/oracledb/data_dictionary.py +536 -0
  150. sqlspec/adapters/oracledb/driver.py +1229 -0
  151. sqlspec/adapters/oracledb/events/__init__.py +16 -0
  152. sqlspec/adapters/oracledb/events/backend.py +347 -0
  153. sqlspec/adapters/oracledb/events/store.py +420 -0
  154. sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
  155. sqlspec/adapters/oracledb/litestar/store.py +781 -0
  156. sqlspec/adapters/oracledb/migrations.py +535 -0
  157. sqlspec/adapters/oracledb/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  158. sqlspec/adapters/oracledb/type_converter.py +211 -0
  159. sqlspec/adapters/psqlpy/__init__.py +17 -0
  160. sqlspec/adapters/psqlpy/_typing.py +79 -0
  161. sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
  162. sqlspec/adapters/psqlpy/adk/store.py +766 -0
  163. sqlspec/adapters/psqlpy/config.py +304 -0
  164. sqlspec/adapters/psqlpy/core.cpython-310-aarch64-linux-gnu.so +0 -0
  165. sqlspec/adapters/psqlpy/core.py +480 -0
  166. sqlspec/adapters/psqlpy/data_dictionary.py +126 -0
  167. sqlspec/adapters/psqlpy/driver.py +438 -0
  168. sqlspec/adapters/psqlpy/events/__init__.py +6 -0
  169. sqlspec/adapters/psqlpy/events/backend.py +310 -0
  170. sqlspec/adapters/psqlpy/events/store.py +20 -0
  171. sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
  172. sqlspec/adapters/psqlpy/litestar/store.py +270 -0
  173. sqlspec/adapters/psqlpy/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  174. sqlspec/adapters/psqlpy/type_converter.py +113 -0
  175. sqlspec/adapters/psycopg/__init__.py +32 -0
  176. sqlspec/adapters/psycopg/_typing.py +164 -0
  177. sqlspec/adapters/psycopg/adk/__init__.py +10 -0
  178. sqlspec/adapters/psycopg/adk/store.py +1387 -0
  179. sqlspec/adapters/psycopg/config.py +576 -0
  180. sqlspec/adapters/psycopg/core.cpython-310-aarch64-linux-gnu.so +0 -0
  181. sqlspec/adapters/psycopg/core.py +450 -0
  182. sqlspec/adapters/psycopg/data_dictionary.py +289 -0
  183. sqlspec/adapters/psycopg/driver.py +975 -0
  184. sqlspec/adapters/psycopg/events/__init__.py +20 -0
  185. sqlspec/adapters/psycopg/events/backend.py +458 -0
  186. sqlspec/adapters/psycopg/events/store.py +42 -0
  187. sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
  188. sqlspec/adapters/psycopg/litestar/store.py +552 -0
  189. sqlspec/adapters/psycopg/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  190. sqlspec/adapters/psycopg/type_converter.py +93 -0
  191. sqlspec/adapters/pymysql/__init__.py +21 -0
  192. sqlspec/adapters/pymysql/_typing.py +71 -0
  193. sqlspec/adapters/pymysql/adk/__init__.py +5 -0
  194. sqlspec/adapters/pymysql/adk/store.py +540 -0
  195. sqlspec/adapters/pymysql/config.py +195 -0
  196. sqlspec/adapters/pymysql/core.cpython-310-aarch64-linux-gnu.so +0 -0
  197. sqlspec/adapters/pymysql/core.py +299 -0
  198. sqlspec/adapters/pymysql/data_dictionary.py +122 -0
  199. sqlspec/adapters/pymysql/driver.py +259 -0
  200. sqlspec/adapters/pymysql/events/__init__.py +5 -0
  201. sqlspec/adapters/pymysql/events/store.py +50 -0
  202. sqlspec/adapters/pymysql/litestar/__init__.py +5 -0
  203. sqlspec/adapters/pymysql/litestar/store.py +232 -0
  204. sqlspec/adapters/pymysql/pool.py +137 -0
  205. sqlspec/adapters/spanner/__init__.py +40 -0
  206. sqlspec/adapters/spanner/_typing.py +86 -0
  207. sqlspec/adapters/spanner/adk/__init__.py +5 -0
  208. sqlspec/adapters/spanner/adk/store.py +732 -0
  209. sqlspec/adapters/spanner/config.py +352 -0
  210. sqlspec/adapters/spanner/core.cpython-310-aarch64-linux-gnu.so +0 -0
  211. sqlspec/adapters/spanner/core.py +188 -0
  212. sqlspec/adapters/spanner/data_dictionary.py +120 -0
  213. sqlspec/adapters/spanner/dialect/__init__.py +6 -0
  214. sqlspec/adapters/spanner/dialect/_spangres.py +57 -0
  215. sqlspec/adapters/spanner/dialect/_spanner.py +130 -0
  216. sqlspec/adapters/spanner/driver.py +373 -0
  217. sqlspec/adapters/spanner/events/__init__.py +5 -0
  218. sqlspec/adapters/spanner/events/store.py +187 -0
  219. sqlspec/adapters/spanner/litestar/__init__.py +5 -0
  220. sqlspec/adapters/spanner/litestar/store.py +291 -0
  221. sqlspec/adapters/spanner/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  222. sqlspec/adapters/spanner/type_converter.py +331 -0
  223. sqlspec/adapters/sqlite/__init__.py +19 -0
  224. sqlspec/adapters/sqlite/_typing.py +80 -0
  225. sqlspec/adapters/sqlite/adk/__init__.py +5 -0
  226. sqlspec/adapters/sqlite/adk/store.py +958 -0
  227. sqlspec/adapters/sqlite/config.py +280 -0
  228. sqlspec/adapters/sqlite/core.cpython-310-aarch64-linux-gnu.so +0 -0
  229. sqlspec/adapters/sqlite/core.py +312 -0
  230. sqlspec/adapters/sqlite/data_dictionary.py +202 -0
  231. sqlspec/adapters/sqlite/driver.py +359 -0
  232. sqlspec/adapters/sqlite/events/__init__.py +5 -0
  233. sqlspec/adapters/sqlite/events/store.py +20 -0
  234. sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
  235. sqlspec/adapters/sqlite/litestar/store.py +316 -0
  236. sqlspec/adapters/sqlite/pool.py +198 -0
  237. sqlspec/adapters/sqlite/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  238. sqlspec/adapters/sqlite/type_converter.py +114 -0
  239. sqlspec/base.py +747 -0
  240. sqlspec/builder/__init__.py +179 -0
  241. sqlspec/builder/_base.cpython-310-aarch64-linux-gnu.so +0 -0
  242. sqlspec/builder/_base.py +1022 -0
  243. sqlspec/builder/_column.cpython-310-aarch64-linux-gnu.so +0 -0
  244. sqlspec/builder/_column.py +521 -0
  245. sqlspec/builder/_ddl.cpython-310-aarch64-linux-gnu.so +0 -0
  246. sqlspec/builder/_ddl.py +1642 -0
  247. sqlspec/builder/_delete.cpython-310-aarch64-linux-gnu.so +0 -0
  248. sqlspec/builder/_delete.py +95 -0
  249. sqlspec/builder/_dml.cpython-310-aarch64-linux-gnu.so +0 -0
  250. sqlspec/builder/_dml.py +365 -0
  251. sqlspec/builder/_explain.cpython-310-aarch64-linux-gnu.so +0 -0
  252. sqlspec/builder/_explain.py +579 -0
  253. sqlspec/builder/_expression_wrappers.cpython-310-aarch64-linux-gnu.so +0 -0
  254. sqlspec/builder/_expression_wrappers.py +46 -0
  255. sqlspec/builder/_factory.cpython-310-aarch64-linux-gnu.so +0 -0
  256. sqlspec/builder/_factory.py +1697 -0
  257. sqlspec/builder/_insert.cpython-310-aarch64-linux-gnu.so +0 -0
  258. sqlspec/builder/_insert.py +328 -0
  259. sqlspec/builder/_join.cpython-310-aarch64-linux-gnu.so +0 -0
  260. sqlspec/builder/_join.py +499 -0
  261. sqlspec/builder/_merge.cpython-310-aarch64-linux-gnu.so +0 -0
  262. sqlspec/builder/_merge.py +821 -0
  263. sqlspec/builder/_parsing_utils.cpython-310-aarch64-linux-gnu.so +0 -0
  264. sqlspec/builder/_parsing_utils.py +297 -0
  265. sqlspec/builder/_select.cpython-310-aarch64-linux-gnu.so +0 -0
  266. sqlspec/builder/_select.py +1660 -0
  267. sqlspec/builder/_temporal.cpython-310-aarch64-linux-gnu.so +0 -0
  268. sqlspec/builder/_temporal.py +139 -0
  269. sqlspec/builder/_update.cpython-310-aarch64-linux-gnu.so +0 -0
  270. sqlspec/builder/_update.py +173 -0
  271. sqlspec/builder/_vector_expressions.py +267 -0
  272. sqlspec/cli.py +911 -0
  273. sqlspec/config.py +1755 -0
  274. sqlspec/core/__init__.py +374 -0
  275. sqlspec/core/_correlation.cpython-310-aarch64-linux-gnu.so +0 -0
  276. sqlspec/core/_correlation.py +176 -0
  277. sqlspec/core/cache.cpython-310-aarch64-linux-gnu.so +0 -0
  278. sqlspec/core/cache.py +1069 -0
  279. sqlspec/core/compiler.cpython-310-aarch64-linux-gnu.so +0 -0
  280. sqlspec/core/compiler.py +954 -0
  281. sqlspec/core/explain.cpython-310-aarch64-linux-gnu.so +0 -0
  282. sqlspec/core/explain.py +275 -0
  283. sqlspec/core/filters.cpython-310-aarch64-linux-gnu.so +0 -0
  284. sqlspec/core/filters.py +952 -0
  285. sqlspec/core/hashing.cpython-310-aarch64-linux-gnu.so +0 -0
  286. sqlspec/core/hashing.py +262 -0
  287. sqlspec/core/metrics.cpython-310-aarch64-linux-gnu.so +0 -0
  288. sqlspec/core/metrics.py +83 -0
  289. sqlspec/core/parameters/__init__.py +71 -0
  290. sqlspec/core/parameters/_alignment.cpython-310-aarch64-linux-gnu.so +0 -0
  291. sqlspec/core/parameters/_alignment.py +270 -0
  292. sqlspec/core/parameters/_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  293. sqlspec/core/parameters/_converter.py +543 -0
  294. sqlspec/core/parameters/_processor.cpython-310-aarch64-linux-gnu.so +0 -0
  295. sqlspec/core/parameters/_processor.py +505 -0
  296. sqlspec/core/parameters/_registry.cpython-310-aarch64-linux-gnu.so +0 -0
  297. sqlspec/core/parameters/_registry.py +206 -0
  298. sqlspec/core/parameters/_transformers.cpython-310-aarch64-linux-gnu.so +0 -0
  299. sqlspec/core/parameters/_transformers.py +292 -0
  300. sqlspec/core/parameters/_types.cpython-310-aarch64-linux-gnu.so +0 -0
  301. sqlspec/core/parameters/_types.py +499 -0
  302. sqlspec/core/parameters/_validator.cpython-310-aarch64-linux-gnu.so +0 -0
  303. sqlspec/core/parameters/_validator.py +180 -0
  304. sqlspec/core/pipeline.cpython-310-aarch64-linux-gnu.so +0 -0
  305. sqlspec/core/pipeline.py +319 -0
  306. sqlspec/core/query_modifiers.cpython-310-aarch64-linux-gnu.so +0 -0
  307. sqlspec/core/query_modifiers.py +437 -0
  308. sqlspec/core/result/__init__.py +23 -0
  309. sqlspec/core/result/_base.cpython-310-aarch64-linux-gnu.so +0 -0
  310. sqlspec/core/result/_base.py +1121 -0
  311. sqlspec/core/result/_io.cpython-310-aarch64-linux-gnu.so +0 -0
  312. sqlspec/core/result/_io.py +28 -0
  313. sqlspec/core/splitter.cpython-310-aarch64-linux-gnu.so +0 -0
  314. sqlspec/core/splitter.py +966 -0
  315. sqlspec/core/stack.cpython-310-aarch64-linux-gnu.so +0 -0
  316. sqlspec/core/stack.py +163 -0
  317. sqlspec/core/statement.cpython-310-aarch64-linux-gnu.so +0 -0
  318. sqlspec/core/statement.py +1503 -0
  319. sqlspec/core/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  320. sqlspec/core/type_converter.py +339 -0
  321. sqlspec/data_dictionary/__init__.py +22 -0
  322. sqlspec/data_dictionary/_loader.py +123 -0
  323. sqlspec/data_dictionary/_registry.cpython-310-aarch64-linux-gnu.so +0 -0
  324. sqlspec/data_dictionary/_registry.py +74 -0
  325. sqlspec/data_dictionary/_types.cpython-310-aarch64-linux-gnu.so +0 -0
  326. sqlspec/data_dictionary/_types.py +121 -0
  327. sqlspec/data_dictionary/dialects/__init__.py +21 -0
  328. sqlspec/data_dictionary/dialects/bigquery.cpython-310-aarch64-linux-gnu.so +0 -0
  329. sqlspec/data_dictionary/dialects/bigquery.py +49 -0
  330. sqlspec/data_dictionary/dialects/cockroachdb.cpython-310-aarch64-linux-gnu.so +0 -0
  331. sqlspec/data_dictionary/dialects/cockroachdb.py +43 -0
  332. sqlspec/data_dictionary/dialects/duckdb.cpython-310-aarch64-linux-gnu.so +0 -0
  333. sqlspec/data_dictionary/dialects/duckdb.py +47 -0
  334. sqlspec/data_dictionary/dialects/mysql.cpython-310-aarch64-linux-gnu.so +0 -0
  335. sqlspec/data_dictionary/dialects/mysql.py +42 -0
  336. sqlspec/data_dictionary/dialects/oracle.cpython-310-aarch64-linux-gnu.so +0 -0
  337. sqlspec/data_dictionary/dialects/oracle.py +34 -0
  338. sqlspec/data_dictionary/dialects/postgres.cpython-310-aarch64-linux-gnu.so +0 -0
  339. sqlspec/data_dictionary/dialects/postgres.py +46 -0
  340. sqlspec/data_dictionary/dialects/spanner.cpython-310-aarch64-linux-gnu.so +0 -0
  341. sqlspec/data_dictionary/dialects/spanner.py +37 -0
  342. sqlspec/data_dictionary/dialects/sqlite.cpython-310-aarch64-linux-gnu.so +0 -0
  343. sqlspec/data_dictionary/dialects/sqlite.py +42 -0
  344. sqlspec/data_dictionary/sql/.gitkeep +0 -0
  345. sqlspec/data_dictionary/sql/bigquery/columns.sql +23 -0
  346. sqlspec/data_dictionary/sql/bigquery/foreign_keys.sql +34 -0
  347. sqlspec/data_dictionary/sql/bigquery/indexes.sql +19 -0
  348. sqlspec/data_dictionary/sql/bigquery/tables.sql +33 -0
  349. sqlspec/data_dictionary/sql/bigquery/version.sql +3 -0
  350. sqlspec/data_dictionary/sql/cockroachdb/columns.sql +34 -0
  351. sqlspec/data_dictionary/sql/cockroachdb/foreign_keys.sql +40 -0
  352. sqlspec/data_dictionary/sql/cockroachdb/indexes.sql +32 -0
  353. sqlspec/data_dictionary/sql/cockroachdb/tables.sql +44 -0
  354. sqlspec/data_dictionary/sql/cockroachdb/version.sql +3 -0
  355. sqlspec/data_dictionary/sql/duckdb/columns.sql +23 -0
  356. sqlspec/data_dictionary/sql/duckdb/foreign_keys.sql +36 -0
  357. sqlspec/data_dictionary/sql/duckdb/indexes.sql +19 -0
  358. sqlspec/data_dictionary/sql/duckdb/tables.sql +38 -0
  359. sqlspec/data_dictionary/sql/duckdb/version.sql +3 -0
  360. sqlspec/data_dictionary/sql/mysql/columns.sql +23 -0
  361. sqlspec/data_dictionary/sql/mysql/foreign_keys.sql +28 -0
  362. sqlspec/data_dictionary/sql/mysql/indexes.sql +26 -0
  363. sqlspec/data_dictionary/sql/mysql/tables.sql +33 -0
  364. sqlspec/data_dictionary/sql/mysql/version.sql +3 -0
  365. sqlspec/data_dictionary/sql/oracle/columns.sql +23 -0
  366. sqlspec/data_dictionary/sql/oracle/foreign_keys.sql +48 -0
  367. sqlspec/data_dictionary/sql/oracle/indexes.sql +44 -0
  368. sqlspec/data_dictionary/sql/oracle/tables.sql +25 -0
  369. sqlspec/data_dictionary/sql/oracle/version.sql +20 -0
  370. sqlspec/data_dictionary/sql/postgres/columns.sql +34 -0
  371. sqlspec/data_dictionary/sql/postgres/foreign_keys.sql +40 -0
  372. sqlspec/data_dictionary/sql/postgres/indexes.sql +56 -0
  373. sqlspec/data_dictionary/sql/postgres/tables.sql +44 -0
  374. sqlspec/data_dictionary/sql/postgres/version.sql +3 -0
  375. sqlspec/data_dictionary/sql/spanner/columns.sql +23 -0
  376. sqlspec/data_dictionary/sql/spanner/foreign_keys.sql +70 -0
  377. sqlspec/data_dictionary/sql/spanner/indexes.sql +30 -0
  378. sqlspec/data_dictionary/sql/spanner/tables.sql +9 -0
  379. sqlspec/data_dictionary/sql/spanner/version.sql +3 -0
  380. sqlspec/data_dictionary/sql/sqlite/columns.sql +23 -0
  381. sqlspec/data_dictionary/sql/sqlite/foreign_keys.sql +22 -0
  382. sqlspec/data_dictionary/sql/sqlite/indexes.sql +7 -0
  383. sqlspec/data_dictionary/sql/sqlite/tables.sql +28 -0
  384. sqlspec/data_dictionary/sql/sqlite/version.sql +3 -0
  385. sqlspec/driver/__init__.py +32 -0
  386. sqlspec/driver/_async.cpython-310-aarch64-linux-gnu.so +0 -0
  387. sqlspec/driver/_async.py +1737 -0
  388. sqlspec/driver/_common.cpython-310-aarch64-linux-gnu.so +0 -0
  389. sqlspec/driver/_common.py +1478 -0
  390. sqlspec/driver/_sql_helpers.cpython-310-aarch64-linux-gnu.so +0 -0
  391. sqlspec/driver/_sql_helpers.py +148 -0
  392. sqlspec/driver/_storage_helpers.cpython-310-aarch64-linux-gnu.so +0 -0
  393. sqlspec/driver/_storage_helpers.py +144 -0
  394. sqlspec/driver/_sync.cpython-310-aarch64-linux-gnu.so +0 -0
  395. sqlspec/driver/_sync.py +1710 -0
  396. sqlspec/exceptions.py +338 -0
  397. sqlspec/extensions/__init__.py +0 -0
  398. sqlspec/extensions/adk/__init__.py +70 -0
  399. sqlspec/extensions/adk/_types.py +51 -0
  400. sqlspec/extensions/adk/converters.py +172 -0
  401. sqlspec/extensions/adk/memory/__init__.py +69 -0
  402. sqlspec/extensions/adk/memory/_types.py +30 -0
  403. sqlspec/extensions/adk/memory/converters.py +149 -0
  404. sqlspec/extensions/adk/memory/service.py +217 -0
  405. sqlspec/extensions/adk/memory/store.py +569 -0
  406. sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +246 -0
  407. sqlspec/extensions/adk/migrations/__init__.py +0 -0
  408. sqlspec/extensions/adk/service.py +225 -0
  409. sqlspec/extensions/adk/store.py +567 -0
  410. sqlspec/extensions/events/__init__.py +51 -0
  411. sqlspec/extensions/events/_channel.py +703 -0
  412. sqlspec/extensions/events/_hints.py +45 -0
  413. sqlspec/extensions/events/_models.py +23 -0
  414. sqlspec/extensions/events/_payload.py +69 -0
  415. sqlspec/extensions/events/_protocols.py +134 -0
  416. sqlspec/extensions/events/_queue.py +461 -0
  417. sqlspec/extensions/events/_store.py +209 -0
  418. sqlspec/extensions/events/migrations/0001_create_event_queue.py +59 -0
  419. sqlspec/extensions/events/migrations/__init__.py +3 -0
  420. sqlspec/extensions/fastapi/__init__.py +19 -0
  421. sqlspec/extensions/fastapi/extension.py +351 -0
  422. sqlspec/extensions/fastapi/providers.py +607 -0
  423. sqlspec/extensions/flask/__init__.py +37 -0
  424. sqlspec/extensions/flask/_state.py +76 -0
  425. sqlspec/extensions/flask/_utils.py +71 -0
  426. sqlspec/extensions/flask/extension.py +519 -0
  427. sqlspec/extensions/litestar/__init__.py +28 -0
  428. sqlspec/extensions/litestar/_utils.py +52 -0
  429. sqlspec/extensions/litestar/channels.py +165 -0
  430. sqlspec/extensions/litestar/cli.py +102 -0
  431. sqlspec/extensions/litestar/config.py +90 -0
  432. sqlspec/extensions/litestar/handlers.py +316 -0
  433. sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
  434. sqlspec/extensions/litestar/migrations/__init__.py +3 -0
  435. sqlspec/extensions/litestar/plugin.py +671 -0
  436. sqlspec/extensions/litestar/providers.py +526 -0
  437. sqlspec/extensions/litestar/store.py +296 -0
  438. sqlspec/extensions/otel/__init__.py +58 -0
  439. sqlspec/extensions/prometheus/__init__.py +113 -0
  440. sqlspec/extensions/starlette/__init__.py +19 -0
  441. sqlspec/extensions/starlette/_state.py +30 -0
  442. sqlspec/extensions/starlette/_utils.py +96 -0
  443. sqlspec/extensions/starlette/extension.py +346 -0
  444. sqlspec/extensions/starlette/middleware.py +235 -0
  445. sqlspec/loader.cpython-310-aarch64-linux-gnu.so +0 -0
  446. sqlspec/loader.py +702 -0
  447. sqlspec/migrations/__init__.py +36 -0
  448. sqlspec/migrations/base.py +731 -0
  449. sqlspec/migrations/commands.py +1232 -0
  450. sqlspec/migrations/context.py +157 -0
  451. sqlspec/migrations/fix.py +204 -0
  452. sqlspec/migrations/loaders.py +443 -0
  453. sqlspec/migrations/runner.py +1172 -0
  454. sqlspec/migrations/templates.py +234 -0
  455. sqlspec/migrations/tracker.py +611 -0
  456. sqlspec/migrations/utils.py +256 -0
  457. sqlspec/migrations/validation.py +207 -0
  458. sqlspec/migrations/version.py +446 -0
  459. sqlspec/observability/__init__.py +55 -0
  460. sqlspec/observability/_common.cpython-310-aarch64-linux-gnu.so +0 -0
  461. sqlspec/observability/_common.py +77 -0
  462. sqlspec/observability/_config.cpython-310-aarch64-linux-gnu.so +0 -0
  463. sqlspec/observability/_config.py +348 -0
  464. sqlspec/observability/_diagnostics.cpython-310-aarch64-linux-gnu.so +0 -0
  465. sqlspec/observability/_diagnostics.py +74 -0
  466. sqlspec/observability/_dispatcher.cpython-310-aarch64-linux-gnu.so +0 -0
  467. sqlspec/observability/_dispatcher.py +152 -0
  468. sqlspec/observability/_formatters/__init__.py +13 -0
  469. sqlspec/observability/_formatters/_aws.cpython-310-aarch64-linux-gnu.so +0 -0
  470. sqlspec/observability/_formatters/_aws.py +102 -0
  471. sqlspec/observability/_formatters/_azure.cpython-310-aarch64-linux-gnu.so +0 -0
  472. sqlspec/observability/_formatters/_azure.py +96 -0
  473. sqlspec/observability/_formatters/_base.cpython-310-aarch64-linux-gnu.so +0 -0
  474. sqlspec/observability/_formatters/_base.py +57 -0
  475. sqlspec/observability/_formatters/_gcp.cpython-310-aarch64-linux-gnu.so +0 -0
  476. sqlspec/observability/_formatters/_gcp.py +131 -0
  477. sqlspec/observability/_formatting.py +58 -0
  478. sqlspec/observability/_observer.cpython-310-aarch64-linux-gnu.so +0 -0
  479. sqlspec/observability/_observer.py +357 -0
  480. sqlspec/observability/_runtime.cpython-310-aarch64-linux-gnu.so +0 -0
  481. sqlspec/observability/_runtime.py +420 -0
  482. sqlspec/observability/_sampling.cpython-310-aarch64-linux-gnu.so +0 -0
  483. sqlspec/observability/_sampling.py +188 -0
  484. sqlspec/observability/_spans.cpython-310-aarch64-linux-gnu.so +0 -0
  485. sqlspec/observability/_spans.py +161 -0
  486. sqlspec/protocols.py +916 -0
  487. sqlspec/py.typed +0 -0
  488. sqlspec/storage/__init__.py +48 -0
  489. sqlspec/storage/_utils.py +104 -0
  490. sqlspec/storage/backends/__init__.py +1 -0
  491. sqlspec/storage/backends/base.py +253 -0
  492. sqlspec/storage/backends/fsspec.py +529 -0
  493. sqlspec/storage/backends/local.py +441 -0
  494. sqlspec/storage/backends/obstore.py +916 -0
  495. sqlspec/storage/errors.py +104 -0
  496. sqlspec/storage/pipeline.py +582 -0
  497. sqlspec/storage/registry.py +301 -0
  498. sqlspec/typing.py +395 -0
  499. sqlspec/utils/__init__.py +7 -0
  500. sqlspec/utils/arrow_helpers.py +318 -0
  501. sqlspec/utils/config_tools.py +332 -0
  502. sqlspec/utils/correlation.cpython-310-aarch64-linux-gnu.so +0 -0
  503. sqlspec/utils/correlation.py +134 -0
  504. sqlspec/utils/deprecation.py +190 -0
  505. sqlspec/utils/fixtures.cpython-310-aarch64-linux-gnu.so +0 -0
  506. sqlspec/utils/fixtures.py +258 -0
  507. sqlspec/utils/logging.py +222 -0
  508. sqlspec/utils/module_loader.py +306 -0
  509. sqlspec/utils/portal.cpython-310-aarch64-linux-gnu.so +0 -0
  510. sqlspec/utils/portal.py +375 -0
  511. sqlspec/utils/schema.cpython-310-aarch64-linux-gnu.so +0 -0
  512. sqlspec/utils/schema.py +485 -0
  513. sqlspec/utils/serializers.cpython-310-aarch64-linux-gnu.so +0 -0
  514. sqlspec/utils/serializers.py +408 -0
  515. sqlspec/utils/singleton.cpython-310-aarch64-linux-gnu.so +0 -0
  516. sqlspec/utils/singleton.py +41 -0
  517. sqlspec/utils/sync_tools.cpython-310-aarch64-linux-gnu.so +0 -0
  518. sqlspec/utils/sync_tools.py +311 -0
  519. sqlspec/utils/text.cpython-310-aarch64-linux-gnu.so +0 -0
  520. sqlspec/utils/text.py +108 -0
  521. sqlspec/utils/type_converters.cpython-310-aarch64-linux-gnu.so +0 -0
  522. sqlspec/utils/type_converters.py +128 -0
  523. sqlspec/utils/type_guards.cpython-310-aarch64-linux-gnu.so +0 -0
  524. sqlspec/utils/type_guards.py +1360 -0
  525. sqlspec/utils/uuids.cpython-310-aarch64-linux-gnu.so +0 -0
  526. sqlspec/utils/uuids.py +225 -0
  527. sqlspec-0.36.0.dist-info/METADATA +205 -0
  528. sqlspec-0.36.0.dist-info/RECORD +531 -0
  529. sqlspec-0.36.0.dist-info/WHEEL +7 -0
  530. sqlspec-0.36.0.dist-info/entry_points.txt +2 -0
  531. sqlspec-0.36.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,483 @@
1
+ """Mock database configuration for testing with dialect transpilation.
2
+
3
+ This module provides configuration classes for the mock adapter that use
4
+ SQLite :memory: as the execution backend while accepting SQL written in
5
+ other dialects (Postgres, MySQL, Oracle, etc.).
6
+ """
7
+
8
+ import sqlite3
9
+ from typing import TYPE_CHECKING, Any, ClassVar, TypedDict
10
+
11
+ from typing_extensions import NotRequired
12
+
13
+ from sqlspec.adapters.mock._typing import MockAsyncSessionContext, MockConnection, MockSyncSessionContext
14
+ from sqlspec.adapters.mock.core import apply_driver_features, default_statement_config
15
+ from sqlspec.adapters.mock.driver import MockAsyncDriver, MockCursor, MockExceptionHandler, MockSyncDriver
16
+ from sqlspec.config import ExtensionConfigs, NoPoolAsyncConfig, NoPoolSyncConfig
17
+ from sqlspec.driver import convert_to_dialect
18
+ from sqlspec.utils.sync_tools import async_
19
+
20
+ if TYPE_CHECKING:
21
+ from collections.abc import Callable
22
+
23
+ from sqlspec.core import StatementConfig
24
+ from sqlspec.observability import ObservabilityConfig
25
+
26
+ __all__ = ("MockAsyncConfig", "MockConnectionParams", "MockDriverFeatures", "MockSyncConfig")
27
+
28
+
29
+ class MockConnectionParams(TypedDict):
30
+ """Mock connection parameters.
31
+
32
+ These parameters control the SQLite :memory: backend behavior.
33
+ """
34
+
35
+ target_dialect: NotRequired[str]
36
+ initial_sql: NotRequired["str | list[str]"]
37
+ timeout: NotRequired[float]
38
+ detect_types: NotRequired[int]
39
+ isolation_level: "NotRequired[str | None]"
40
+ check_same_thread: NotRequired[bool]
41
+ cached_statements: NotRequired[int]
42
+
43
+
44
+ class MockDriverFeatures(TypedDict):
45
+ """Mock driver feature configuration.
46
+
47
+ Controls optional type handling and serialization features for Mock connections.
48
+
49
+ json_serializer: Custom JSON serializer function.
50
+ Defaults to sqlspec.utils.serializers.to_json.
51
+ json_deserializer: Custom JSON deserializer function.
52
+ Defaults to sqlspec.utils.serializers.from_json.
53
+ """
54
+
55
+ json_serializer: "NotRequired[Callable[[Any], str]]"
56
+ json_deserializer: "NotRequired[Callable[[str], Any]]"
57
+
58
+
59
+ class MockSyncConnectionContext:
60
+ """Context manager for Mock sync connections."""
61
+
62
+ __slots__ = ("_config", "_connection")
63
+
64
+ def __init__(self, config: "MockSyncConfig") -> None:
65
+ self._config = config
66
+ self._connection: MockConnection | None = None
67
+
68
+ def __enter__(self) -> MockConnection:
69
+ self._connection = self._config.create_connection()
70
+ return self._connection
71
+
72
+ def __exit__(
73
+ self, exc_type: "type[BaseException] | None", exc_val: "BaseException | None", exc_tb: Any
74
+ ) -> "bool | None":
75
+ if self._connection is not None:
76
+ self._connection.close()
77
+ self._connection = None
78
+ return None
79
+
80
+
81
+ class MockAsyncConnectionContext:
82
+ """Async context manager for Mock async connections."""
83
+
84
+ __slots__ = ("_config", "_connection")
85
+
86
+ def __init__(self, config: "MockAsyncConfig") -> None:
87
+ self._config = config
88
+ self._connection: MockConnection | None = None
89
+
90
+ async def __aenter__(self) -> MockConnection:
91
+ self._connection = await self._config.create_connection()
92
+ return self._connection
93
+
94
+ async def __aexit__(
95
+ self, exc_type: "type[BaseException] | None", exc_val: "BaseException | None", exc_tb: Any
96
+ ) -> "bool | None":
97
+ if self._connection is not None:
98
+ self._connection.close()
99
+ self._connection = None
100
+ return None
101
+
102
+
103
+ class _MockSyncSessionFactory:
104
+ """Factory for creating mock sync sessions."""
105
+
106
+ __slots__ = ("_config", "_connection")
107
+
108
+ def __init__(self, config: "MockSyncConfig") -> None:
109
+ self._config = config
110
+ self._connection: MockConnection | None = None
111
+
112
+ def acquire_connection(self) -> MockConnection:
113
+ self._connection = self._config.create_connection()
114
+ return self._connection
115
+
116
+ def release_connection(self, conn: MockConnection) -> None:
117
+ if self._connection is not None:
118
+ self._connection.close()
119
+ self._connection = None
120
+
121
+
122
+ class _MockAsyncSessionFactory:
123
+ """Factory for creating mock async sessions."""
124
+
125
+ __slots__ = ("_config", "_connection")
126
+
127
+ def __init__(self, config: "MockAsyncConfig") -> None:
128
+ self._config = config
129
+ self._connection: MockConnection | None = None
130
+
131
+ async def acquire_connection(self) -> MockConnection:
132
+ self._connection = await self._config.create_connection()
133
+ return self._connection
134
+
135
+ async def release_connection(self, conn: MockConnection) -> None:
136
+ if self._connection is not None:
137
+ self._connection.close()
138
+ self._connection = None
139
+
140
+
141
+ class MockSyncConfig(NoPoolSyncConfig["MockConnection", "MockSyncDriver"]):
142
+ """Sync mock database configuration.
143
+
144
+ Uses SQLite :memory: as the execution backend with dialect transpilation.
145
+ Write SQL in your target dialect (Postgres, MySQL, Oracle) and it will
146
+ be transpiled to SQLite before execution.
147
+
148
+ Example:
149
+ config = MockSyncConfig(target_dialect="postgres")
150
+
151
+ with config.provide_session() as session:
152
+ session.execute(\"\"\"
153
+ CREATE TABLE users (
154
+ id SERIAL PRIMARY KEY,
155
+ name VARCHAR(100)
156
+ )
157
+ \"\"\")
158
+ session.execute(
159
+ "INSERT INTO users (name) VALUES ($1)",
160
+ "Alice"
161
+ )
162
+ user = session.select_one("SELECT * FROM users WHERE name = $1", "Alice")
163
+ assert user["name"] == "Alice"
164
+ """
165
+
166
+ driver_type: "ClassVar[type[MockSyncDriver]]" = MockSyncDriver
167
+ connection_type: "ClassVar[type[MockConnection]]" = MockConnection
168
+ supports_transactional_ddl: "ClassVar[bool]" = True
169
+ supports_native_arrow_export: "ClassVar[bool]" = True
170
+ supports_native_arrow_import: "ClassVar[bool]" = True
171
+ supports_native_parquet_export: "ClassVar[bool]" = True
172
+ supports_native_parquet_import: "ClassVar[bool]" = True
173
+
174
+ def __init__(
175
+ self,
176
+ *,
177
+ target_dialect: str = "sqlite",
178
+ initial_sql: "str | list[str] | None" = None,
179
+ connection_config: "MockConnectionParams | dict[str, Any] | None" = None,
180
+ connection_instance: "Any" = None,
181
+ migration_config: "dict[str, Any] | None" = None,
182
+ statement_config: "StatementConfig | None" = None,
183
+ driver_features: "MockDriverFeatures | dict[str, Any] | None" = None,
184
+ bind_key: "str | None" = None,
185
+ extension_config: "ExtensionConfigs | None" = None,
186
+ observability_config: "ObservabilityConfig | None" = None,
187
+ ) -> None:
188
+ """Initialize Mock sync configuration.
189
+
190
+ Args:
191
+ target_dialect: SQL dialect for input SQL (postgres, mysql, oracle, sqlite).
192
+ SQL will be transpiled to SQLite before execution, unless 'sqlite'.
193
+ initial_sql: SQL statements to execute when creating connection.
194
+ Can be a single string or list of strings. Useful for setting up
195
+ test fixtures.
196
+ connection_config: Additional connection parameters.
197
+ connection_instance: Pre-existing connection (not used for mock).
198
+ migration_config: Migration configuration.
199
+ statement_config: Statement configuration settings.
200
+ driver_features: Driver feature configuration.
201
+ bind_key: Optional unique identifier for this configuration.
202
+ extension_config: Extension-specific configuration.
203
+ observability_config: Observability configuration.
204
+ """
205
+ config_dict: dict[str, Any] = dict(connection_config) if connection_config else {}
206
+ config_dict["target_dialect"] = target_dialect
207
+ config_dict["initial_sql"] = initial_sql
208
+
209
+ statement_config = statement_config or default_statement_config
210
+ statement_config, driver_features = apply_driver_features(statement_config, driver_features)
211
+
212
+ super().__init__(
213
+ connection_config=config_dict,
214
+ connection_instance=connection_instance,
215
+ migration_config=migration_config,
216
+ statement_config=statement_config,
217
+ driver_features=driver_features,
218
+ bind_key=bind_key,
219
+ extension_config=extension_config,
220
+ observability_config=observability_config,
221
+ )
222
+
223
+ @property
224
+ def target_dialect(self) -> str:
225
+ """Get the target dialect for SQL transpilation."""
226
+ return str(self.connection_config.get("target_dialect", "sqlite"))
227
+
228
+ @property
229
+ def initial_sql(self) -> "str | list[str] | None":
230
+ """Get the initial SQL to execute on connection creation."""
231
+ return self.connection_config.get("initial_sql")
232
+
233
+ def create_connection(self) -> MockConnection:
234
+ """Create a new SQLite :memory: connection.
235
+
236
+ Returns:
237
+ SQLite connection with row factory set.
238
+ """
239
+ conn = sqlite3.connect(":memory:", check_same_thread=False)
240
+ conn.row_factory = sqlite3.Row
241
+
242
+ if self.initial_sql:
243
+ self._execute_initial_sql(conn)
244
+
245
+ return conn
246
+
247
+ def _execute_initial_sql(self, conn: MockConnection) -> None:
248
+ """Execute initial SQL statements on a new connection.
249
+
250
+ Args:
251
+ conn: SQLite connection to execute SQL on.
252
+ """
253
+ initial_sql = self.initial_sql
254
+ if initial_sql is None:
255
+ return
256
+
257
+ statements = initial_sql if isinstance(initial_sql, list) else [initial_sql]
258
+ target_dialect = self.target_dialect
259
+
260
+ for sql in statements:
261
+ if target_dialect != "sqlite":
262
+ transpiled = convert_to_dialect(sql, target_dialect, "sqlite", pretty=False)
263
+ else:
264
+ transpiled = sql
265
+ conn.executescript(transpiled)
266
+
267
+ def provide_connection(self, *args: Any, **kwargs: Any) -> "MockSyncConnectionContext":
268
+ """Provide a Mock sync connection context manager.
269
+
270
+ Returns:
271
+ Connection context manager.
272
+ """
273
+ return MockSyncConnectionContext(self)
274
+
275
+ def provide_session(
276
+ self, *_args: Any, statement_config: "StatementConfig | None" = None, **_kwargs: Any
277
+ ) -> "MockSyncSessionContext":
278
+ """Provide a Mock sync driver session.
279
+
280
+ Args:
281
+ statement_config: Optional statement configuration override.
282
+
283
+ Returns:
284
+ Mock driver session context manager.
285
+ """
286
+ factory = _MockSyncSessionFactory(self)
287
+
288
+ return MockSyncSessionContext(
289
+ acquire_connection=factory.acquire_connection,
290
+ release_connection=factory.release_connection,
291
+ statement_config=statement_config or self.statement_config or default_statement_config,
292
+ driver_features=self.driver_features,
293
+ prepare_driver=self._prepare_driver,
294
+ target_dialect=self.target_dialect,
295
+ )
296
+
297
+ def get_signature_namespace(self) -> "dict[str, Any]":
298
+ """Get the signature namespace for Mock types.
299
+
300
+ Returns:
301
+ Dictionary mapping type names to types.
302
+ """
303
+ namespace = super().get_signature_namespace()
304
+ namespace.update({
305
+ "MockConnection": MockConnection,
306
+ "MockConnectionParams": MockConnectionParams,
307
+ "MockCursor": MockCursor,
308
+ "MockDriverFeatures": MockDriverFeatures,
309
+ "MockExceptionHandler": MockExceptionHandler,
310
+ "MockSyncConfig": MockSyncConfig,
311
+ "MockSyncConnectionContext": MockSyncConnectionContext,
312
+ "MockSyncDriver": MockSyncDriver,
313
+ "MockSyncSessionContext": MockSyncSessionContext,
314
+ })
315
+ return namespace
316
+
317
+
318
+ class MockAsyncConfig(NoPoolAsyncConfig["MockConnection", "MockAsyncDriver"]):
319
+ """Async mock database configuration.
320
+
321
+ Uses SQLite :memory: as the execution backend with dialect transpilation.
322
+ The async interface wraps sync SQLite operations using asyncio.to_thread().
323
+
324
+ Example:
325
+ config = MockAsyncConfig(target_dialect="mysql")
326
+
327
+ async with config.provide_session() as session:
328
+ await session.execute("CREATE TABLE items (id INT, name TEXT)")
329
+ await session.execute("INSERT INTO items VALUES (%s, %s)", 1, "Widget")
330
+ result = await session.select("SELECT * FROM items")
331
+ assert len(result) == 1
332
+ """
333
+
334
+ driver_type: "ClassVar[type[MockAsyncDriver]]" = MockAsyncDriver
335
+ connection_type: "ClassVar[type[MockConnection]]" = MockConnection
336
+ supports_transactional_ddl: "ClassVar[bool]" = True
337
+ supports_native_arrow_export: "ClassVar[bool]" = True
338
+ supports_native_arrow_import: "ClassVar[bool]" = True
339
+ supports_native_parquet_export: "ClassVar[bool]" = True
340
+ supports_native_parquet_import: "ClassVar[bool]" = True
341
+
342
+ def __init__(
343
+ self,
344
+ *,
345
+ target_dialect: str = "sqlite",
346
+ initial_sql: "str | list[str] | None" = None,
347
+ connection_config: "MockConnectionParams | dict[str, Any] | None" = None,
348
+ connection_instance: "Any" = None,
349
+ migration_config: "dict[str, Any] | None" = None,
350
+ statement_config: "StatementConfig | None" = None,
351
+ driver_features: "MockDriverFeatures | dict[str, Any] | None" = None,
352
+ bind_key: "str | None" = None,
353
+ extension_config: "ExtensionConfigs | None" = None,
354
+ observability_config: "ObservabilityConfig | None" = None,
355
+ ) -> None:
356
+ """Initialize Mock async configuration.
357
+
358
+ Args:
359
+ target_dialect: SQL dialect for input SQL (postgres, mysql, oracle, sqlite).
360
+ SQL will be transpiled to SQLite before execution, unless 'sqlite'.
361
+ initial_sql: SQL statements to execute when creating connection.
362
+ Can be a single string or list of strings. Useful for setting up
363
+ test fixtures.
364
+ connection_config: Additional connection parameters.
365
+ connection_instance: Pre-existing connection (not used for mock).
366
+ migration_config: Migration configuration.
367
+ statement_config: Statement configuration settings.
368
+ driver_features: Driver feature configuration.
369
+ bind_key: Optional unique identifier for this configuration.
370
+ extension_config: Extension-specific configuration.
371
+ observability_config: Observability configuration.
372
+ """
373
+ config_dict: dict[str, Any] = dict(connection_config) if connection_config else {}
374
+ config_dict["target_dialect"] = target_dialect
375
+ config_dict["initial_sql"] = initial_sql
376
+
377
+ statement_config = statement_config or default_statement_config
378
+ statement_config, driver_features = apply_driver_features(statement_config, driver_features)
379
+
380
+ super().__init__(
381
+ connection_config=config_dict,
382
+ connection_instance=connection_instance,
383
+ migration_config=migration_config,
384
+ statement_config=statement_config,
385
+ driver_features=driver_features,
386
+ bind_key=bind_key,
387
+ extension_config=extension_config,
388
+ observability_config=observability_config,
389
+ )
390
+
391
+ @property
392
+ def target_dialect(self) -> str:
393
+ """Get the target dialect for SQL transpilation."""
394
+ return str(self.connection_config.get("target_dialect", "sqlite"))
395
+
396
+ @property
397
+ def initial_sql(self) -> "str | list[str] | None":
398
+ """Get the initial SQL to execute on connection creation."""
399
+ return self.connection_config.get("initial_sql")
400
+
401
+ async def create_connection(self) -> MockConnection:
402
+ """Create a new SQLite :memory: connection asynchronously.
403
+
404
+ Returns:
405
+ SQLite connection with row factory set.
406
+ """
407
+ connect_async = async_(sqlite3.connect)
408
+ conn = await connect_async(":memory:", check_same_thread=False)
409
+ conn.row_factory = sqlite3.Row
410
+
411
+ if self.initial_sql:
412
+ await self._execute_initial_sql_async(conn)
413
+
414
+ return conn
415
+
416
+ async def _execute_initial_sql_async(self, conn: MockConnection) -> None:
417
+ """Execute initial SQL statements on a new connection.
418
+
419
+ Args:
420
+ conn: SQLite connection to execute SQL on.
421
+ """
422
+ initial_sql = self.initial_sql
423
+ if initial_sql is None:
424
+ return
425
+
426
+ statements = initial_sql if isinstance(initial_sql, list) else [initial_sql]
427
+ target_dialect = self.target_dialect
428
+
429
+ for sql in statements:
430
+ if target_dialect != "sqlite":
431
+ transpiled = convert_to_dialect(sql, target_dialect, "sqlite", pretty=False)
432
+ else:
433
+ transpiled = sql
434
+ executescript_async = async_(conn.executescript)
435
+ await executescript_async(transpiled)
436
+
437
+ def provide_connection(self, *args: Any, **kwargs: Any) -> "MockAsyncConnectionContext":
438
+ """Provide a Mock async connection context manager.
439
+
440
+ Returns:
441
+ Async connection context manager.
442
+ """
443
+ return MockAsyncConnectionContext(self)
444
+
445
+ def provide_session(
446
+ self, *_args: Any, statement_config: "StatementConfig | None" = None, **_kwargs: Any
447
+ ) -> "MockAsyncSessionContext":
448
+ """Provide a Mock async driver session.
449
+
450
+ Args:
451
+ statement_config: Optional statement configuration override.
452
+
453
+ Returns:
454
+ Mock async driver session context manager.
455
+ """
456
+ factory = _MockAsyncSessionFactory(self)
457
+
458
+ return MockAsyncSessionContext(
459
+ acquire_connection=factory.acquire_connection,
460
+ release_connection=factory.release_connection,
461
+ statement_config=statement_config or self.statement_config or default_statement_config,
462
+ driver_features=self.driver_features,
463
+ prepare_driver=self._prepare_driver,
464
+ target_dialect=self.target_dialect,
465
+ )
466
+
467
+ def get_signature_namespace(self) -> "dict[str, Any]":
468
+ """Get the signature namespace for Mock types.
469
+
470
+ Returns:
471
+ Dictionary mapping type names to types.
472
+ """
473
+ namespace = super().get_signature_namespace()
474
+ namespace.update({
475
+ "MockAsyncConfig": MockAsyncConfig,
476
+ "MockAsyncConnectionContext": MockAsyncConnectionContext,
477
+ "MockAsyncDriver": MockAsyncDriver,
478
+ "MockAsyncSessionContext": MockAsyncSessionContext,
479
+ "MockConnection": MockConnection,
480
+ "MockConnectionParams": MockConnectionParams,
481
+ "MockDriverFeatures": MockDriverFeatures,
482
+ })
483
+ return namespace