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,575 @@
1
+ """OracleDB database configuration with direct field-based configuration."""
2
+
3
+ from typing import TYPE_CHECKING, Any, ClassVar, TypedDict, cast
4
+
5
+ import oracledb
6
+ from mypy_extensions import mypyc_attr
7
+ from typing_extensions import NotRequired
8
+
9
+ from sqlspec.adapters.oracledb._json_handlers import register_json_handlers # pyright: ignore[reportPrivateUsage]
10
+ from sqlspec.adapters.oracledb._typing import (
11
+ OracleAsyncConnection,
12
+ OracleAsyncConnectionPool,
13
+ OracleAsyncCursor,
14
+ OracleAsyncSessionContext,
15
+ OracleSyncConnection,
16
+ OracleSyncConnectionPool,
17
+ OracleSyncCursor,
18
+ OracleSyncSessionContext,
19
+ )
20
+ from sqlspec.adapters.oracledb._uuid_handlers import register_uuid_handlers
21
+ from sqlspec.adapters.oracledb._vector_handlers import register_numpy_handlers # pyright: ignore[reportPrivateUsage]
22
+ from sqlspec.adapters.oracledb.core import apply_driver_features, default_statement_config, requires_session_callback
23
+ from sqlspec.adapters.oracledb.driver import (
24
+ OracleAsyncDriver,
25
+ OracleAsyncExceptionHandler,
26
+ OracleSyncDriver,
27
+ OracleSyncExceptionHandler,
28
+ )
29
+ from sqlspec.adapters.oracledb.migrations import OracleAsyncMigrationTracker, OracleSyncMigrationTracker
30
+ from sqlspec.config import AsyncDatabaseConfig, ExtensionConfigs, SyncDatabaseConfig
31
+ from sqlspec.driver._async import AsyncPoolConnectionContext, AsyncPoolSessionFactory
32
+ from sqlspec.driver._sync import SyncPoolConnectionContext, SyncPoolSessionFactory
33
+ from sqlspec.utils.config_tools import normalize_connection_config
34
+
35
+ if TYPE_CHECKING:
36
+ from collections.abc import Awaitable, Callable
37
+ from types import TracebackType
38
+
39
+ from oracledb import AuthMode
40
+
41
+ from sqlspec.core import StatementConfig
42
+
43
+
44
+ __all__ = (
45
+ "OracleAsyncConfig",
46
+ "OracleConnectionParams",
47
+ "OracleDriverFeatures",
48
+ "OraclePoolParams",
49
+ "OracleSyncConfig",
50
+ )
51
+
52
+
53
+ def _extract_oracle_major(connection: Any) -> "int | None":
54
+ """Read the major version digit from ``connection.version``.
55
+
56
+ Used by ``_init_connection`` to cache server major on the connection so the
57
+ JSON input handler can route bind paths without per-bind metadata queries.
58
+ Returns ``None`` when the version string is missing or unparsable; callers
59
+ treat ``None`` as "assume 21c+ (modern default)".
60
+ """
61
+ try:
62
+ version_str = connection.version
63
+ except AttributeError:
64
+ return None
65
+ if not version_str:
66
+ return None
67
+ head = version_str.split(".", 1)[0]
68
+ try:
69
+ return int(head)
70
+ except ValueError:
71
+ return None
72
+
73
+
74
+ class OracleConnectionParams(TypedDict):
75
+ """OracleDB connection parameters."""
76
+
77
+ dsn: NotRequired[str]
78
+ user: NotRequired[str]
79
+ password: NotRequired[str]
80
+ host: NotRequired[str]
81
+ port: NotRequired[int]
82
+ service_name: NotRequired[str]
83
+ sid: NotRequired[str]
84
+ wallet_location: NotRequired[str]
85
+ wallet_password: NotRequired[str]
86
+ config_dir: NotRequired[str]
87
+ tcp_connect_timeout: NotRequired[float]
88
+ retry_count: NotRequired[int]
89
+ retry_delay: NotRequired[int]
90
+ mode: NotRequired["AuthMode"]
91
+ events: NotRequired[bool]
92
+ edition: NotRequired[str]
93
+
94
+
95
+ class OraclePoolParams(OracleConnectionParams):
96
+ """OracleDB pool parameters."""
97
+
98
+ min: NotRequired[int]
99
+ max: NotRequired[int]
100
+ increment: NotRequired[int]
101
+ threaded: NotRequired[bool]
102
+ getmode: NotRequired[Any]
103
+ homogeneous: NotRequired[bool]
104
+ timeout: NotRequired[int]
105
+ wait_timeout: NotRequired[int]
106
+ max_lifetime_session: NotRequired[int]
107
+ session_callback: NotRequired["Callable[..., Any]"]
108
+ max_sessions_per_shard: NotRequired[int]
109
+ soda_metadata_cache: NotRequired[bool]
110
+ ping_interval: NotRequired[int]
111
+ extra: NotRequired["dict[str, Any]"]
112
+
113
+
114
+ class OracleDriverFeatures(TypedDict):
115
+ """Oracle driver feature flags.
116
+
117
+ enable_numpy_vectors: Enable automatic NumPy array ↔ Oracle VECTOR conversion.
118
+ Requires NumPy and Oracle Database 23ai or higher with VECTOR data type support.
119
+ Defaults to True when NumPy is installed.
120
+ Provides automatic bidirectional conversion between NumPy ndarrays and Oracle VECTOR columns.
121
+ Supports float32, float64, int8, and uint8 dtypes.
122
+ enable_lowercase_column_names: Normalize implicit Oracle uppercase column names to lowercase.
123
+ Targets unquoted Oracle identifiers that default to uppercase while preserving quoted case-sensitive aliases.
124
+ Defaults to True for compatibility with schema libraries expecting snake_case fields.
125
+ enable_uuid_binary: Enable automatic UUID ↔ RAW(16) binary conversion.
126
+ When True (default), Python UUID objects are automatically converted to/from
127
+ RAW(16) binary format for optimal storage efficiency (16 bytes vs 36 bytes).
128
+ Applies only to RAW(16) columns; other RAW sizes remain unchanged.
129
+ Uses Python's stdlib uuid module (no external dependencies).
130
+ Defaults to True for improved type safety and storage efficiency.
131
+ vector_return_format: Return type for VECTOR column reads. One of:
132
+ - "numpy" (default when NumPy is installed): np.ndarray, zero-copy compute path.
133
+ - "list": list[float|int], best for code that expects native Python sequences.
134
+ - "array": array.array, zero-copy oracledb passthrough.
135
+ Defaults to "numpy" when NumPy is installed, otherwise "list".
136
+ oracle_varchar2_byte_limit: Threshold (in UTF-8 bytes) above which ``str``
137
+ parameters are auto-coerced to ``DB_TYPE_CLOB``. Defaults to 4000 (the
138
+ Oracle SQL VARCHAR2 limit). Databases with ``MAX_STRING_SIZE=EXTENDED``
139
+ may set this to 32767 to keep larger strings as VARCHAR2.
140
+ oracle_raw_byte_limit: Threshold (in bytes) above which ``bytes`` parameters
141
+ are auto-coerced to ``DB_TYPE_BLOB``. Defaults to 2000 (the Oracle SQL
142
+ RAW limit).
143
+ on_connection_create: Callback executed when a connection is acquired from pool.
144
+ For sync: Callable[[OracleSyncConnection, str], None] - receives connection and tag
145
+ For async: Callable[[OracleAsyncConnection, str], Awaitable[None]]
146
+ Called after internal setup (numpy vectors, UUID handlers).
147
+ enable_events: Enable database event channel support.
148
+ Defaults to True when extension_config["events"] is configured.
149
+ Provides pub/sub capabilities via Oracle Advanced Queuing or table-backed fallback.
150
+ Requires extension_config["events"] for migration setup when using table_queue backend.
151
+ events_backend: Event channel backend selection.
152
+ Options: "advanced_queue", "table_queue"
153
+ - "advanced_queue": Oracle Advanced Queuing (native messaging, requires DBMS_AQADM privileges)
154
+ - "table_queue": Durable table-backed queue with retries and exactly-once delivery
155
+ Defaults to "table_queue" (works on all Oracle editions without special privileges).
156
+ """
157
+
158
+ enable_numpy_vectors: NotRequired[bool]
159
+ enable_lowercase_column_names: NotRequired[bool]
160
+ enable_uuid_binary: NotRequired[bool]
161
+ vector_return_format: NotRequired[str]
162
+ oracle_varchar2_byte_limit: NotRequired[int]
163
+ oracle_raw_byte_limit: NotRequired[int]
164
+ on_connection_create: "NotRequired[Callable[..., Any]]"
165
+ enable_events: NotRequired[bool]
166
+ events_backend: NotRequired[str]
167
+
168
+
169
+ class OracleSyncConnectionContext(SyncPoolConnectionContext):
170
+ """Context manager for Oracle sync connections."""
171
+
172
+ __slots__ = ("_conn",)
173
+
174
+ def __init__(self, config: "OracleSyncConfig") -> None:
175
+ super().__init__(config)
176
+ self._conn: OracleSyncConnection | None = None
177
+
178
+ def __enter__(self) -> "OracleSyncConnection":
179
+ if self._config.connection_instance is None:
180
+ self._config.connection_instance = self._config.create_pool()
181
+ self._conn = self._config.connection_instance.acquire()
182
+ return cast("OracleSyncConnection", self._conn)
183
+
184
+ def __exit__(
185
+ self, exc_type: "type[BaseException] | None", exc_val: "BaseException | None", exc_tb: "TracebackType | None"
186
+ ) -> bool | None:
187
+ if self._conn:
188
+ if self._config.connection_instance:
189
+ self._config.connection_instance.release(self._conn)
190
+ self._conn = None
191
+ return None
192
+
193
+
194
+ class _OracleSyncSessionConnectionHandler(SyncPoolSessionFactory):
195
+ __slots__ = ("_conn",)
196
+
197
+ def __init__(self, config: "OracleSyncConfig") -> None:
198
+ super().__init__(config)
199
+ self._conn: OracleSyncConnection | None = None
200
+
201
+ def acquire_connection(self) -> "OracleSyncConnection":
202
+ if self._config.connection_instance is None:
203
+ self._config.connection_instance = self._config.create_pool()
204
+ self._conn = self._config.connection_instance.acquire()
205
+ return cast("OracleSyncConnection", self._conn)
206
+
207
+ def release_connection(self, _conn: "OracleSyncConnection", **kwargs: Any) -> None:
208
+ if self._conn is None:
209
+ return
210
+ if self._config.connection_instance:
211
+ self._config.connection_instance.release(self._conn)
212
+ self._conn = None
213
+
214
+
215
+ class OracleSyncConfig(SyncDatabaseConfig[OracleSyncConnection, "OracleSyncConnectionPool", OracleSyncDriver]):
216
+ """Configuration for Oracle synchronous database connections.
217
+
218
+ Example::
219
+
220
+ config = OracleSyncConfig(
221
+ connection_config=OraclePoolParams(
222
+ dsn="localhost:1521/XEPDB1",
223
+ user="app",
224
+ password="secret",
225
+ )
226
+ )
227
+ """
228
+
229
+ __slots__ = ("_user_connection_hook",)
230
+
231
+ driver_type: ClassVar[type[OracleSyncDriver]] = OracleSyncDriver
232
+ connection_type: "ClassVar[type[OracleSyncConnection]]" = OracleSyncConnection
233
+ migration_tracker_type: "ClassVar[type[OracleSyncMigrationTracker]]" = OracleSyncMigrationTracker
234
+ supports_transactional_ddl: ClassVar[bool] = False
235
+ supports_native_arrow_export: ClassVar[bool] = True
236
+ supports_native_arrow_import: ClassVar[bool] = True
237
+ supports_native_parquet_export: ClassVar[bool] = True
238
+ supports_native_parquet_import: ClassVar[bool] = True
239
+ _connection_context_class: "ClassVar[type[OracleSyncConnectionContext]]" = OracleSyncConnectionContext
240
+ _session_factory_class: "ClassVar[type[_OracleSyncSessionConnectionHandler]]" = _OracleSyncSessionConnectionHandler
241
+ _session_context_class: "ClassVar[type[OracleSyncSessionContext]]" = OracleSyncSessionContext
242
+ _default_statement_config = default_statement_config
243
+
244
+ def __init__(
245
+ self,
246
+ *,
247
+ connection_config: "OraclePoolParams | dict[str, Any] | None" = None,
248
+ connection_instance: "OracleSyncConnectionPool | None" = None,
249
+ migration_config: "dict[str, Any] | None" = None,
250
+ statement_config: "StatementConfig | None" = None,
251
+ driver_features: "OracleDriverFeatures | dict[str, Any] | None" = None,
252
+ bind_key: "str | None" = None,
253
+ extension_config: "ExtensionConfigs | None" = None,
254
+ **kwargs: Any,
255
+ ) -> None:
256
+ """Initialize Oracle synchronous configuration.
257
+
258
+ Args:
259
+ connection_config: Connection and pool configuration parameters.
260
+ connection_instance: Existing pool instance to use.
261
+ migration_config: Migration configuration.
262
+ statement_config: Default SQL statement configuration.
263
+ driver_features: Optional driver feature configuration (TypedDict or dict).
264
+ bind_key: Optional unique identifier for this configuration.
265
+ extension_config: Extension-specific configuration (e.g., Litestar plugin settings).
266
+ **kwargs: Additional keyword arguments.
267
+ """
268
+ connection_config = normalize_connection_config(connection_config)
269
+ statement_config = statement_config or default_statement_config
270
+
271
+ driver_features = apply_driver_features(driver_features)
272
+
273
+ # Extract user connection hook before storing driver_features
274
+ features_dict = dict(driver_features) if driver_features else {}
275
+ self._user_connection_hook: Callable[[OracleSyncConnection, str], None] | None = features_dict.pop(
276
+ "on_connection_create", None
277
+ )
278
+
279
+ super().__init__(
280
+ connection_config=connection_config,
281
+ connection_instance=connection_instance,
282
+ migration_config=migration_config,
283
+ statement_config=statement_config,
284
+ driver_features=features_dict,
285
+ bind_key=bind_key,
286
+ extension_config=extension_config,
287
+ **kwargs,
288
+ )
289
+
290
+ def _create_pool(self) -> "OracleSyncConnectionPool":
291
+ """Create the actual connection pool."""
292
+ config = dict(self.connection_config)
293
+
294
+ # Always use session_callback to support user callback
295
+ if requires_session_callback(self.driver_features) or self._user_connection_hook is not None:
296
+ config["session_callback"] = self._init_connection
297
+
298
+ return oracledb.create_pool(**config)
299
+
300
+ def _init_connection(self, connection: "OracleSyncConnection", tag: str) -> None:
301
+ """Initialize connection with type handlers and cached server metadata.
302
+
303
+ Registers vector, JSON, and UUID handlers. Vector and JSON handlers run
304
+ unconditionally — both gate any optional dependencies (NumPy in the
305
+ vector case) internally. UUID registration remains gated for
306
+ backwards compatibility with existing user configurations.
307
+
308
+ Caches ``connection._sqlspec_oracle_major`` so the JSON input handler
309
+ can pick the right binding path (``DB_TYPE_JSON`` on 21c+, OSON-encoded
310
+ ``DB_TYPE_BLOB`` on 19c-20c, JSON-string ``DB_TYPE_CLOB`` on 12c-18c)
311
+ without re-querying server metadata on every bind. Caches
312
+ ``connection._sqlspec_vector_return_format`` so the vector output
313
+ handler can dispatch to ``numpy`` / ``list`` / ``array`` without
314
+ re-reading driver-feature defaults on every fetch.
315
+
316
+ Args:
317
+ connection: Oracle connection to initialize.
318
+ tag: Connection tag for session state.
319
+ """
320
+ register_numpy_handlers(connection)
321
+
322
+ register_json_handlers(connection)
323
+
324
+ if self.driver_features.get("enable_uuid_binary", False):
325
+ register_uuid_handlers(connection)
326
+
327
+ # Stash detected major version on the connection so the JSON input handler
328
+ # can pick the right binding path without per-bind metadata queries.
329
+ setattr(connection, "_sqlspec_oracle_major", _extract_oracle_major(connection))
330
+ # Stash the vector-read format so the VECTOR output handler can
331
+ # dispatch without re-reading driver-feature defaults on every fetch.
332
+ setattr(connection, "_sqlspec_vector_return_format", self.driver_features.get("vector_return_format"))
333
+
334
+ # Call user-provided callback after internal setup
335
+ if self._user_connection_hook is not None:
336
+ self._user_connection_hook(connection, tag)
337
+
338
+ def _close_pool(self) -> None:
339
+ """Close the actual connection pool."""
340
+ if self.connection_instance:
341
+ self.connection_instance.close()
342
+ self.connection_instance = None
343
+
344
+ def create_connection(self) -> "OracleSyncConnection":
345
+ """Create a single connection (not from pool).
346
+
347
+ Returns:
348
+ An Oracle Connection instance.
349
+ """
350
+ if self.connection_instance is None:
351
+ self.connection_instance = self.create_pool()
352
+ return self.connection_instance.acquire()
353
+
354
+ def provide_pool(self) -> "OracleSyncConnectionPool":
355
+ """Provide pool instance.
356
+
357
+ Returns:
358
+ The connection pool.
359
+ """
360
+ if not self.connection_instance:
361
+ self.connection_instance = self.create_pool()
362
+ return self.connection_instance
363
+
364
+ def get_signature_namespace(self) -> "dict[str, Any]":
365
+ """Get the signature namespace for OracleDB types.
366
+
367
+ Provides OracleDB-specific types for Litestar framework recognition.
368
+
369
+ Returns:
370
+ Dictionary mapping type names to types.
371
+ """
372
+
373
+ namespace = super().get_signature_namespace()
374
+ namespace.update({
375
+ "OracleAsyncConnection": OracleAsyncConnection,
376
+ "OracleAsyncConnectionPool": OracleAsyncConnectionPool,
377
+ "OracleAsyncCursor": OracleAsyncCursor,
378
+ "OracleAsyncDriver": OracleAsyncDriver,
379
+ "OracleAsyncExceptionHandler": OracleAsyncExceptionHandler,
380
+ "OracleConnectionParams": OracleConnectionParams,
381
+ "OracleDriverFeatures": OracleDriverFeatures,
382
+ "OraclePoolParams": OraclePoolParams,
383
+ "OracleSyncConnectionContext": OracleSyncConnectionContext,
384
+ "OracleSyncConnection": OracleSyncConnection,
385
+ "OracleSyncConnectionPool": OracleSyncConnectionPool,
386
+ "OracleSyncCursor": OracleSyncCursor,
387
+ "OracleSyncDriver": OracleSyncDriver,
388
+ "OracleSyncExceptionHandler": OracleSyncExceptionHandler,
389
+ "OracleSyncSessionContext": OracleSyncSessionContext,
390
+ })
391
+ return namespace
392
+
393
+
394
+ class OracleAsyncConnectionContext(AsyncPoolConnectionContext):
395
+ """Async context manager for Oracle connections."""
396
+
397
+ __slots__ = ()
398
+
399
+
400
+ class _OracleAsyncSessionConnectionHandler(AsyncPoolSessionFactory):
401
+ __slots__ = ()
402
+
403
+
404
+ @mypyc_attr(native_class=False)
405
+ class OracleAsyncConfig(AsyncDatabaseConfig[OracleAsyncConnection, "OracleAsyncConnectionPool", OracleAsyncDriver]):
406
+ """Configuration for Oracle asynchronous database connections.
407
+
408
+ Example::
409
+
410
+ config = OracleAsyncConfig(
411
+ connection_config=OraclePoolParams(
412
+ dsn="localhost:1521/XEPDB1",
413
+ user="app",
414
+ password="secret",
415
+ )
416
+ )
417
+ """
418
+
419
+ __slots__ = ("_user_connection_hook",)
420
+
421
+ connection_type: "ClassVar[type[OracleAsyncConnection]]" = OracleAsyncConnection
422
+ driver_type: ClassVar[type[OracleAsyncDriver]] = OracleAsyncDriver
423
+ migration_tracker_type: "ClassVar[type[OracleAsyncMigrationTracker]]" = OracleAsyncMigrationTracker
424
+ supports_transactional_ddl: ClassVar[bool] = False
425
+ supports_native_arrow_export: ClassVar[bool] = True
426
+ supports_native_arrow_import: ClassVar[bool] = True
427
+ supports_native_parquet_export: ClassVar[bool] = True
428
+ supports_native_parquet_import: ClassVar[bool] = True
429
+ _connection_context_class: "ClassVar[type[OracleAsyncConnectionContext]]" = OracleAsyncConnectionContext
430
+ _session_factory_class: "ClassVar[type[_OracleAsyncSessionConnectionHandler]]" = (
431
+ _OracleAsyncSessionConnectionHandler
432
+ )
433
+ _session_context_class: "ClassVar[type[OracleAsyncSessionContext]]" = OracleAsyncSessionContext
434
+ _default_statement_config = default_statement_config
435
+
436
+ def __init__(
437
+ self,
438
+ *,
439
+ connection_config: "OraclePoolParams | dict[str, Any] | None" = None,
440
+ connection_instance: "OracleAsyncConnectionPool | None" = None,
441
+ migration_config: "dict[str, Any] | None" = None,
442
+ statement_config: "StatementConfig | None" = None,
443
+ driver_features: "OracleDriverFeatures | dict[str, Any] | None" = None,
444
+ bind_key: "str | None" = None,
445
+ extension_config: "ExtensionConfigs | None" = None,
446
+ **kwargs: Any,
447
+ ) -> None:
448
+ """Initialize Oracle asynchronous configuration.
449
+
450
+ Args:
451
+ connection_config: Connection and pool configuration parameters.
452
+ connection_instance: Existing pool instance to use.
453
+ migration_config: Migration configuration.
454
+ statement_config: Default SQL statement configuration.
455
+ driver_features: Optional driver feature configuration (TypedDict or dict).
456
+ bind_key: Optional unique identifier for this configuration.
457
+ extension_config: Extension-specific configuration (e.g., Litestar plugin settings).
458
+ **kwargs: Additional keyword arguments.
459
+ """
460
+ connection_config = normalize_connection_config(connection_config)
461
+
462
+ driver_features = apply_driver_features(driver_features)
463
+
464
+ # Extract user connection hook before storing driver_features
465
+ features_dict = dict(driver_features) if driver_features else {}
466
+ self._user_connection_hook: Callable[[OracleAsyncConnection, str], Awaitable[None]] | None = features_dict.pop(
467
+ "on_connection_create", None
468
+ )
469
+
470
+ super().__init__(
471
+ connection_config=connection_config,
472
+ connection_instance=connection_instance,
473
+ migration_config=migration_config,
474
+ statement_config=statement_config or default_statement_config,
475
+ driver_features=features_dict,
476
+ bind_key=bind_key,
477
+ extension_config=extension_config,
478
+ **kwargs,
479
+ )
480
+
481
+ async def _create_pool(self) -> "OracleAsyncConnectionPool":
482
+ """Create the actual async connection pool."""
483
+ config = dict(self.connection_config)
484
+
485
+ # Always use session_callback to support user callback
486
+ if requires_session_callback(self.driver_features) or self._user_connection_hook is not None:
487
+ config["session_callback"] = self._init_connection
488
+
489
+ return oracledb.create_pool_async(**config)
490
+
491
+ async def _init_connection(self, connection: "OracleAsyncConnection", tag: str) -> None:
492
+ """Initialize async connection with type handlers and cached server metadata.
493
+
494
+ Registers vector, JSON, and UUID handlers. Vector and JSON registration
495
+ is unconditional — both gate any optional dependencies (NumPy in the
496
+ vector case) internally. Caches ``connection._sqlspec_oracle_major`` so
497
+ the JSON input handler can pick the right binding path on every bind
498
+ without round-tripping server metadata. Caches
499
+ ``connection._sqlspec_vector_return_format`` so the vector output
500
+ handler dispatches to the user-selected return type without re-reading
501
+ driver-feature defaults on every fetch.
502
+
503
+ Args:
504
+ connection: Oracle async connection to initialize.
505
+ tag: Connection tag for session state.
506
+ """
507
+ register_numpy_handlers(connection)
508
+
509
+ register_json_handlers(connection)
510
+
511
+ if self.driver_features.get("enable_uuid_binary", False):
512
+ register_uuid_handlers(connection)
513
+
514
+ # Stash detected major version on the connection so the JSON input handler
515
+ # can pick the right binding path without per-bind metadata queries.
516
+ setattr(connection, "_sqlspec_oracle_major", _extract_oracle_major(connection))
517
+ # Stash the vector-read format so the VECTOR output handler can
518
+ # dispatch without re-reading driver-feature defaults on every fetch.
519
+ setattr(connection, "_sqlspec_vector_return_format", self.driver_features.get("vector_return_format"))
520
+
521
+ # Call user-provided callback after internal setup
522
+ if self._user_connection_hook is not None:
523
+ await self._user_connection_hook(connection, tag)
524
+
525
+ async def _close_pool(self) -> None:
526
+ """Close the actual async connection pool."""
527
+ if self.connection_instance:
528
+ await self.connection_instance.close()
529
+ self.connection_instance = None
530
+
531
+ async def create_connection(self) -> OracleAsyncConnection:
532
+ """Create a single async connection (not from pool).
533
+
534
+ Returns:
535
+ An Oracle AsyncConnection instance.
536
+ """
537
+ if self.connection_instance is None:
538
+ self.connection_instance = await self.create_pool()
539
+ return cast("OracleAsyncConnection", await self.connection_instance.acquire())
540
+
541
+ async def provide_pool(self) -> "OracleAsyncConnectionPool":
542
+ """Provide async pool instance.
543
+
544
+ Returns:
545
+ The async connection pool.
546
+ """
547
+ if not self.connection_instance:
548
+ self.connection_instance = await self.create_pool()
549
+ return self.connection_instance
550
+
551
+ def get_signature_namespace(self) -> "dict[str, Any]":
552
+ """Get the signature namespace for OracleAsyncConfig types.
553
+
554
+ Returns:
555
+ Dictionary mapping type names to types.
556
+ """
557
+ namespace = super().get_signature_namespace()
558
+ namespace.update({
559
+ "OracleAsyncConnectionContext": OracleAsyncConnectionContext,
560
+ "OracleAsyncConnection": OracleAsyncConnection,
561
+ "OracleAsyncConnectionPool": OracleAsyncConnectionPool,
562
+ "OracleAsyncCursor": OracleAsyncCursor,
563
+ "OracleAsyncDriver": OracleAsyncDriver,
564
+ "OracleAsyncExceptionHandler": OracleAsyncExceptionHandler,
565
+ "OracleAsyncSessionContext": OracleAsyncSessionContext,
566
+ "OracleConnectionParams": OracleConnectionParams,
567
+ "OracleDriverFeatures": OracleDriverFeatures,
568
+ "OraclePoolParams": OraclePoolParams,
569
+ "OracleSyncConnection": OracleSyncConnection,
570
+ "OracleSyncConnectionPool": OracleSyncConnectionPool,
571
+ "OracleSyncCursor": OracleSyncCursor,
572
+ "OracleSyncDriver": OracleSyncDriver,
573
+ "OracleSyncExceptionHandler": OracleSyncExceptionHandler,
574
+ })
575
+ return namespace