sqlspec 0.47.0__cp314-cp314-win_amd64.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 (621) hide show
  1. f68e0789eb443ecb1c2c__mypyc.cp314-win_amd64.pyd +0 -0
  2. sqlspec/__init__.py +167 -0
  3. sqlspec/__main__.py +12 -0
  4. sqlspec/__metadata__.py +14 -0
  5. sqlspec/_typing.py +714 -0
  6. sqlspec/adapters/__init__.py +0 -0
  7. sqlspec/adapters/adbc/__init__.py +13 -0
  8. sqlspec/adapters/adbc/_typing.py +106 -0
  9. sqlspec/adapters/adbc/adk/__init__.py +5 -0
  10. sqlspec/adapters/adbc/adk/store.py +1280 -0
  11. sqlspec/adapters/adbc/config.py +378 -0
  12. sqlspec/adapters/adbc/core.cp314-win_amd64.pyd +0 -0
  13. sqlspec/adapters/adbc/core.py +922 -0
  14. sqlspec/adapters/adbc/data_dictionary.py +339 -0
  15. sqlspec/adapters/adbc/driver.py +534 -0
  16. sqlspec/adapters/adbc/events/__init__.py +5 -0
  17. sqlspec/adapters/adbc/events/store.py +285 -0
  18. sqlspec/adapters/adbc/litestar/__init__.py +5 -0
  19. sqlspec/adapters/adbc/litestar/store.py +534 -0
  20. sqlspec/adapters/adbc/type_converter.cp314-win_amd64.pyd +0 -0
  21. sqlspec/adapters/adbc/type_converter.py +142 -0
  22. sqlspec/adapters/aiomysql/__init__.py +21 -0
  23. sqlspec/adapters/aiomysql/_typing.py +137 -0
  24. sqlspec/adapters/aiomysql/adk/__init__.py +5 -0
  25. sqlspec/adapters/aiomysql/adk/store.py +678 -0
  26. sqlspec/adapters/aiomysql/config.py +305 -0
  27. sqlspec/adapters/aiomysql/core.cp314-win_amd64.pyd +0 -0
  28. sqlspec/adapters/aiomysql/core.py +536 -0
  29. sqlspec/adapters/aiomysql/data_dictionary.py +121 -0
  30. sqlspec/adapters/aiomysql/driver.py +386 -0
  31. sqlspec/adapters/aiomysql/events/__init__.py +5 -0
  32. sqlspec/adapters/aiomysql/events/store.py +104 -0
  33. sqlspec/adapters/aiomysql/litestar/__init__.py +5 -0
  34. sqlspec/adapters/aiomysql/litestar/store.py +314 -0
  35. sqlspec/adapters/aiosqlite/__init__.py +26 -0
  36. sqlspec/adapters/aiosqlite/_typing.py +109 -0
  37. sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
  38. sqlspec/adapters/aiosqlite/adk/store.py +829 -0
  39. sqlspec/adapters/aiosqlite/config.py +315 -0
  40. sqlspec/adapters/aiosqlite/core.cp314-win_amd64.pyd +0 -0
  41. sqlspec/adapters/aiosqlite/core.py +315 -0
  42. sqlspec/adapters/aiosqlite/data_dictionary.py +202 -0
  43. sqlspec/adapters/aiosqlite/driver.py +311 -0
  44. sqlspec/adapters/aiosqlite/events/__init__.py +5 -0
  45. sqlspec/adapters/aiosqlite/events/store.py +20 -0
  46. sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
  47. sqlspec/adapters/aiosqlite/litestar/store.py +279 -0
  48. sqlspec/adapters/aiosqlite/pool.cp314-win_amd64.pyd +0 -0
  49. sqlspec/adapters/aiosqlite/pool.py +734 -0
  50. sqlspec/adapters/asyncmy/__init__.py +21 -0
  51. sqlspec/adapters/asyncmy/_typing.py +113 -0
  52. sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
  53. sqlspec/adapters/asyncmy/adk/store.py +644 -0
  54. sqlspec/adapters/asyncmy/config.py +307 -0
  55. sqlspec/adapters/asyncmy/core.cp314-win_amd64.pyd +0 -0
  56. sqlspec/adapters/asyncmy/core.py +538 -0
  57. sqlspec/adapters/asyncmy/data_dictionary.py +122 -0
  58. sqlspec/adapters/asyncmy/driver.py +391 -0
  59. sqlspec/adapters/asyncmy/events/__init__.py +5 -0
  60. sqlspec/adapters/asyncmy/events/store.py +104 -0
  61. sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
  62. sqlspec/adapters/asyncmy/litestar/store.py +296 -0
  63. sqlspec/adapters/asyncpg/__init__.py +26 -0
  64. sqlspec/adapters/asyncpg/_typing.py +103 -0
  65. sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
  66. sqlspec/adapters/asyncpg/adk/store.py +483 -0
  67. sqlspec/adapters/asyncpg/config.py +575 -0
  68. sqlspec/adapters/asyncpg/core.cp314-win_amd64.pyd +0 -0
  69. sqlspec/adapters/asyncpg/core.py +480 -0
  70. sqlspec/adapters/asyncpg/data_dictionary.py +157 -0
  71. sqlspec/adapters/asyncpg/driver.py +487 -0
  72. sqlspec/adapters/asyncpg/events/__init__.py +6 -0
  73. sqlspec/adapters/asyncpg/events/_hub.py +181 -0
  74. sqlspec/adapters/asyncpg/events/backend.py +210 -0
  75. sqlspec/adapters/asyncpg/events/store.py +40 -0
  76. sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
  77. sqlspec/adapters/asyncpg/litestar/store.py +251 -0
  78. sqlspec/adapters/bigquery/__init__.py +15 -0
  79. sqlspec/adapters/bigquery/_typing.py +108 -0
  80. sqlspec/adapters/bigquery/config.py +362 -0
  81. sqlspec/adapters/bigquery/core.cp314-win_amd64.pyd +0 -0
  82. sqlspec/adapters/bigquery/core.py +768 -0
  83. sqlspec/adapters/bigquery/data_dictionary.py +120 -0
  84. sqlspec/adapters/bigquery/driver.py +542 -0
  85. sqlspec/adapters/bigquery/events/__init__.py +5 -0
  86. sqlspec/adapters/bigquery/events/store.py +139 -0
  87. sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
  88. sqlspec/adapters/bigquery/litestar/store.py +325 -0
  89. sqlspec/adapters/bigquery/type_converter.cp314-win_amd64.pyd +0 -0
  90. sqlspec/adapters/bigquery/type_converter.py +107 -0
  91. sqlspec/adapters/cockroach_asyncpg/__init__.py +26 -0
  92. sqlspec/adapters/cockroach_asyncpg/_typing.py +73 -0
  93. sqlspec/adapters/cockroach_asyncpg/adk/__init__.py +3 -0
  94. sqlspec/adapters/cockroach_asyncpg/adk/store.py +465 -0
  95. sqlspec/adapters/cockroach_asyncpg/config.py +248 -0
  96. sqlspec/adapters/cockroach_asyncpg/core.cp314-win_amd64.pyd +0 -0
  97. sqlspec/adapters/cockroach_asyncpg/core.py +55 -0
  98. sqlspec/adapters/cockroach_asyncpg/data_dictionary.py +110 -0
  99. sqlspec/adapters/cockroach_asyncpg/driver.py +142 -0
  100. sqlspec/adapters/cockroach_asyncpg/events/__init__.py +3 -0
  101. sqlspec/adapters/cockroach_asyncpg/events/store.py +20 -0
  102. sqlspec/adapters/cockroach_asyncpg/litestar/__init__.py +3 -0
  103. sqlspec/adapters/cockroach_asyncpg/litestar/store.py +142 -0
  104. sqlspec/adapters/cockroach_psycopg/__init__.py +39 -0
  105. sqlspec/adapters/cockroach_psycopg/_typing.py +137 -0
  106. sqlspec/adapters/cockroach_psycopg/adk/__init__.py +13 -0
  107. sqlspec/adapters/cockroach_psycopg/adk/store.py +1039 -0
  108. sqlspec/adapters/cockroach_psycopg/config.py +511 -0
  109. sqlspec/adapters/cockroach_psycopg/core.cp314-win_amd64.pyd +0 -0
  110. sqlspec/adapters/cockroach_psycopg/core.py +63 -0
  111. sqlspec/adapters/cockroach_psycopg/data_dictionary.py +220 -0
  112. sqlspec/adapters/cockroach_psycopg/driver.py +273 -0
  113. sqlspec/adapters/cockroach_psycopg/events/__init__.py +6 -0
  114. sqlspec/adapters/cockroach_psycopg/events/store.py +34 -0
  115. sqlspec/adapters/cockroach_psycopg/litestar/__init__.py +3 -0
  116. sqlspec/adapters/cockroach_psycopg/litestar/store.py +327 -0
  117. sqlspec/adapters/duckdb/__init__.py +29 -0
  118. sqlspec/adapters/duckdb/_typing.py +104 -0
  119. sqlspec/adapters/duckdb/adk/__init__.py +14 -0
  120. sqlspec/adapters/duckdb/adk/store.py +935 -0
  121. sqlspec/adapters/duckdb/config.py +386 -0
  122. sqlspec/adapters/duckdb/core.cp314-win_amd64.pyd +0 -0
  123. sqlspec/adapters/duckdb/core.py +332 -0
  124. sqlspec/adapters/duckdb/data_dictionary.py +140 -0
  125. sqlspec/adapters/duckdb/driver.py +426 -0
  126. sqlspec/adapters/duckdb/events/__init__.py +5 -0
  127. sqlspec/adapters/duckdb/events/store.py +57 -0
  128. sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
  129. sqlspec/adapters/duckdb/litestar/store.py +330 -0
  130. sqlspec/adapters/duckdb/pool.cp314-win_amd64.pyd +0 -0
  131. sqlspec/adapters/duckdb/pool.py +350 -0
  132. sqlspec/adapters/duckdb/type_converter.cp314-win_amd64.pyd +0 -0
  133. sqlspec/adapters/duckdb/type_converter.py +118 -0
  134. sqlspec/adapters/mysqlconnector/__init__.py +39 -0
  135. sqlspec/adapters/mysqlconnector/_typing.py +186 -0
  136. sqlspec/adapters/mysqlconnector/adk/__init__.py +15 -0
  137. sqlspec/adapters/mysqlconnector/adk/store.py +1183 -0
  138. sqlspec/adapters/mysqlconnector/config.py +421 -0
  139. sqlspec/adapters/mysqlconnector/core.cp314-win_amd64.pyd +0 -0
  140. sqlspec/adapters/mysqlconnector/core.py +472 -0
  141. sqlspec/adapters/mysqlconnector/data_dictionary.py +230 -0
  142. sqlspec/adapters/mysqlconnector/driver.py +516 -0
  143. sqlspec/adapters/mysqlconnector/events/__init__.py +8 -0
  144. sqlspec/adapters/mysqlconnector/events/store.py +98 -0
  145. sqlspec/adapters/mysqlconnector/litestar/__init__.py +5 -0
  146. sqlspec/adapters/mysqlconnector/litestar/store.py +426 -0
  147. sqlspec/adapters/oracledb/__init__.py +39 -0
  148. sqlspec/adapters/oracledb/_json_handlers.cp314-win_amd64.pyd +0 -0
  149. sqlspec/adapters/oracledb/_json_handlers.py +196 -0
  150. sqlspec/adapters/oracledb/_param_types.cp314-win_amd64.pyd +0 -0
  151. sqlspec/adapters/oracledb/_param_types.py +46 -0
  152. sqlspec/adapters/oracledb/_typing.py +258 -0
  153. sqlspec/adapters/oracledb/_uuid_handlers.cp314-win_amd64.pyd +0 -0
  154. sqlspec/adapters/oracledb/_uuid_handlers.py +163 -0
  155. sqlspec/adapters/oracledb/_vector_handlers.cp314-win_amd64.pyd +0 -0
  156. sqlspec/adapters/oracledb/_vector_handlers.py +228 -0
  157. sqlspec/adapters/oracledb/adk/__init__.py +21 -0
  158. sqlspec/adapters/oracledb/adk/store.py +2453 -0
  159. sqlspec/adapters/oracledb/config.py +575 -0
  160. sqlspec/adapters/oracledb/core.cp314-win_amd64.pyd +0 -0
  161. sqlspec/adapters/oracledb/core.py +820 -0
  162. sqlspec/adapters/oracledb/data_dictionary.py +404 -0
  163. sqlspec/adapters/oracledb/driver.py +1277 -0
  164. sqlspec/adapters/oracledb/events/__init__.py +16 -0
  165. sqlspec/adapters/oracledb/events/_hub.py +345 -0
  166. sqlspec/adapters/oracledb/events/backend.py +300 -0
  167. sqlspec/adapters/oracledb/events/store.py +420 -0
  168. sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
  169. sqlspec/adapters/oracledb/litestar/store.py +781 -0
  170. sqlspec/adapters/oracledb/migrations.py +539 -0
  171. sqlspec/adapters/oracledb/type_converter.cp314-win_amd64.pyd +0 -0
  172. sqlspec/adapters/oracledb/type_converter.py +211 -0
  173. sqlspec/adapters/psqlpy/__init__.py +18 -0
  174. sqlspec/adapters/psqlpy/_typing.py +121 -0
  175. sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
  176. sqlspec/adapters/psqlpy/adk/store.py +591 -0
  177. sqlspec/adapters/psqlpy/config.py +376 -0
  178. sqlspec/adapters/psqlpy/core.cp314-win_amd64.pyd +0 -0
  179. sqlspec/adapters/psqlpy/core.py +694 -0
  180. sqlspec/adapters/psqlpy/data_dictionary.py +121 -0
  181. sqlspec/adapters/psqlpy/driver.py +411 -0
  182. sqlspec/adapters/psqlpy/events/__init__.py +6 -0
  183. sqlspec/adapters/psqlpy/events/_hub.py +204 -0
  184. sqlspec/adapters/psqlpy/events/backend.py +210 -0
  185. sqlspec/adapters/psqlpy/events/store.py +20 -0
  186. sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
  187. sqlspec/adapters/psqlpy/litestar/store.py +270 -0
  188. sqlspec/adapters/psqlpy/type_converter.cp314-win_amd64.pyd +0 -0
  189. sqlspec/adapters/psqlpy/type_converter.py +113 -0
  190. sqlspec/adapters/psycopg/__init__.py +38 -0
  191. sqlspec/adapters/psycopg/_typing.py +218 -0
  192. sqlspec/adapters/psycopg/adk/__init__.py +10 -0
  193. sqlspec/adapters/psycopg/adk/store.py +1106 -0
  194. sqlspec/adapters/psycopg/config.py +695 -0
  195. sqlspec/adapters/psycopg/core.cp314-win_amd64.pyd +0 -0
  196. sqlspec/adapters/psycopg/core.py +520 -0
  197. sqlspec/adapters/psycopg/data_dictionary.py +278 -0
  198. sqlspec/adapters/psycopg/driver.py +1033 -0
  199. sqlspec/adapters/psycopg/events/__init__.py +20 -0
  200. sqlspec/adapters/psycopg/events/_hub.py +388 -0
  201. sqlspec/adapters/psycopg/events/backend.py +398 -0
  202. sqlspec/adapters/psycopg/events/store.py +42 -0
  203. sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
  204. sqlspec/adapters/psycopg/litestar/store.py +554 -0
  205. sqlspec/adapters/psycopg/type_converter.cp314-win_amd64.pyd +0 -0
  206. sqlspec/adapters/psycopg/type_converter.py +93 -0
  207. sqlspec/adapters/pymysql/__init__.py +21 -0
  208. sqlspec/adapters/pymysql/_typing.py +92 -0
  209. sqlspec/adapters/pymysql/adk/__init__.py +5 -0
  210. sqlspec/adapters/pymysql/adk/store.py +657 -0
  211. sqlspec/adapters/pymysql/config.py +176 -0
  212. sqlspec/adapters/pymysql/core.cp314-win_amd64.pyd +0 -0
  213. sqlspec/adapters/pymysql/core.py +469 -0
  214. sqlspec/adapters/pymysql/data_dictionary.py +120 -0
  215. sqlspec/adapters/pymysql/driver.py +271 -0
  216. sqlspec/adapters/pymysql/events/__init__.py +5 -0
  217. sqlspec/adapters/pymysql/events/store.py +50 -0
  218. sqlspec/adapters/pymysql/litestar/__init__.py +5 -0
  219. sqlspec/adapters/pymysql/litestar/store.py +232 -0
  220. sqlspec/adapters/pymysql/pool.cp314-win_amd64.pyd +0 -0
  221. sqlspec/adapters/pymysql/pool.py +184 -0
  222. sqlspec/adapters/spanner/__init__.py +33 -0
  223. sqlspec/adapters/spanner/_typing.py +102 -0
  224. sqlspec/adapters/spanner/adk/__init__.py +5 -0
  225. sqlspec/adapters/spanner/adk/store.py +758 -0
  226. sqlspec/adapters/spanner/config.py +355 -0
  227. sqlspec/adapters/spanner/core.cp314-win_amd64.pyd +0 -0
  228. sqlspec/adapters/spanner/core.py +263 -0
  229. sqlspec/adapters/spanner/data_dictionary.py +120 -0
  230. sqlspec/adapters/spanner/driver.py +407 -0
  231. sqlspec/adapters/spanner/events/__init__.py +5 -0
  232. sqlspec/adapters/spanner/events/store.py +187 -0
  233. sqlspec/adapters/spanner/litestar/__init__.py +5 -0
  234. sqlspec/adapters/spanner/litestar/store.py +291 -0
  235. sqlspec/adapters/spanner/type_converter.cp314-win_amd64.pyd +0 -0
  236. sqlspec/adapters/spanner/type_converter.py +342 -0
  237. sqlspec/adapters/sqlite/__init__.py +19 -0
  238. sqlspec/adapters/sqlite/_typing.py +123 -0
  239. sqlspec/adapters/sqlite/adk/__init__.py +5 -0
  240. sqlspec/adapters/sqlite/adk/store.py +992 -0
  241. sqlspec/adapters/sqlite/config.py +240 -0
  242. sqlspec/adapters/sqlite/core.cp314-win_amd64.pyd +0 -0
  243. sqlspec/adapters/sqlite/core.py +357 -0
  244. sqlspec/adapters/sqlite/data_dictionary.py +198 -0
  245. sqlspec/adapters/sqlite/driver.py +527 -0
  246. sqlspec/adapters/sqlite/events/__init__.py +5 -0
  247. sqlspec/adapters/sqlite/events/store.py +20 -0
  248. sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
  249. sqlspec/adapters/sqlite/litestar/store.py +316 -0
  250. sqlspec/adapters/sqlite/pool.cp314-win_amd64.pyd +0 -0
  251. sqlspec/adapters/sqlite/pool.py +237 -0
  252. sqlspec/adapters/sqlite/type_converter.cp314-win_amd64.pyd +0 -0
  253. sqlspec/adapters/sqlite/type_converter.py +114 -0
  254. sqlspec/base.py +832 -0
  255. sqlspec/builder/__init__.py +181 -0
  256. sqlspec/builder/_base.cp314-win_amd64.pyd +0 -0
  257. sqlspec/builder/_base.py +1071 -0
  258. sqlspec/builder/_column.cp314-win_amd64.pyd +0 -0
  259. sqlspec/builder/_column.py +521 -0
  260. sqlspec/builder/_ddl.cp314-win_amd64.pyd +0 -0
  261. sqlspec/builder/_ddl.py +1691 -0
  262. sqlspec/builder/_delete.cp314-win_amd64.pyd +0 -0
  263. sqlspec/builder/_delete.py +95 -0
  264. sqlspec/builder/_dml.cp314-win_amd64.pyd +0 -0
  265. sqlspec/builder/_dml.py +386 -0
  266. sqlspec/builder/_explain.cp314-win_amd64.pyd +0 -0
  267. sqlspec/builder/_explain.py +579 -0
  268. sqlspec/builder/_expression_wrappers.cp314-win_amd64.pyd +0 -0
  269. sqlspec/builder/_expression_wrappers.py +46 -0
  270. sqlspec/builder/_factory.cp314-win_amd64.pyd +0 -0
  271. sqlspec/builder/_factory.py +1884 -0
  272. sqlspec/builder/_insert.cp314-win_amd64.pyd +0 -0
  273. sqlspec/builder/_insert.py +405 -0
  274. sqlspec/builder/_join.cp314-win_amd64.pyd +0 -0
  275. sqlspec/builder/_join.py +489 -0
  276. sqlspec/builder/_merge.cp314-win_amd64.pyd +0 -0
  277. sqlspec/builder/_merge.py +823 -0
  278. sqlspec/builder/_parsing_utils.cp314-win_amd64.pyd +0 -0
  279. sqlspec/builder/_parsing_utils.py +295 -0
  280. sqlspec/builder/_select.cp314-win_amd64.pyd +0 -0
  281. sqlspec/builder/_select.py +1666 -0
  282. sqlspec/builder/_temporal.cp314-win_amd64.pyd +0 -0
  283. sqlspec/builder/_temporal.py +167 -0
  284. sqlspec/builder/_update.cp314-win_amd64.pyd +0 -0
  285. sqlspec/builder/_update.py +173 -0
  286. sqlspec/builder/_vector_distance.cp314-win_amd64.pyd +0 -0
  287. sqlspec/builder/_vector_distance.py +330 -0
  288. sqlspec/cli.py +1095 -0
  289. sqlspec/config.py +2383 -0
  290. sqlspec/core/__init__.py +372 -0
  291. sqlspec/core/_correlation.cp314-win_amd64.pyd +0 -0
  292. sqlspec/core/_correlation.py +176 -0
  293. sqlspec/core/_pagination.py +42 -0
  294. sqlspec/core/_pool.cp314-win_amd64.pyd +0 -0
  295. sqlspec/core/_pool.py +76 -0
  296. sqlspec/core/cache.cp314-win_amd64.pyd +0 -0
  297. sqlspec/core/cache.py +1085 -0
  298. sqlspec/core/compiler.cp314-win_amd64.pyd +0 -0
  299. sqlspec/core/compiler.py +1090 -0
  300. sqlspec/core/config_runtime.cp314-win_amd64.pyd +0 -0
  301. sqlspec/core/config_runtime.py +174 -0
  302. sqlspec/core/explain.cp314-win_amd64.pyd +0 -0
  303. sqlspec/core/explain.py +275 -0
  304. sqlspec/core/filters.cp314-win_amd64.pyd +0 -0
  305. sqlspec/core/filters.py +969 -0
  306. sqlspec/core/hashing.cp314-win_amd64.pyd +0 -0
  307. sqlspec/core/hashing.py +266 -0
  308. sqlspec/core/metrics.cp314-win_amd64.pyd +0 -0
  309. sqlspec/core/metrics.py +83 -0
  310. sqlspec/core/parameters/__init__.py +72 -0
  311. sqlspec/core/parameters/_alignment.cp314-win_amd64.pyd +0 -0
  312. sqlspec/core/parameters/_alignment.py +283 -0
  313. sqlspec/core/parameters/_converter.cp314-win_amd64.pyd +0 -0
  314. sqlspec/core/parameters/_converter.py +554 -0
  315. sqlspec/core/parameters/_processor.cp314-win_amd64.pyd +0 -0
  316. sqlspec/core/parameters/_processor.py +1182 -0
  317. sqlspec/core/parameters/_registry.cp314-win_amd64.pyd +0 -0
  318. sqlspec/core/parameters/_registry.py +206 -0
  319. sqlspec/core/parameters/_transformers.cp314-win_amd64.pyd +0 -0
  320. sqlspec/core/parameters/_transformers.py +324 -0
  321. sqlspec/core/parameters/_types.cp314-win_amd64.pyd +0 -0
  322. sqlspec/core/parameters/_types.py +536 -0
  323. sqlspec/core/parameters/_validator.cp314-win_amd64.pyd +0 -0
  324. sqlspec/core/parameters/_validator.py +171 -0
  325. sqlspec/core/pipeline.cp314-win_amd64.pyd +0 -0
  326. sqlspec/core/pipeline.py +333 -0
  327. sqlspec/core/query_modifiers.cp314-win_amd64.pyd +0 -0
  328. sqlspec/core/query_modifiers.py +508 -0
  329. sqlspec/core/result/__init__.py +25 -0
  330. sqlspec/core/result/_base.cp314-win_amd64.pyd +0 -0
  331. sqlspec/core/result/_base.py +1232 -0
  332. sqlspec/core/result/_io.cp314-win_amd64.pyd +0 -0
  333. sqlspec/core/result/_io.py +28 -0
  334. sqlspec/core/splitter.cp314-win_amd64.pyd +0 -0
  335. sqlspec/core/splitter.py +1021 -0
  336. sqlspec/core/sqlcommenter.cp314-win_amd64.pyd +0 -0
  337. sqlspec/core/sqlcommenter.py +249 -0
  338. sqlspec/core/stack.cp314-win_amd64.pyd +0 -0
  339. sqlspec/core/stack.py +163 -0
  340. sqlspec/core/statement.cp314-win_amd64.pyd +0 -0
  341. sqlspec/core/statement.py +1865 -0
  342. sqlspec/core/type_converter.cp314-win_amd64.pyd +0 -0
  343. sqlspec/core/type_converter.py +340 -0
  344. sqlspec/data_dictionary/__init__.py +22 -0
  345. sqlspec/data_dictionary/_loader.cp314-win_amd64.pyd +0 -0
  346. sqlspec/data_dictionary/_loader.py +138 -0
  347. sqlspec/data_dictionary/_registry.cp314-win_amd64.pyd +0 -0
  348. sqlspec/data_dictionary/_registry.py +74 -0
  349. sqlspec/data_dictionary/_types.cp314-win_amd64.pyd +0 -0
  350. sqlspec/data_dictionary/_types.py +121 -0
  351. sqlspec/data_dictionary/dialects/__init__.py +21 -0
  352. sqlspec/data_dictionary/dialects/bigquery.cp314-win_amd64.pyd +0 -0
  353. sqlspec/data_dictionary/dialects/bigquery.py +81 -0
  354. sqlspec/data_dictionary/dialects/cockroachdb.cp314-win_amd64.pyd +0 -0
  355. sqlspec/data_dictionary/dialects/cockroachdb.py +54 -0
  356. sqlspec/data_dictionary/dialects/duckdb.cp314-win_amd64.pyd +0 -0
  357. sqlspec/data_dictionary/dialects/duckdb.py +47 -0
  358. sqlspec/data_dictionary/dialects/mysql.cp314-win_amd64.pyd +0 -0
  359. sqlspec/data_dictionary/dialects/mysql.py +53 -0
  360. sqlspec/data_dictionary/dialects/oracle.cp314-win_amd64.pyd +0 -0
  361. sqlspec/data_dictionary/dialects/oracle.py +197 -0
  362. sqlspec/data_dictionary/dialects/postgres.cp314-win_amd64.pyd +0 -0
  363. sqlspec/data_dictionary/dialects/postgres.py +69 -0
  364. sqlspec/data_dictionary/dialects/spanner.cp314-win_amd64.pyd +0 -0
  365. sqlspec/data_dictionary/dialects/spanner.py +37 -0
  366. sqlspec/data_dictionary/dialects/sqlite.cp314-win_amd64.pyd +0 -0
  367. sqlspec/data_dictionary/dialects/sqlite.py +59 -0
  368. sqlspec/data_dictionary/sql/.gitkeep +0 -0
  369. sqlspec/data_dictionary/sql/bigquery/columns.sql +23 -0
  370. sqlspec/data_dictionary/sql/bigquery/foreign_keys.sql +34 -0
  371. sqlspec/data_dictionary/sql/bigquery/indexes.sql +19 -0
  372. sqlspec/data_dictionary/sql/bigquery/tables.sql +33 -0
  373. sqlspec/data_dictionary/sql/bigquery/version.sql +3 -0
  374. sqlspec/data_dictionary/sql/cockroachdb/columns.sql +34 -0
  375. sqlspec/data_dictionary/sql/cockroachdb/foreign_keys.sql +40 -0
  376. sqlspec/data_dictionary/sql/cockroachdb/indexes.sql +32 -0
  377. sqlspec/data_dictionary/sql/cockroachdb/tables.sql +44 -0
  378. sqlspec/data_dictionary/sql/cockroachdb/version.sql +3 -0
  379. sqlspec/data_dictionary/sql/duckdb/columns.sql +23 -0
  380. sqlspec/data_dictionary/sql/duckdb/foreign_keys.sql +36 -0
  381. sqlspec/data_dictionary/sql/duckdb/indexes.sql +19 -0
  382. sqlspec/data_dictionary/sql/duckdb/tables.sql +38 -0
  383. sqlspec/data_dictionary/sql/duckdb/version.sql +3 -0
  384. sqlspec/data_dictionary/sql/mysql/columns.sql +23 -0
  385. sqlspec/data_dictionary/sql/mysql/foreign_keys.sql +28 -0
  386. sqlspec/data_dictionary/sql/mysql/indexes.sql +26 -0
  387. sqlspec/data_dictionary/sql/mysql/tables.sql +33 -0
  388. sqlspec/data_dictionary/sql/mysql/version.sql +3 -0
  389. sqlspec/data_dictionary/sql/oracle/columns.sql +23 -0
  390. sqlspec/data_dictionary/sql/oracle/foreign_keys.sql +48 -0
  391. sqlspec/data_dictionary/sql/oracle/indexes.sql +44 -0
  392. sqlspec/data_dictionary/sql/oracle/tables.sql +25 -0
  393. sqlspec/data_dictionary/sql/oracle/version.sql +20 -0
  394. sqlspec/data_dictionary/sql/postgres/columns.sql +34 -0
  395. sqlspec/data_dictionary/sql/postgres/foreign_keys.sql +40 -0
  396. sqlspec/data_dictionary/sql/postgres/indexes.sql +56 -0
  397. sqlspec/data_dictionary/sql/postgres/tables.sql +44 -0
  398. sqlspec/data_dictionary/sql/postgres/version.sql +3 -0
  399. sqlspec/data_dictionary/sql/spanner/columns.sql +23 -0
  400. sqlspec/data_dictionary/sql/spanner/foreign_keys.sql +70 -0
  401. sqlspec/data_dictionary/sql/spanner/indexes.sql +30 -0
  402. sqlspec/data_dictionary/sql/spanner/tables.sql +9 -0
  403. sqlspec/data_dictionary/sql/spanner/version.sql +3 -0
  404. sqlspec/data_dictionary/sql/sqlite/columns.sql +23 -0
  405. sqlspec/data_dictionary/sql/sqlite/foreign_keys.sql +22 -0
  406. sqlspec/data_dictionary/sql/sqlite/indexes.sql +7 -0
  407. sqlspec/data_dictionary/sql/sqlite/tables.sql +28 -0
  408. sqlspec/data_dictionary/sql/sqlite/version.sql +3 -0
  409. sqlspec/dialects/__init__.py +22 -0
  410. sqlspec/dialects/_compat.cp314-win_amd64.pyd +0 -0
  411. sqlspec/dialects/_compat.py +14 -0
  412. sqlspec/dialects/postgres/__init__.py +9 -0
  413. sqlspec/dialects/postgres/_generators.cp314-win_amd64.pyd +0 -0
  414. sqlspec/dialects/postgres/_generators.py +57 -0
  415. sqlspec/dialects/postgres/_operators.cp314-win_amd64.pyd +0 -0
  416. sqlspec/dialects/postgres/_operators.py +81 -0
  417. sqlspec/dialects/postgres/_paradedb.py +50 -0
  418. sqlspec/dialects/postgres/_pgvector.py +36 -0
  419. sqlspec/dialects/spanner/__init__.py +6 -0
  420. sqlspec/dialects/spanner/_generators.cp314-win_amd64.pyd +0 -0
  421. sqlspec/dialects/spanner/_generators.py +206 -0
  422. sqlspec/dialects/spanner/_spangres.py +77 -0
  423. sqlspec/dialects/spanner/_spanner.py +179 -0
  424. sqlspec/driver/__init__.py +49 -0
  425. sqlspec/driver/_async.cp314-win_amd64.pyd +0 -0
  426. sqlspec/driver/_async.py +1830 -0
  427. sqlspec/driver/_common.cp314-win_amd64.pyd +0 -0
  428. sqlspec/driver/_common.py +2292 -0
  429. sqlspec/driver/_exception_handler.cp314-win_amd64.pyd +0 -0
  430. sqlspec/driver/_exception_handler.py +108 -0
  431. sqlspec/driver/_query_cache.cp314-win_amd64.pyd +0 -0
  432. sqlspec/driver/_query_cache.py +96 -0
  433. sqlspec/driver/_sql_helpers.cp314-win_amd64.pyd +0 -0
  434. sqlspec/driver/_sql_helpers.py +139 -0
  435. sqlspec/driver/_storage_helpers.cp314-win_amd64.pyd +0 -0
  436. sqlspec/driver/_storage_helpers.py +153 -0
  437. sqlspec/driver/_sync.cp314-win_amd64.pyd +0 -0
  438. sqlspec/driver/_sync.py +1817 -0
  439. sqlspec/exceptions.cp314-win_amd64.pyd +0 -0
  440. sqlspec/exceptions.py +480 -0
  441. sqlspec/extensions/__init__.py +0 -0
  442. sqlspec/extensions/adk/__init__.py +84 -0
  443. sqlspec/extensions/adk/_config_utils.py +199 -0
  444. sqlspec/extensions/adk/_types.cp314-win_amd64.pyd +0 -0
  445. sqlspec/extensions/adk/_types.py +41 -0
  446. sqlspec/extensions/adk/artifact/__init__.py +57 -0
  447. sqlspec/extensions/adk/artifact/_types.cp314-win_amd64.pyd +0 -0
  448. sqlspec/extensions/adk/artifact/_types.py +32 -0
  449. sqlspec/extensions/adk/artifact/service.py +508 -0
  450. sqlspec/extensions/adk/artifact/store.py +361 -0
  451. sqlspec/extensions/adk/converters.py +212 -0
  452. sqlspec/extensions/adk/memory/__init__.py +69 -0
  453. sqlspec/extensions/adk/memory/_types.cp314-win_amd64.pyd +0 -0
  454. sqlspec/extensions/adk/memory/_types.py +30 -0
  455. sqlspec/extensions/adk/memory/converters.py +225 -0
  456. sqlspec/extensions/adk/memory/service.py +316 -0
  457. sqlspec/extensions/adk/memory/store.py +525 -0
  458. sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +184 -0
  459. sqlspec/extensions/adk/migrations/__init__.py +0 -0
  460. sqlspec/extensions/adk/service.py +279 -0
  461. sqlspec/extensions/adk/store.py +590 -0
  462. sqlspec/extensions/events/__init__.py +51 -0
  463. sqlspec/extensions/events/_channel.py +703 -0
  464. sqlspec/extensions/events/_hints.cp314-win_amd64.pyd +0 -0
  465. sqlspec/extensions/events/_hints.py +45 -0
  466. sqlspec/extensions/events/_models.py +23 -0
  467. sqlspec/extensions/events/_payload.cp314-win_amd64.pyd +0 -0
  468. sqlspec/extensions/events/_payload.py +69 -0
  469. sqlspec/extensions/events/_protocols.py +134 -0
  470. sqlspec/extensions/events/_queue.py +462 -0
  471. sqlspec/extensions/events/_store.py +209 -0
  472. sqlspec/extensions/events/migrations/0001_create_event_queue.py +59 -0
  473. sqlspec/extensions/events/migrations/__init__.py +3 -0
  474. sqlspec/extensions/fastapi/__init__.py +22 -0
  475. sqlspec/extensions/fastapi/extension.py +391 -0
  476. sqlspec/extensions/fastapi/providers.cp314-win_amd64.pyd +0 -0
  477. sqlspec/extensions/fastapi/providers.py +712 -0
  478. sqlspec/extensions/flask/__init__.py +38 -0
  479. sqlspec/extensions/flask/_state.py +87 -0
  480. sqlspec/extensions/flask/_utils.py +71 -0
  481. sqlspec/extensions/flask/extension.py +539 -0
  482. sqlspec/extensions/litestar/__init__.py +31 -0
  483. sqlspec/extensions/litestar/_utils.py +52 -0
  484. sqlspec/extensions/litestar/channels.py +165 -0
  485. sqlspec/extensions/litestar/cli.py +102 -0
  486. sqlspec/extensions/litestar/config.py +90 -0
  487. sqlspec/extensions/litestar/handlers.py +316 -0
  488. sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
  489. sqlspec/extensions/litestar/migrations/__init__.py +3 -0
  490. sqlspec/extensions/litestar/plugin.py +1066 -0
  491. sqlspec/extensions/litestar/providers.cp314-win_amd64.pyd +0 -0
  492. sqlspec/extensions/litestar/providers.py +784 -0
  493. sqlspec/extensions/litestar/store.py +298 -0
  494. sqlspec/extensions/otel/__init__.py +58 -0
  495. sqlspec/extensions/prometheus/__init__.py +113 -0
  496. sqlspec/extensions/sanic/__init__.py +19 -0
  497. sqlspec/extensions/sanic/_state.py +43 -0
  498. sqlspec/extensions/sanic/_utils.py +127 -0
  499. sqlspec/extensions/sanic/extension.py +647 -0
  500. sqlspec/extensions/starlette/__init__.py +22 -0
  501. sqlspec/extensions/starlette/_state.py +42 -0
  502. sqlspec/extensions/starlette/_utils.py +96 -0
  503. sqlspec/extensions/starlette/extension.py +374 -0
  504. sqlspec/extensions/starlette/middleware.py +281 -0
  505. sqlspec/loader.cp314-win_amd64.pyd +0 -0
  506. sqlspec/loader.py +727 -0
  507. sqlspec/migrations/__init__.py +39 -0
  508. sqlspec/migrations/base.cp314-win_amd64.pyd +0 -0
  509. sqlspec/migrations/base.py +862 -0
  510. sqlspec/migrations/commands.py +2151 -0
  511. sqlspec/migrations/context.cp314-win_amd64.pyd +0 -0
  512. sqlspec/migrations/context.py +157 -0
  513. sqlspec/migrations/fix.cp314-win_amd64.pyd +0 -0
  514. sqlspec/migrations/fix.py +204 -0
  515. sqlspec/migrations/loaders.cp314-win_amd64.pyd +0 -0
  516. sqlspec/migrations/loaders.py +443 -0
  517. sqlspec/migrations/runner.cp314-win_amd64.pyd +0 -0
  518. sqlspec/migrations/runner.py +1195 -0
  519. sqlspec/migrations/squash.cp314-win_amd64.pyd +0 -0
  520. sqlspec/migrations/squash.py +490 -0
  521. sqlspec/migrations/templates.cp314-win_amd64.pyd +0 -0
  522. sqlspec/migrations/templates.py +234 -0
  523. sqlspec/migrations/tracker.cp314-win_amd64.pyd +0 -0
  524. sqlspec/migrations/tracker.py +792 -0
  525. sqlspec/migrations/utils.cp314-win_amd64.pyd +0 -0
  526. sqlspec/migrations/utils.py +256 -0
  527. sqlspec/migrations/validation.cp314-win_amd64.pyd +0 -0
  528. sqlspec/migrations/validation.py +359 -0
  529. sqlspec/migrations/version.cp314-win_amd64.pyd +0 -0
  530. sqlspec/migrations/version.py +446 -0
  531. sqlspec/observability/__init__.py +57 -0
  532. sqlspec/observability/_common.cp314-win_amd64.pyd +0 -0
  533. sqlspec/observability/_common.py +77 -0
  534. sqlspec/observability/_config.cp314-win_amd64.pyd +0 -0
  535. sqlspec/observability/_config.py +364 -0
  536. sqlspec/observability/_diagnostics.cp314-win_amd64.pyd +0 -0
  537. sqlspec/observability/_diagnostics.py +74 -0
  538. sqlspec/observability/_dispatcher.cp314-win_amd64.pyd +0 -0
  539. sqlspec/observability/_dispatcher.py +200 -0
  540. sqlspec/observability/_formatters/__init__.py +13 -0
  541. sqlspec/observability/_formatters/_aws.cp314-win_amd64.pyd +0 -0
  542. sqlspec/observability/_formatters/_aws.py +102 -0
  543. sqlspec/observability/_formatters/_azure.cp314-win_amd64.pyd +0 -0
  544. sqlspec/observability/_formatters/_azure.py +96 -0
  545. sqlspec/observability/_formatters/_base.cp314-win_amd64.pyd +0 -0
  546. sqlspec/observability/_formatters/_base.py +57 -0
  547. sqlspec/observability/_formatters/_gcp.cp314-win_amd64.pyd +0 -0
  548. sqlspec/observability/_formatters/_gcp.py +131 -0
  549. sqlspec/observability/_formatting.py +58 -0
  550. sqlspec/observability/_observer.cp314-win_amd64.pyd +0 -0
  551. sqlspec/observability/_observer.py +361 -0
  552. sqlspec/observability/_runtime.cp314-win_amd64.pyd +0 -0
  553. sqlspec/observability/_runtime.py +461 -0
  554. sqlspec/observability/_sampling.cp314-win_amd64.pyd +0 -0
  555. sqlspec/observability/_sampling.py +188 -0
  556. sqlspec/observability/_spans.cp314-win_amd64.pyd +0 -0
  557. sqlspec/observability/_spans.py +161 -0
  558. sqlspec/protocols.py +955 -0
  559. sqlspec/py.typed +0 -0
  560. sqlspec/service.py +433 -0
  561. sqlspec/storage/__init__.py +48 -0
  562. sqlspec/storage/_arrow_payload.py +68 -0
  563. sqlspec/storage/_paths.cp314-win_amd64.pyd +0 -0
  564. sqlspec/storage/_paths.py +58 -0
  565. sqlspec/storage/_utils.py +46 -0
  566. sqlspec/storage/backends/__init__.py +1 -0
  567. sqlspec/storage/backends/base.cp314-win_amd64.pyd +0 -0
  568. sqlspec/storage/backends/base.py +374 -0
  569. sqlspec/storage/backends/fsspec.py +574 -0
  570. sqlspec/storage/backends/local.py +468 -0
  571. sqlspec/storage/backends/obstore.py +956 -0
  572. sqlspec/storage/errors.cp314-win_amd64.pyd +0 -0
  573. sqlspec/storage/errors.py +102 -0
  574. sqlspec/storage/pipeline.cp314-win_amd64.pyd +0 -0
  575. sqlspec/storage/pipeline.py +628 -0
  576. sqlspec/storage/registry.cp314-win_amd64.pyd +0 -0
  577. sqlspec/storage/registry.py +329 -0
  578. sqlspec/typing.py +405 -0
  579. sqlspec/utils/__init__.py +7 -0
  580. sqlspec/utils/arrow_helpers.py +384 -0
  581. sqlspec/utils/config_tools.cp314-win_amd64.pyd +0 -0
  582. sqlspec/utils/config_tools.py +314 -0
  583. sqlspec/utils/correlation.cp314-win_amd64.pyd +0 -0
  584. sqlspec/utils/correlation.py +134 -0
  585. sqlspec/utils/deprecation.cp314-win_amd64.pyd +0 -0
  586. sqlspec/utils/deprecation.py +157 -0
  587. sqlspec/utils/dispatch.cp314-win_amd64.pyd +0 -0
  588. sqlspec/utils/dispatch.py +101 -0
  589. sqlspec/utils/fixtures.cp314-win_amd64.pyd +0 -0
  590. sqlspec/utils/fixtures.py +260 -0
  591. sqlspec/utils/logging.cp314-win_amd64.pyd +0 -0
  592. sqlspec/utils/logging.py +251 -0
  593. sqlspec/utils/module_loader.py +306 -0
  594. sqlspec/utils/portal.cp314-win_amd64.pyd +0 -0
  595. sqlspec/utils/portal.py +377 -0
  596. sqlspec/utils/schema.cp314-win_amd64.pyd +0 -0
  597. sqlspec/utils/schema.py +1040 -0
  598. sqlspec/utils/serializers/__init__.py +30 -0
  599. sqlspec/utils/serializers/_json.cp314-win_amd64.pyd +0 -0
  600. sqlspec/utils/serializers/_json.py +415 -0
  601. sqlspec/utils/serializers/_numpy.cp314-win_amd64.pyd +0 -0
  602. sqlspec/utils/serializers/_numpy.py +65 -0
  603. sqlspec/utils/serializers/_schema.cp314-win_amd64.pyd +0 -0
  604. sqlspec/utils/serializers/_schema.py +285 -0
  605. sqlspec/utils/singleton.cp314-win_amd64.pyd +0 -0
  606. sqlspec/utils/singleton.py +41 -0
  607. sqlspec/utils/sync_tools.cp314-win_amd64.pyd +0 -0
  608. sqlspec/utils/sync_tools.py +316 -0
  609. sqlspec/utils/text.cp314-win_amd64.pyd +0 -0
  610. sqlspec/utils/text.py +109 -0
  611. sqlspec/utils/type_converters.cp314-win_amd64.pyd +0 -0
  612. sqlspec/utils/type_converters.py +216 -0
  613. sqlspec/utils/type_guards.cp314-win_amd64.pyd +0 -0
  614. sqlspec/utils/type_guards.py +1508 -0
  615. sqlspec/utils/uuids.cp314-win_amd64.pyd +0 -0
  616. sqlspec/utils/uuids.py +241 -0
  617. sqlspec-0.47.0.dist-info/METADATA +202 -0
  618. sqlspec-0.47.0.dist-info/RECORD +621 -0
  619. sqlspec-0.47.0.dist-info/WHEEL +4 -0
  620. sqlspec-0.47.0.dist-info/entry_points.txt +6 -0
  621. sqlspec-0.47.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,202 @@
