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,536 @@
1
+ """Core parameter data structures and utilities."""
2
+
3
+ from collections.abc import Callable, Collection, Generator, Iterable, Mapping, Sequence
4
+ from datetime import date, datetime, time
5
+ from decimal import Decimal
6
+ from enum import Enum
7
+ from functools import singledispatch
8
+ from types import MappingProxyType
9
+ from typing import Any, Literal, TypeAlias
10
+
11
+ from mypy_extensions import mypyc_attr
12
+
13
+ __all__ = (
14
+ "ConvertedParameters",
15
+ "DriverParameterProfile",
16
+ "NamedParameterOutput",
17
+ "ParameterInfo",
18
+ "ParameterMapping",
19
+ "ParameterPayload",
20
+ "ParameterProcessingResult",
21
+ "ParameterProfile",
22
+ "ParameterSequence",
23
+ "ParameterStyle",
24
+ "ParameterStyleConfig",
25
+ "PositionalParameterOutput",
26
+ "TypedParameter",
27
+ "is_iterable_parameters",
28
+ "wrap_with_type",
29
+ )
30
+
31
+
32
+ ParameterMapping: TypeAlias = "Mapping[str, object]"
33
+ """Type alias for mapping-based parameter payloads."""
34
+
35
+
36
+ ParameterSequence: TypeAlias = "Sequence[object]"
37
+ """Type alias for sequence-based parameter payloads."""
38
+
39
+
40
+ ParameterPayload: TypeAlias = "ParameterMapping | ParameterSequence | object | None"
41
+ """Type alias for parameter payloads accepted by the processing pipeline."""
42
+
43
+
44
+ ConvertedParameters: TypeAlias = "dict[str, Any] | list[Any] | tuple[Any, ...] | None"
45
+ """Type alias for parameters after conversion to driver-consumable format.
46
+
47
+ This type represents the concrete output of parameter conversion functions.
48
+ Unlike :data:`ParameterPayload` (which represents inputs and can include abstract
49
+ Mapping/Sequence types), :data:`ConvertedParameters` only includes concrete types
50
+ that database drivers can directly consume.
51
+
52
+ The union includes:
53
+
54
+ - ``dict[str, Any]``: Named parameters (e.g., ``{"name": "Alice", "age": 30}``)
55
+ - ``list[Any]``: Positional parameters as list (e.g., ``["Alice", 30]``)
56
+ - ``tuple[Any, ...]``: Positional parameters as tuple (e.g., ``("Alice", 30)``)
57
+ - ``None``: When parameters are statically embedded in SQL string
58
+ """
59
+
60
+
61
+ PositionalParameterOutput: TypeAlias = "list[Any] | tuple[Any, ...]"
62
+ """Type alias for positional-only parameter outputs.
63
+
64
+ Used when a function is known to return only positional (not named) parameters.
65
+ This is narrower than :data:`ConvertedParameters` and excludes ``dict`` and ``None``.
66
+ """
67
+
68
+
69
+ NamedParameterOutput: TypeAlias = "dict[str, Any]"
70
+ """Type alias for named-only parameter outputs.
71
+
72
+ Used when a function is known to return only named (not positional) parameters.
73
+ This is narrower than :data:`ConvertedParameters` and excludes ``list``, ``tuple``, and ``None``.
74
+ """
75
+
76
+
77
+ @mypyc_attr(allow_interpreted_subclasses=False)
78
+ class ParameterStyle(str, Enum):
79
+ """Enumeration of supported SQL parameter placeholder styles."""
80
+
81
+ NONE = "none"
82
+ STATIC = "static"
83
+ QMARK = "qmark"
84
+ NUMERIC = "numeric"
85
+ NAMED_COLON = "named_colon"
86
+ POSITIONAL_COLON = "positional_colon"
87
+ NAMED_AT = "named_at"
88
+ NAMED_DOLLAR = "named_dollar"
89
+ NAMED_PYFORMAT = "pyformat_named"
90
+ POSITIONAL_PYFORMAT = "pyformat_positional"
91
+
92
+
93
+ @mypyc_attr(allow_interpreted_subclasses=False)
94
+ class TypedParameter:
95
+ """Wrapper that preserves original parameter type information."""
96
+
97
+ __slots__ = ("_hash", "original_type", "semantic_name", "value")
98
+
99
+ def __init__(self, value: Any, original_type: "type | None" = None, semantic_name: "str | None" = None) -> None:
100
+ self.value = value
101
+ self.original_type = original_type or type(value)
102
+ self.semantic_name = semantic_name
103
+ self._hash: int | None = None
104
+
105
+ def __hash__(self) -> int:
106
+ if self._hash is None:
107
+ value_id = id(self.value)
108
+ self._hash = hash((value_id, self.original_type, self.semantic_name))
109
+ return self._hash
110
+
111
+ def __eq__(self, other: object) -> bool:
112
+ if not isinstance(other, TypedParameter):
113
+ return False
114
+ return (
115
+ self.value == other.value
116
+ and self.original_type == other.original_type
117
+ and self.semantic_name == other.semantic_name
118
+ )
119
+
120
+ def __repr__(self) -> str:
121
+ name_part = f", semantic_name='{self.semantic_name}'" if self.semantic_name else ""
122
+ return f"TypedParameter({self.value!r}, original_type={self.original_type.__name__}{name_part})"
123
+
124
+
125
+ class _TupleAdapter:
126
+ __slots__ = ("_as_list", "_serializer")
127
+
128
+ def __init__(self, serializer: "Callable[[Any], str]", as_list: bool) -> None:
129
+ self._serializer = serializer
130
+ self._as_list = as_list
131
+
132
+ def __call__(self, value: Any) -> "Any":
133
+ if self._as_list:
134
+ return self._serializer(list(value))
135
+ return self._serializer(value)
136
+
137
+
138
+ @singledispatch
139
+ def _wrap_parameter_by_type(value: Any, semantic_name: "str | None" = None) -> Any:
140
+ return value
141
+
142
+
143
+ @_wrap_parameter_by_type.register
144
+ def _(value: bool, semantic_name: "str | None" = None) -> "TypedParameter":
145
+ return TypedParameter(value, bool, semantic_name)
146
+
147
+
148
+ @_wrap_parameter_by_type.register
149
+ def _(value: Decimal, semantic_name: "str | None" = None) -> "TypedParameter":
150
+ return TypedParameter(value, Decimal, semantic_name)
151
+
152
+
153
+ @_wrap_parameter_by_type.register
154
+ def _(value: datetime, semantic_name: "str | None" = None) -> "TypedParameter":
155
+ return TypedParameter(value, datetime, semantic_name)
156
+
157
+
158
+ @_wrap_parameter_by_type.register
159
+ def _(value: date, semantic_name: "str | None" = None) -> "TypedParameter":
160
+ return TypedParameter(value, date, semantic_name)
161
+
162
+
163
+ @_wrap_parameter_by_type.register
164
+ def _(value: time, semantic_name: "str | None" = None) -> "TypedParameter":
165
+ return TypedParameter(value, time, semantic_name)
166
+
167
+
168
+ @_wrap_parameter_by_type.register
169
+ def _(value: bytes, semantic_name: "str | None" = None) -> "TypedParameter":
170
+ return TypedParameter(value, bytes, semantic_name)
171
+
172
+
173
+ @mypyc_attr(allow_interpreted_subclasses=False)
174
+ class ParameterInfo:
175
+ """Metadata describing a single detected SQL parameter."""
176
+
177
+ __slots__ = ("name", "ordinal", "placeholder_text", "position", "style")
178
+
179
+ def __init__(
180
+ self, name: "str | None", style: "ParameterStyle", position: int, ordinal: int, placeholder_text: str
181
+ ) -> None:
182
+ self.name = name
183
+ self.style = style
184
+ self.position = position
185
+ self.ordinal = ordinal
186
+ self.placeholder_text = placeholder_text
187
+
188
+ def __repr__(self) -> str:
189
+ return (
190
+ "ParameterInfo("
191
+ f"name={self.name!r}, style={self.style!r}, position={self.position}, "
192
+ f"ordinal={self.ordinal}, placeholder_text={self.placeholder_text!r}"
193
+ ")"
194
+ )
195
+
196
+
197
+ @mypyc_attr(allow_interpreted_subclasses=False)
198
+ class ParameterStyleConfig:
199
+ """Configuration describing parameter behaviour for a statement."""
200
+
201
+ __slots__ = (
202
+ "_hash_cache",
203
+ "allow_mixed_parameter_styles",
204
+ "ast_transformer",
205
+ "default_execution_parameter_style",
206
+ "default_parameter_style",
207
+ "has_native_list_expansion",
208
+ "json_deserializer",
209
+ "json_serializer",
210
+ "needs_static_script_compilation",
211
+ "output_transformer",
212
+ "preserve_original_params_for_many",
213
+ "preserve_parameter_format",
214
+ "strict_named_parameters",
215
+ "supported_execution_parameter_styles",
216
+ "supported_parameter_styles",
217
+ "type_coercion_map",
218
+ )
219
+
220
+ def __init__(
221
+ self,
222
+ default_parameter_style: "ParameterStyle",
223
+ supported_parameter_styles: "Collection[ParameterStyle] | None" = None,
224
+ supported_execution_parameter_styles: "Collection[ParameterStyle] | None" = None,
225
+ default_execution_parameter_style: "ParameterStyle | None" = None,
226
+ type_coercion_map: "Mapping[type, Callable[[Any], Any]] | None" = None,
227
+ has_native_list_expansion: bool = False,
228
+ needs_static_script_compilation: bool = False,
229
+ allow_mixed_parameter_styles: bool = False,
230
+ preserve_parameter_format: bool = True,
231
+ preserve_original_params_for_many: bool = False,
232
+ output_transformer: "Callable[[str, Any], tuple[str, Any]] | None" = None,
233
+ ast_transformer: "Callable[[Any, Any, ParameterProfile], tuple[Any, Any]] | None" = None,
234
+ json_serializer: "Callable[[Any], str] | None" = None,
235
+ json_deserializer: "Callable[[str], Any] | None" = None,
236
+ strict_named_parameters: bool = True,
237
+ ) -> None:
238
+ self.default_parameter_style = default_parameter_style
239
+ self.supported_parameter_styles = frozenset(supported_parameter_styles or (default_parameter_style,))
240
+ self.supported_execution_parameter_styles = (
241
+ frozenset(supported_execution_parameter_styles) if supported_execution_parameter_styles else None
242
+ )
243
+ self.default_execution_parameter_style = default_execution_parameter_style or default_parameter_style
244
+ self.type_coercion_map = dict(type_coercion_map or {})
245
+ self.has_native_list_expansion = has_native_list_expansion
246
+ self.output_transformer = output_transformer
247
+ self.ast_transformer = ast_transformer
248
+ self.needs_static_script_compilation = needs_static_script_compilation
249
+ self.allow_mixed_parameter_styles = allow_mixed_parameter_styles
250
+ self.preserve_parameter_format = preserve_parameter_format
251
+ self.preserve_original_params_for_many = preserve_original_params_for_many
252
+ self.strict_named_parameters = strict_named_parameters
253
+ self.json_serializer = json_serializer
254
+ self.json_deserializer = json_deserializer
255
+ self._hash_cache: int | None = None
256
+
257
+ def __hash__(self) -> int:
258
+ if self._hash_cache is None:
259
+ hash_components = (
260
+ self.default_parameter_style.value,
261
+ frozenset(style.value for style in self.supported_parameter_styles),
262
+ (
263
+ frozenset(style.value for style in self.supported_execution_parameter_styles)
264
+ if self.supported_execution_parameter_styles is not None
265
+ else None
266
+ ),
267
+ self.default_execution_parameter_style.value,
268
+ tuple(sorted(self.type_coercion_map.keys(), key=str)) if self.type_coercion_map else None,
269
+ self.has_native_list_expansion,
270
+ self.preserve_original_params_for_many,
271
+ bool(self.output_transformer),
272
+ self.needs_static_script_compilation,
273
+ self.allow_mixed_parameter_styles,
274
+ self.preserve_parameter_format,
275
+ self.strict_named_parameters,
276
+ bool(self.ast_transformer),
277
+ self.json_serializer,
278
+ self.json_deserializer,
279
+ )
280
+ self._hash_cache = hash(hash_components)
281
+ return self._hash_cache
282
+
283
+ def hash(self) -> int:
284
+ """Return the hash value for caching compatibility.
285
+
286
+ Returns:
287
+ Hash value matching :func:`hash` output for this config.
288
+ """
289
+
290
+ return hash(self)
291
+
292
+ def replace(self, **overrides: Any) -> "ParameterStyleConfig":
293
+ data: dict[str, Any] = {
294
+ "default_parameter_style": self.default_parameter_style,
295
+ "supported_parameter_styles": set(self.supported_parameter_styles),
296
+ "supported_execution_parameter_styles": (
297
+ set(self.supported_execution_parameter_styles)
298
+ if self.supported_execution_parameter_styles is not None
299
+ else None
300
+ ),
301
+ "default_execution_parameter_style": self.default_execution_parameter_style,
302
+ "type_coercion_map": dict(self.type_coercion_map),
303
+ "has_native_list_expansion": self.has_native_list_expansion,
304
+ "needs_static_script_compilation": self.needs_static_script_compilation,
305
+ "allow_mixed_parameter_styles": self.allow_mixed_parameter_styles,
306
+ "preserve_parameter_format": self.preserve_parameter_format,
307
+ "preserve_original_params_for_many": self.preserve_original_params_for_many,
308
+ "strict_named_parameters": self.strict_named_parameters,
309
+ "output_transformer": self.output_transformer,
310
+ "ast_transformer": self.ast_transformer,
311
+ "json_serializer": self.json_serializer,
312
+ "json_deserializer": self.json_deserializer,
313
+ }
314
+ data.update(overrides)
315
+ return ParameterStyleConfig(**data)
316
+
317
+ def with_json_serializers(
318
+ self,
319
+ serializer: "Callable[[Any], str]",
320
+ *,
321
+ tuple_strategy: "Literal['list', 'tuple']" = "list",
322
+ deserializer: "Callable[[str], Any] | None" = None,
323
+ ) -> "ParameterStyleConfig":
324
+ """Return a copy configured with JSON serializers for complex parameters."""
325
+
326
+ if tuple_strategy == "list":
327
+ tuple_adapter = _TupleAdapter(serializer, True)
328
+ elif tuple_strategy == "tuple":
329
+ tuple_adapter = _TupleAdapter(serializer, False)
330
+ else:
331
+ msg = f"Unsupported tuple_strategy: {tuple_strategy}"
332
+ raise ValueError(msg)
333
+
334
+ updated_type_map = dict(self.type_coercion_map)
335
+ updated_type_map[dict] = serializer
336
+ updated_type_map[list] = serializer
337
+ updated_type_map[tuple] = tuple_adapter
338
+
339
+ return self.replace(
340
+ type_coercion_map=updated_type_map,
341
+ json_serializer=serializer,
342
+ json_deserializer=deserializer or self.json_deserializer,
343
+ )
344
+
345
+
346
+ @mypyc_attr(allow_interpreted_subclasses=False)
347
+ class DriverParameterProfile:
348
+ """Immutable adapter profile describing parameter defaults."""
349
+
350
+ __slots__ = (
351
+ "allow_mixed_parameter_styles",
352
+ "custom_type_coercions",
353
+ "default_ast_transformer",
354
+ "default_dialect",
355
+ "default_execution_style",
356
+ "default_output_transformer",
357
+ "default_style",
358
+ "extras",
359
+ "has_native_list_expansion",
360
+ "json_serializer_strategy",
361
+ "name",
362
+ "needs_static_script_compilation",
363
+ "preserve_original_params_for_many",
364
+ "preserve_parameter_format",
365
+ "statement_kwargs",
366
+ "strict_named_parameters",
367
+ "supported_execution_styles",
368
+ "supported_styles",
369
+ )
370
+
371
+ def __init__(
372
+ self,
373
+ name: str,
374
+ default_style: "ParameterStyle",
375
+ supported_styles: "Collection[ParameterStyle]",
376
+ default_execution_style: "ParameterStyle",
377
+ supported_execution_styles: "Collection[ParameterStyle] | None",
378
+ has_native_list_expansion: bool,
379
+ preserve_parameter_format: bool,
380
+ needs_static_script_compilation: bool,
381
+ allow_mixed_parameter_styles: bool,
382
+ preserve_original_params_for_many: bool,
383
+ json_serializer_strategy: "Literal['driver', 'helper', 'none']",
384
+ custom_type_coercions: "Mapping[type, Callable[[Any], Any]] | None" = None,
385
+ default_output_transformer: "Callable[[str, Any], tuple[str, Any]] | None" = None,
386
+ default_ast_transformer: "Callable[[Any, Any, ParameterProfile], tuple[Any, Any]] | None" = None,
387
+ extras: "Mapping[str, object] | None" = None,
388
+ default_dialect: "str | None" = None,
389
+ statement_kwargs: "Mapping[str, object] | None" = None,
390
+ strict_named_parameters: bool = True,
391
+ ) -> None:
392
+ self.name = name
393
+ self.default_style = default_style
394
+ self.supported_styles = frozenset(supported_styles)
395
+ self.default_execution_style = default_execution_style
396
+ self.supported_execution_styles = (
397
+ frozenset(supported_execution_styles) if supported_execution_styles is not None else None
398
+ )
399
+ self.has_native_list_expansion = has_native_list_expansion
400
+ self.preserve_parameter_format = preserve_parameter_format
401
+ self.needs_static_script_compilation = needs_static_script_compilation
402
+ self.allow_mixed_parameter_styles = allow_mixed_parameter_styles
403
+ self.preserve_original_params_for_many = preserve_original_params_for_many
404
+ self.strict_named_parameters = strict_named_parameters
405
+ self.json_serializer_strategy = json_serializer_strategy
406
+ self.custom_type_coercions = (
407
+ MappingProxyType(dict(custom_type_coercions)) if custom_type_coercions else MappingProxyType({})
408
+ )
409
+ self.default_output_transformer = default_output_transformer
410
+ self.default_ast_transformer = default_ast_transformer
411
+ self.extras = MappingProxyType(dict(extras)) if extras else MappingProxyType({})
412
+ self.default_dialect = default_dialect
413
+ self.statement_kwargs = MappingProxyType(dict(statement_kwargs)) if statement_kwargs else MappingProxyType({})
414
+
415
+
416
+ @mypyc_attr(allow_interpreted_subclasses=False)
417
+ class ParameterProfile:
418
+ """Aggregate metadata describing detected parameters."""
419
+
420
+ __slots__ = ("_parameters", "_placeholder_counts", "named_parameters", "reused_ordinals", "styles")
421
+ named_parameters: tuple[str, ...]
422
+ reused_ordinals: tuple[int, ...]
423
+ styles: tuple[str, ...]
424
+
425
+ def __init__(self, parameters: "Sequence[ParameterInfo] | None" = None) -> None:
426
+ param_tuple: tuple[ParameterInfo, ...] = tuple(parameters) if parameters else ()
427
+ self._parameters = param_tuple
428
+
429
+ # Optimize styles computation: skip sorted() for single-style case (common)
430
+ if param_tuple:
431
+ unique_styles = {param.style.value for param in param_tuple}
432
+ # Skip sort for single style (common case) - O(1) vs O(n log n)
433
+ if len(unique_styles) == 1:
434
+ self.styles = (next(iter(unique_styles)),)
435
+ else:
436
+ self.styles = tuple(sorted(unique_styles))
437
+ else:
438
+ self.styles = ()
439
+
440
+ placeholder_counts: dict[str, int] = {}
441
+ reused_ordinals: list[int] = []
442
+ named_parameters: list[str] = []
443
+
444
+ for param in param_tuple:
445
+ placeholder = param.placeholder_text
446
+ current_count = placeholder_counts.get(placeholder, 0)
447
+ placeholder_counts[placeholder] = current_count + 1
448
+ if current_count:
449
+ reused_ordinals.append(param.ordinal)
450
+ if param.name is not None:
451
+ named_parameters.append(param.name)
452
+
453
+ self._placeholder_counts = placeholder_counts
454
+ self.reused_ordinals = tuple(reused_ordinals)
455
+ self.named_parameters = tuple(named_parameters)
456
+
457
+ @classmethod
458
+ def empty(cls) -> "ParameterProfile":
459
+ return cls(())
460
+
461
+ @property
462
+ def parameters(self) -> "tuple[ParameterInfo, ...]":
463
+ return self._parameters
464
+
465
+ @property
466
+ def total_count(self) -> int:
467
+ return len(self._parameters)
468
+
469
+ def placeholder_count(self, placeholder: str) -> int:
470
+ return self._placeholder_counts.get(placeholder, 0)
471
+
472
+ def is_empty(self) -> bool:
473
+ return not self._parameters
474
+
475
+
476
+ @mypyc_attr(allow_interpreted_subclasses=False)
477
+ class ParameterProcessingResult:
478
+ """Return container for parameter processing output."""
479
+
480
+ __slots__ = (
481
+ "applied_wrap_types",
482
+ "input_named_parameters",
483
+ "parameter_profile",
484
+ "parameters",
485
+ "parsed_expression",
486
+ "sql",
487
+ "sqlglot_sql",
488
+ )
489
+
490
+ def __init__(
491
+ self,
492
+ sql: str,
493
+ parameters: Any,
494
+ parameter_profile: "ParameterProfile",
495
+ sqlglot_sql: str | None = None,
496
+ parsed_expression: Any = None,
497
+ input_named_parameters: "tuple[str, ...] | None" = None,
498
+ applied_wrap_types: bool = False,
499
+ ) -> None:
500
+ self.sql = sql
501
+ self.parameters = parameters
502
+ self.parameter_profile = parameter_profile
503
+ self.sqlglot_sql = sqlglot_sql or sql
504
+ self.parsed_expression = parsed_expression
505
+ self.input_named_parameters = input_named_parameters or ()
506
+ self.applied_wrap_types = applied_wrap_types
507
+
508
+ def __iter__(self) -> "Generator[str | Any, Any, None]":
509
+ yield self.sql
510
+ yield self.parameters
511
+
512
+ def __len__(self) -> int:
513
+ return 2
514
+
515
+ def __getitem__(self, index: int) -> Any:
516
+ if index == 0:
517
+ return self.sql
518
+ if index == 1:
519
+ return self.parameters
520
+ msg = "ParameterProcessingResult exposes exactly two positional items"
521
+ raise IndexError(msg)
522
+
523
+
524
+ def is_iterable_parameters(obj: Any) -> bool:
525
+ """Return True when the object behaves like an iterable parameter payload."""
526
+
527
+ return isinstance(obj, (list, tuple, set)) or (
528
+ isinstance(obj, Iterable) and not isinstance(obj, (str, bytes, Mapping))
529
+ )
530
+
531
+
532
+ def wrap_with_type(value: Any, semantic_name: "str | None" = None) -> Any:
533
+ """Wrap value with :class:`TypedParameter` if it benefits downstream processing."""
534
+ if value is None:
535
+ return None
536
+ return _wrap_parameter_by_type(value, semantic_name)