1
+ """SQLite-specific data dictionary for metadata queries via aiosqlite."""
2
+
3
+ from typing import TYPE_CHECKING, ClassVar
4
+
5
+ from mypy_extensions import mypyc_attr
6
+
7
+ from sqlspec.adapters.aiosqlite.core import format_identifier
8
+ from sqlspec.data_dictionary import get_dialect_config
9
+ from sqlspec.data_dictionary.dialects.sqlite import list_sqlite_available_features, resolve_sqlite_json_type
10
+ from sqlspec.driver import AsyncDataDictionaryBase
11
+ from sqlspec.typing import ColumnMetadata, ForeignKeyMetadata, IndexMetadata, TableMetadata, VersionInfo
12
+
13
+ if TYPE_CHECKING:
14
+ from sqlspec.adapters.aiosqlite.driver import AiosqliteDriver
15
+ from sqlspec.data_dictionary._types import DialectConfig
16
+
17
+ __all__ = ("AiosqliteDataDictionary",)
18
+
19
+
20
+ @mypyc_attr(allow_interpreted_subclasses=True, native_class=False)
21
+ class AiosqliteDataDictionary(AsyncDataDictionaryBase):
22
+ """SQLite-specific async data dictionary."""
23
+
24
+ dialect: ClassVar[str] = "sqlite"
25
+
26
+ def __init__(self) -> None:
27
+ super().__init__()
28
+
29
+ def get_dialect_config(self) -> "DialectConfig":
30
+ """Return the dialect configuration for this data dictionary."""
31
+ return get_dialect_config(type(self).dialect)
32
+
33
+ def resolve_schema(self, schema: "str | None") -> "str | None":
34
+ """Return a schema name using dialect defaults when missing."""
35
+ if schema is not None:
36
+ return schema
37
+ return self.get_dialect_config().default_schema
38
+
39
+ def list_available_features(self) -> "list[str]":
40
+ """List available feature flags for this dialect."""
41
+ return list_sqlite_available_features()
42
+
43
+ async def get_version(self, driver: "AiosqliteDriver") -> "VersionInfo | None":
44
+ """Get SQLite database version information.
45
+
46
+ Args:
47
+ driver: Async database driver instance.
48
+
49
+ Returns:
50
+ SQLite version information or None if detection fails.
51
+
52
+ """
53
+ driver_id = id(driver)
54
+ # Inline cache check to avoid cross-module method call that causes mypyc segfault
55
+ if driver_id in self._version_fetch_attempted:
56
+ return self._version_cache.get(driver_id)
57
+ # Not cached, fetch from database
58
+
59
+ version_value = await driver.select_value_or_none(self.get_query("version"))
60
+ if not version_value:
61
+ self._log_version_unavailable(type(self).dialect, "missing")
62
+ self.cache_version(driver_id, None)
63
+ return None
64
+
65
+ version_info = self.parse_version_with_pattern(self.get_dialect_config().version_pattern, str(version_value))
66
+ if version_info is None:
67
+ self._log_version_unavailable(type(self).dialect, "parse_failed")
68
+ self.cache_version(driver_id, None)
69
+ return None
70
+
71
+ self._log_version_detected(type(self).dialect, version_info)
72
+ self.cache_version(driver_id, version_info)
73
+ return version_info
74
+
75
+ async def get_feature_flag(self, driver: "AiosqliteDriver", feature: str) -> bool:
76
+ """Check if SQLite database supports a specific feature.
77
+
78
+ Args:
79
+ driver: Async database driver instance.
80
+ feature: Feature name to check.
81
+
82
+ Returns:
83
+ True if feature is supported, False otherwise.
84
+
85
+ """
86
+ version_info = await self.get_version(driver)
87
+ return self.resolve_feature_flag(feature, version_info)
88
+
89
+ async def get_optimal_type(self, driver: "AiosqliteDriver", type_category: str) -> str:
90
+ """Get optimal SQLite type for a category.
91
+
92
+ Args:
93
+ driver: Async database driver instance.
94
+ type_category: Type category.
95
+
96
+ Returns:
97
+ SQLite-specific type name.
98
+
99
+ """
100
+ config = self.get_dialect_config()
101
+ version_info = await self.get_version(driver)
102
+
103
+ if type_category == "json":
104
+ return resolve_sqlite_json_type(version_info)
105
+
106
+ return config.get_optimal_type(type_category)
107
+
108
+ async def get_tables(self, driver: "AiosqliteDriver", schema: "str | None" = None) -> "list[TableMetadata]":
109
+ """Get tables sorted by topological dependency order using SQLite catalog."""
110
+ schema_name = self.resolve_schema(schema)
111
+ self._log_schema_introspect(driver, schema_name=schema_name, table_name=None, operation="tables")
112
+ schema_prefix = f"{format_identifier(schema_name)}." if schema_name else ""
113
+ query_text = self.get_query_text("tables_by_schema").format(schema_prefix=schema_prefix)
114
+ return await driver.select(query_text, schema_type=TableMetadata)
115
+
116
+ async def get_columns(
117
+ self, driver: "AiosqliteDriver", table: "str | None" = None, schema: "str | None" = None
118
+ ) -> "list[ColumnMetadata]":
119
+ """Get column information for a table or schema."""
120
+ schema_name = self.resolve_schema(schema)
121
+ schema_prefix = f"{format_identifier(schema_name)}." if schema_name else ""
122
+ if table is None:
123
+ self._log_schema_introspect(driver, schema_name=schema_name, table_name=None, operation="columns")
124
+ query_text = self.get_query_text("columns_by_schema").format(schema_prefix=schema_prefix)
125
+ return await driver.select(query_text, schema_type=ColumnMetadata)
126
+
127
+ assert table is not None
128
+ self._log_table_describe(driver, schema_name=schema_name, table_name=table, operation="columns")
129
+ table_name = table
130
+ table_identifier = f"{schema_name}.{table_name}" if schema_name else table_name
131
+ query_text = self.get_query_text("columns_by_table").format(table_name=format_identifier(table_identifier))
132
+ return await driver.select(query_text, schema_type=ColumnMetadata)
133
+
134
+ async def get_indexes(
135
+ self, driver: "AiosqliteDriver", table: "str | None" = None, schema: "str | None" = None
136
+ ) -> "list[IndexMetadata]":
137
+ """Get index metadata for a table or schema."""
138
+ schema_name = self.resolve_schema(schema)
139
+ indexes: list[IndexMetadata] = []
140
+ if table is None:
141
+ self._log_schema_introspect(driver, schema_name=schema_name, table_name=None, operation="indexes")
142
+ for table_info in await self.get_tables(driver, schema=schema_name):
143
+ table_name = table_info.get("table_name")
144
+ if not table_name:
145
+ continue
146
+ indexes.extend(await self.get_indexes(driver, table=table_name, schema=schema_name))
147
+ return indexes
148
+
149
+ assert table is not None
150
+ self._log_table_describe(driver, schema_name=schema_name, table_name=table, operation="indexes")
151
+ table_name = table
152
+ table_identifier = f"{schema_name}.{table_name}" if schema_name else table_name
153
+ index_list_sql = self.get_query_text("indexes_by_table").format(table_name=format_identifier(table_identifier))
154
+ index_rows = await driver.select(index_list_sql)
155
+ for row in index_rows:
156
+ index_name = row.get("name")
157
+ if not index_name:
158
+ continue
159
+ index_identifier = f"{schema_name}.{index_name}" if schema_name else index_name
160
+ columns_sql = self.get_query_text("index_columns_by_index").format(
161
+ index_name=format_identifier(index_identifier)
162
+ )
163
+ columns_rows = await driver.select(columns_sql)
164
+ columns: list[str] = []
165
+ for col in columns_rows:
166
+ column_name = col.get("name")
167
+ if column_name is None:
168
+ continue
169
+ columns.append(str(column_name))
170
+ is_primary = row.get("origin") == "pk"
171
+ index_metadata: IndexMetadata = {
172
+ "index_name": index_name,
173
+ "table_name": table_name,
174
+ "columns": columns,
175
+ "is_primary": is_primary,
176
+ }
177
+ if schema_name is not None:
178
+ index_metadata["schema_name"] = schema_name
179
+ unique_value = row.get("unique")
180
+ if unique_value is not None:
181
+ index_metadata["is_unique"] = unique_value
182
+ indexes.append(index_metadata)
183
+ return indexes
184
+
185
+ async def get_foreign_keys(
186
+ self, driver: "AiosqliteDriver", table: "str | None" = None, schema: "str | None" = None
187
+ ) -> "list[ForeignKeyMetadata]":
188
+ """Get foreign key metadata."""
189
+ schema_name = self.resolve_schema(schema)
190
+ schema_prefix = f"{format_identifier(schema_name)}." if schema_name else ""
191
+ if table is None:
192
+ self._log_schema_introspect(driver, schema_name=schema_name, table_name=None, operation="foreign_keys")
193
+ query_text = self.get_query_text("foreign_keys_by_schema").format(schema_prefix=schema_prefix)
194
+ return await driver.select(query_text, schema_type=ForeignKeyMetadata)
195
+
196
+ self._log_table_describe(driver, schema_name=schema_name, table_name=table, operation="foreign_keys")
197
+ table_label = table.replace("'", "''")
198
+ table_identifier = f"{schema_name}.{table}" if schema_name else table
199
+ query_text = self.get_query_text("foreign_keys_by_table").format(
200
+ table_name=format_identifier(table_identifier), table_label=table_label
201
+ )
202
+ return await driver.select(query_text, schema_type=ForeignKeyMetadata)
@@ -0,0 +1,311 @@
1
+ """AIOSQLite driver implementation for async SQLite operations."""
2
+
3
+ import asyncio
4
+ import random
5
+ import sqlite3
6
+ from typing import TYPE_CHECKING, Any, cast
7
+
8
+ import aiosqlite
9
+
10
+ from sqlspec.adapters.aiosqlite._typing import AiosqliteCursor, AiosqliteRawCursor, AiosqliteSessionContext
11
+ from sqlspec.adapters.aiosqlite.core import (
12
+ build_insert_statement,
13
+ collect_rows,
14
+ create_mapped_exception,
15
+ default_statement_config,
16
+ driver_profile,
17
+ format_identifier,
18
+ normalize_execute_many_parameters,
19
+ normalize_execute_parameters,
20
+ resolve_rowcount,
21
+ )
22
+ from sqlspec.adapters.aiosqlite.data_dictionary import AiosqliteDataDictionary
23
+ from sqlspec.core import ArrowResult, get_cache_config, register_driver_profile
24
+ from sqlspec.driver import AsyncDriverAdapterBase, BaseAsyncExceptionHandler
25
+ from sqlspec.exceptions import SQLSpecError
26
+
27
+ if TYPE_CHECKING:
28
+ from sqlspec.adapters.aiosqlite._typing import AiosqliteConnection
29
+ from sqlspec.core import SQL, StatementConfig
30
+ from sqlspec.driver import ExecutionResult
31
+ from sqlspec.storage import StorageBridgeJob, StorageDestination, StorageFormat, StorageTelemetry
32
+
33
+ __all__ = (
34
+ "AiosqliteCursor",
35
+ "AiosqliteDriver",
36
+ "AiosqliteExceptionHandler",
37
+ "AiosqliteRawCursor",
38
+ "AiosqliteSessionContext",
39
+ )
40
+
41
+ SQLITE_CONSTRAINT_UNIQUE_CODE = 2067
42
+ SQLITE_CONSTRAINT_FOREIGNKEY_CODE = 787
43
+ SQLITE_CONSTRAINT_NOTNULL_CODE = 1811
44
+ SQLITE_CONSTRAINT_CHECK_CODE = 531
45
+ SQLITE_CONSTRAINT_CODE = 19
46
+ SQLITE_CANTOPEN_CODE = 14
47
+ SQLITE_IOERR_CODE = 10
48
+ SQLITE_MISMATCH_CODE = 20
49
+
50
+
51
+ class AiosqliteExceptionHandler(BaseAsyncExceptionHandler):
52
+ """Async context manager for handling aiosqlite database exceptions.
53
+
54
+ Maps SQLite extended result codes to specific SQLSpec exceptions
55
+ for better error handling in application code.
56
+
57
+ Uses deferred exception pattern for mypyc compatibility: exceptions
58
+ are stored in pending_exception rather than raised from __aexit__
59
+ to avoid ABI boundary violations with compiled code.
60
+ """
61
+
62
+ def _handle_exception(self, exc_type: "type[BaseException] | None", exc_val: "BaseException") -> bool:
63
+ _ = exc_type
64
+ if isinstance(exc_val, (aiosqlite.Error, sqlite3.Error)):
65
+ self.pending_exception = create_mapped_exception(exc_val)
66
+ return True
67
+ return False
68
+
69
+
70
+ class AiosqliteDriver(AsyncDriverAdapterBase):
71
+ """AIOSQLite driver for async SQLite database operations."""
72
+
73
+ __slots__ = ("_data_dictionary",)
74
+ dialect = "sqlite"
75
+
76
+ def __init__(
77
+ self,
78
+ connection: "AiosqliteConnection",
79
+ statement_config: "StatementConfig | None" = None,
80
+ driver_features: "dict[str, Any] | None" = None,
81
+ ) -> None:
82
+ if statement_config is None:
83
+ statement_config = default_statement_config.replace(
84
+ enable_caching=get_cache_config().compiled_cache_enabled
85
+ )
86
+
87
+ super().__init__(connection=connection, statement_config=statement_config, driver_features=driver_features)
88
+ self._data_dictionary: AiosqliteDataDictionary | None = None
89
+
90
+ # ─────────────────────────────────────────────────────────────────────────────
91
+ # CORE DISPATCH METHODS
92
+ # ─────────────────────────────────────────────────────────────────────────────
93
+
94
+ async def dispatch_execute(self, cursor: "AiosqliteRawCursor", statement: "SQL") -> "ExecutionResult":
95
+ """Execute single SQL statement."""
96
+ sql, prepared_parameters = self._get_compiled_sql(statement, self.statement_config)
97
+ await cursor.execute(sql, normalize_execute_parameters(prepared_parameters))
98
+
99
+ if statement.returns_rows():
100
+ fetched_data = await cursor.fetchall()
101
+
102
+ # aiosqlite returns Iterable[Row], core helper expects Iterable[Any]
103
+ # Use cast to satisfy mypy and pyright
104
+ data, column_names, row_count = collect_rows(cast("list[Any]", fetched_data), cursor.description)
105
+
106
+ return self.create_execution_result(
107
+ cursor,
108
+ selected_data=data,
109
+ column_names=column_names,
110
+ data_row_count=row_count,
111
+ is_select_result=True,
112
+ row_format="tuple",
113
+ )
114
+
115
+ affected_rows = resolve_rowcount(cursor)
116
+ return self.create_execution_result(cursor, rowcount_override=affected_rows)
117
+
118
+ async def dispatch_execute_many(self, cursor: "AiosqliteRawCursor", statement: "SQL") -> "ExecutionResult":
119
+ """Execute SQL with multiple parameter sets."""
120
+ sql, prepared_parameters = self._get_compiled_sql(statement, self.statement_config)
121
+
122
+ await cursor.executemany(sql, normalize_execute_many_parameters(prepared_parameters))
123
+
124
+ affected_rows = resolve_rowcount(cursor)
125
+
126
+ return self.create_execution_result(cursor, rowcount_override=affected_rows, is_many_result=True)
127
+
128
+ async def dispatch_execute_script(self, cursor: "AiosqliteRawCursor", statement: "SQL") -> "ExecutionResult":
129
+ """Execute SQL script."""
130
+ sql, prepared_parameters = self._get_compiled_sql(statement, self.statement_config)
131
+ statements = self.split_script_statements(sql, statement.statement_config, strip_trailing_semicolon=True)
132
+
133
+ successful_count = 0
134
+ last_cursor = cursor
135
+
136
+ for stmt in statements:
137
+ await cursor.execute(stmt, normalize_execute_parameters(prepared_parameters))
138
+ successful_count += 1
139
+
140
+ return self.create_execution_result(
141
+ last_cursor, statement_count=len(statements), successful_statements=successful_count, is_script_result=True
142
+ )
143
+
144
+ # ─────────────────────────────────────────────────────────────────────────────
145
+ # TRANSACTION MANAGEMENT
146
+ # ─────────────────────────────────────────────────────────────────────────────
147
+
148
+ async def begin(self) -> None:
149
+ """Begin a database transaction."""
150
+ try:
151
+ if not self.connection.in_transaction:
152
+ await self.connection.execute("BEGIN IMMEDIATE")
153
+ except aiosqlite.Error as e:
154
+ max_retries = 3
155
+ for attempt in range(max_retries):
156
+ delay = 0.01 * (2**attempt) + random.uniform(0, 0.01) # noqa: S311
157
+ await asyncio.sleep(delay)
158
+ try:
159
+ await self.connection.execute("BEGIN IMMEDIATE")
160
+ except aiosqlite.Error:
161
+ if attempt == max_retries - 1:
162
+ break
163
+ else:
164
+ return
165
+ msg = f"Failed to begin transaction after retries: {e}"
166
+ raise SQLSpecError(msg) from e
167
+
168
+ async def commit(self) -> None:
169
+ """Commit the current transaction."""
170
+ try:
171
+ await self.connection.commit()
172
+ except aiosqlite.Error as e:
173
+ msg = f"Failed to commit transaction: {e}"
174
+ raise SQLSpecError(msg) from e
175
+
176
+ async def rollback(self) -> None:
177
+ """Rollback the current transaction."""
178
+ try:
179
+ await self.connection.rollback()
180
+ except aiosqlite.Error as e:
181
+ msg = f"Failed to rollback transaction: {e}"
182
+ raise SQLSpecError(msg) from e
183
+
184
+ def with_cursor(self, connection: "AiosqliteConnection") -> "AiosqliteCursor":
185
+ """Create async context manager for AIOSQLite cursor."""
186
+ return AiosqliteCursor(connection)
187
+
188
+ def handle_database_exceptions(self) -> "AiosqliteExceptionHandler":
189
+ """Handle AIOSQLite-specific exceptions."""
190
+ return AiosqliteExceptionHandler()
191
+
192
+ # ─────────────────────────────────────────────────────────────────────────────
193
+ # STORAGE API METHODS
194
+ # ─────────────────────────────────────────────────────────────────────────────
195
+
196
+ async def select_to_storage(
197
+ self,
198
+ statement: "SQL | str",
199
+ destination: "StorageDestination",
200
+ /,
201
+ *parameters: Any,
202
+ statement_config: "StatementConfig | None" = None,
203
+ partitioner: "dict[str, object] | None" = None,
204
+ format_hint: "StorageFormat | None" = None,
205
+ telemetry: "StorageTelemetry | None" = None,
206
+ **kwargs: Any,
207
+ ) -> "StorageBridgeJob":
208
+ """Execute a query and stream Arrow results into storage."""
209
+
210
+ self._require_capability("arrow_export_enabled")
211
+ arrow_result = await self.select_to_arrow(statement, *parameters, statement_config=statement_config, **kwargs)
212
+ async_pipeline = self._storage_pipeline()
213
+ telemetry_payload = await self._write_result_to_storage_async(
214
+ arrow_result, destination, format_hint=format_hint, pipeline=async_pipeline
215
+ )
216
+ self._attach_partition_telemetry(telemetry_payload, partitioner)
217
+ return self._create_storage_job(telemetry_payload, telemetry)
218
+
219
+ async def load_from_arrow(
220
+ self,
221
+ table: str,
222
+ source: "ArrowResult | Any",
223
+ *,
224
+ partitioner: "dict[str, object] | None" = None,
225
+ overwrite: bool = False,
226
+ telemetry: "StorageTelemetry | None" = None,
227
+ ) -> "StorageBridgeJob":
228
+ """Load Arrow data into SQLite using batched inserts."""
229
+
230
+ self._require_capability("arrow_import_enabled")
231
+ arrow_table = self._coerce_arrow_table(source)
232
+ if overwrite:
233
+ statement = f"DELETE FROM {format_identifier(table)}"
234
+ try:
235
+ async with self.with_cursor(self.connection) as cursor:
236
+ await cursor.execute(statement)
237
+ except (aiosqlite.Error, sqlite3.Error) as exc:
238
+ raise create_mapped_exception(exc) from exc
239
+
240
+ columns, records = self._arrow_table_to_rows(arrow_table)
241
+ if records:
242
+ insert_sql = build_insert_statement(table, columns)
243
+ prepared_records = (
244
+ self.prepare_driver_parameters(records, self.statement_config, is_many=True)
245
+ if self._arrow_table_needs_parameter_preparation(arrow_table)
246
+ else records
247
+ )
248
+ try:
249
+ async with self.with_cursor(self.connection) as cursor:
250
+ await cursor.executemany(insert_sql, cast("Any", prepared_records))
251
+ except (aiosqlite.Error, sqlite3.Error) as exc:
252
+ raise create_mapped_exception(exc) from exc
253
+
254
+ telemetry_payload = self._build_ingest_telemetry(arrow_table)
255
+ telemetry_payload["destination"] = table
256
+ self._attach_partition_telemetry(telemetry_payload, partitioner)
257
+ return self._create_storage_job(telemetry_payload, telemetry)
258
+
259
+ async def load_from_storage(
260
+ self,
261
+ table: str,
262
+ source: "StorageDestination",
263
+ *,
264
+ file_format: "StorageFormat",
265
+ partitioner: "dict[str, object] | None" = None,
266
+ overwrite: bool = False,
267
+ ) -> "StorageBridgeJob":
268
+ """Load staged artifacts from storage into SQLite."""
269
+
270
+ arrow_table, inbound = await self._read_arrow_from_storage_async(source, file_format=file_format)
271
+ return await self.load_from_arrow(
272
+ table, arrow_table, partitioner=partitioner, overwrite=overwrite, telemetry=inbound
273
+ )
274
+
275
+ # ─────────────────────────────────────────────────────────────────────────────
276
+ # UTILITY METHODS
277
+ # ─────────────────────────────────────────────────────────────────────────────
278
+
279
+ @property
280
+ def data_dictionary(self) -> "AiosqliteDataDictionary":
281
+ """Get the data dictionary for this driver.
282
+
283
+ Returns:
284
+ Data dictionary instance for metadata queries
285
+ """
286
+ if self._data_dictionary is None:
287
+ self._data_dictionary = AiosqliteDataDictionary()
288
+ return self._data_dictionary
289
+
290
+ # ─────────────────────────────────────────────────────────────────────────────
291
+ # PRIVATE/INTERNAL METHODS
292
+ # ─────────────────────────────────────────────────────────────────────────────
293
+
294
+ def collect_rows(self, cursor: Any, fetched: "list[Any]") -> "tuple[list[Any], list[str], int]":
295
+ """Collect aiosqlite rows for the direct execution path."""
296
+ return collect_rows(fetched, cursor.description)
297
+
298
+ def resolve_rowcount(self, cursor: Any) -> int:
299
+ """Resolve rowcount from aiosqlite cursor for the direct execution path."""
300
+ return resolve_rowcount(cursor)
301
+
302
+ def _connection_in_transaction(self) -> bool:
303
+ """Check if connection is in transaction.
304
+
305
+ Returns:
306
+ True if connection is in an active transaction.
307
+ """
308
+ return bool(self.connection.in_transaction)
309
+
310
+
311
+ register_driver_profile("aiosqlite", driver_profile)
@@ -0,0 +1,5 @@
1
+ """Events helpers for the aiosqlite adapter."""
2
+
3
+ from sqlspec.adapters.aiosqlite.events.store import AiosqliteEventQueueStore
4
+
5
+ __all__ = ("AiosqliteEventQueueStore",)
@@ -0,0 +1,20 @@
1
+ """AioSQLite event queue store."""
2
+
3
+ from sqlspec.adapters.aiosqlite.config import AiosqliteConfig
4
+ from sqlspec.extensions.events import BaseEventQueueStore
5
+
6
+ __all__ = ("AiosqliteEventQueueStore",)
7
+
8
+
9
+ class AiosqliteEventQueueStore(BaseEventQueueStore[AiosqliteConfig]):
10
+ """Provide column definitions for the async SQLite adapter.
11
+
12
+ SQLite stores JSON as TEXT since it lacks a native JSON column type.
13
+ JSON functions can still operate on TEXT columns containing valid JSON.
14
+ """
15
+
16
+ __slots__ = ()
17
+
18
+ def _column_types(self) -> "tuple[str, str, str]":
19
+ """Return SQLite-compatible column types for the event queue."""
20
+ return "TEXT", "TEXT", "TIMESTAMP"
@@ -0,0 +1,5 @@
1
+ """Litestar integration for AioSQLite adapter."""
2
+
3
+ from sqlspec.adapters.aiosqlite.litestar.store import AiosqliteStore
4
+
5
+ __all__ = ("AiosqliteStore",)