sqlspec 0.36.0__cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (531) hide show
  1. ac8f31065839703b4e70__mypyc.cpython-310-aarch64-linux-gnu.so +0 -0
  2. sqlspec/__init__.py +140 -0
  3. sqlspec/__main__.py +12 -0
  4. sqlspec/__metadata__.py +14 -0
  5. sqlspec/_serialization.py +315 -0
  6. sqlspec/_typing.py +700 -0
  7. sqlspec/adapters/__init__.py +0 -0
  8. sqlspec/adapters/adbc/__init__.py +5 -0
  9. sqlspec/adapters/adbc/_typing.py +82 -0
  10. sqlspec/adapters/adbc/adk/__init__.py +5 -0
  11. sqlspec/adapters/adbc/adk/store.py +1273 -0
  12. sqlspec/adapters/adbc/config.py +295 -0
  13. sqlspec/adapters/adbc/core.cpython-310-aarch64-linux-gnu.so +0 -0
  14. sqlspec/adapters/adbc/core.py +735 -0
  15. sqlspec/adapters/adbc/data_dictionary.py +334 -0
  16. sqlspec/adapters/adbc/driver.py +529 -0
  17. sqlspec/adapters/adbc/events/__init__.py +5 -0
  18. sqlspec/adapters/adbc/events/store.py +285 -0
  19. sqlspec/adapters/adbc/litestar/__init__.py +5 -0
  20. sqlspec/adapters/adbc/litestar/store.py +502 -0
  21. sqlspec/adapters/adbc/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  22. sqlspec/adapters/adbc/type_converter.py +140 -0
  23. sqlspec/adapters/aiosqlite/__init__.py +25 -0
  24. sqlspec/adapters/aiosqlite/_typing.py +82 -0
  25. sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
  26. sqlspec/adapters/aiosqlite/adk/store.py +818 -0
  27. sqlspec/adapters/aiosqlite/config.py +334 -0
  28. sqlspec/adapters/aiosqlite/core.cpython-310-aarch64-linux-gnu.so +0 -0
  29. sqlspec/adapters/aiosqlite/core.py +315 -0
  30. sqlspec/adapters/aiosqlite/data_dictionary.py +208 -0
  31. sqlspec/adapters/aiosqlite/driver.py +313 -0
  32. sqlspec/adapters/aiosqlite/events/__init__.py +5 -0
  33. sqlspec/adapters/aiosqlite/events/store.py +20 -0
  34. sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
  35. sqlspec/adapters/aiosqlite/litestar/store.py +279 -0
  36. sqlspec/adapters/aiosqlite/pool.py +533 -0
  37. sqlspec/adapters/asyncmy/__init__.py +21 -0
  38. sqlspec/adapters/asyncmy/_typing.py +87 -0
  39. sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
  40. sqlspec/adapters/asyncmy/adk/store.py +703 -0
  41. sqlspec/adapters/asyncmy/config.py +302 -0
  42. sqlspec/adapters/asyncmy/core.cpython-310-aarch64-linux-gnu.so +0 -0
  43. sqlspec/adapters/asyncmy/core.py +360 -0
  44. sqlspec/adapters/asyncmy/data_dictionary.py +124 -0
  45. sqlspec/adapters/asyncmy/driver.py +383 -0
  46. sqlspec/adapters/asyncmy/events/__init__.py +5 -0
  47. sqlspec/adapters/asyncmy/events/store.py +104 -0
  48. sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
  49. sqlspec/adapters/asyncmy/litestar/store.py +296 -0
  50. sqlspec/adapters/asyncpg/__init__.py +19 -0
  51. sqlspec/adapters/asyncpg/_typing.py +88 -0
  52. sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
  53. sqlspec/adapters/asyncpg/adk/store.py +748 -0
  54. sqlspec/adapters/asyncpg/config.py +569 -0
  55. sqlspec/adapters/asyncpg/core.cpython-310-aarch64-linux-gnu.so +0 -0
  56. sqlspec/adapters/asyncpg/core.py +367 -0
  57. sqlspec/adapters/asyncpg/data_dictionary.py +162 -0
  58. sqlspec/adapters/asyncpg/driver.py +487 -0
  59. sqlspec/adapters/asyncpg/events/__init__.py +6 -0
  60. sqlspec/adapters/asyncpg/events/backend.py +286 -0
  61. sqlspec/adapters/asyncpg/events/store.py +40 -0
  62. sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
  63. sqlspec/adapters/asyncpg/litestar/store.py +251 -0
  64. sqlspec/adapters/bigquery/__init__.py +14 -0
  65. sqlspec/adapters/bigquery/_typing.py +86 -0
  66. sqlspec/adapters/bigquery/adk/__init__.py +5 -0
  67. sqlspec/adapters/bigquery/adk/store.py +827 -0
  68. sqlspec/adapters/bigquery/config.py +353 -0
  69. sqlspec/adapters/bigquery/core.cpython-310-aarch64-linux-gnu.so +0 -0
  70. sqlspec/adapters/bigquery/core.py +715 -0
  71. sqlspec/adapters/bigquery/data_dictionary.py +128 -0
  72. sqlspec/adapters/bigquery/driver.py +548 -0
  73. sqlspec/adapters/bigquery/events/__init__.py +5 -0
  74. sqlspec/adapters/bigquery/events/store.py +139 -0
  75. sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
  76. sqlspec/adapters/bigquery/litestar/store.py +325 -0
  77. sqlspec/adapters/bigquery/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  78. sqlspec/adapters/bigquery/type_converter.py +107 -0
  79. sqlspec/adapters/cockroach_asyncpg/__init__.py +24 -0
  80. sqlspec/adapters/cockroach_asyncpg/_typing.py +72 -0
  81. sqlspec/adapters/cockroach_asyncpg/adk/__init__.py +3 -0
  82. sqlspec/adapters/cockroach_asyncpg/adk/store.py +410 -0
  83. sqlspec/adapters/cockroach_asyncpg/config.py +238 -0
  84. sqlspec/adapters/cockroach_asyncpg/core.cpython-310-aarch64-linux-gnu.so +0 -0
  85. sqlspec/adapters/cockroach_asyncpg/core.py +55 -0
  86. sqlspec/adapters/cockroach_asyncpg/data_dictionary.py +107 -0
  87. sqlspec/adapters/cockroach_asyncpg/driver.py +144 -0
  88. sqlspec/adapters/cockroach_asyncpg/events/__init__.py +3 -0
  89. sqlspec/adapters/cockroach_asyncpg/events/store.py +20 -0
  90. sqlspec/adapters/cockroach_asyncpg/litestar/__init__.py +3 -0
  91. sqlspec/adapters/cockroach_asyncpg/litestar/store.py +142 -0
  92. sqlspec/adapters/cockroach_psycopg/__init__.py +38 -0
  93. sqlspec/adapters/cockroach_psycopg/_typing.py +129 -0
  94. sqlspec/adapters/cockroach_psycopg/adk/__init__.py +13 -0
  95. sqlspec/adapters/cockroach_psycopg/adk/store.py +868 -0
  96. sqlspec/adapters/cockroach_psycopg/config.py +484 -0
  97. sqlspec/adapters/cockroach_psycopg/core.cpython-310-aarch64-linux-gnu.so +0 -0
  98. sqlspec/adapters/cockroach_psycopg/core.py +63 -0
  99. sqlspec/adapters/cockroach_psycopg/data_dictionary.py +215 -0
  100. sqlspec/adapters/cockroach_psycopg/driver.py +284 -0
  101. sqlspec/adapters/cockroach_psycopg/events/__init__.py +6 -0
  102. sqlspec/adapters/cockroach_psycopg/events/store.py +34 -0
  103. sqlspec/adapters/cockroach_psycopg/litestar/__init__.py +3 -0
  104. sqlspec/adapters/cockroach_psycopg/litestar/store.py +325 -0
  105. sqlspec/adapters/duckdb/__init__.py +25 -0
  106. sqlspec/adapters/duckdb/_typing.py +81 -0
  107. sqlspec/adapters/duckdb/adk/__init__.py +14 -0
  108. sqlspec/adapters/duckdb/adk/store.py +850 -0
  109. sqlspec/adapters/duckdb/config.py +463 -0
  110. sqlspec/adapters/duckdb/core.cpython-310-aarch64-linux-gnu.so +0 -0
  111. sqlspec/adapters/duckdb/core.py +257 -0
  112. sqlspec/adapters/duckdb/data_dictionary.py +140 -0
  113. sqlspec/adapters/duckdb/driver.py +430 -0
  114. sqlspec/adapters/duckdb/events/__init__.py +5 -0
  115. sqlspec/adapters/duckdb/events/store.py +57 -0
  116. sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
  117. sqlspec/adapters/duckdb/litestar/store.py +330 -0
  118. sqlspec/adapters/duckdb/pool.py +293 -0
  119. sqlspec/adapters/duckdb/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  120. sqlspec/adapters/duckdb/type_converter.py +118 -0
  121. sqlspec/adapters/mock/__init__.py +72 -0
  122. sqlspec/adapters/mock/_typing.py +147 -0
  123. sqlspec/adapters/mock/config.py +483 -0
  124. sqlspec/adapters/mock/core.py +319 -0
  125. sqlspec/adapters/mock/data_dictionary.py +366 -0
  126. sqlspec/adapters/mock/driver.py +721 -0
  127. sqlspec/adapters/mysqlconnector/__init__.py +36 -0
  128. sqlspec/adapters/mysqlconnector/_typing.py +141 -0
  129. sqlspec/adapters/mysqlconnector/adk/__init__.py +15 -0
  130. sqlspec/adapters/mysqlconnector/adk/store.py +1060 -0
  131. sqlspec/adapters/mysqlconnector/config.py +394 -0
  132. sqlspec/adapters/mysqlconnector/core.cpython-310-aarch64-linux-gnu.so +0 -0
  133. sqlspec/adapters/mysqlconnector/core.py +303 -0
  134. sqlspec/adapters/mysqlconnector/data_dictionary.py +235 -0
  135. sqlspec/adapters/mysqlconnector/driver.py +483 -0
  136. sqlspec/adapters/mysqlconnector/events/__init__.py +8 -0
  137. sqlspec/adapters/mysqlconnector/events/store.py +98 -0
  138. sqlspec/adapters/mysqlconnector/litestar/__init__.py +5 -0
  139. sqlspec/adapters/mysqlconnector/litestar/store.py +426 -0
  140. sqlspec/adapters/oracledb/__init__.py +60 -0
  141. sqlspec/adapters/oracledb/_numpy_handlers.py +141 -0
  142. sqlspec/adapters/oracledb/_typing.py +182 -0
  143. sqlspec/adapters/oracledb/_uuid_handlers.py +166 -0
  144. sqlspec/adapters/oracledb/adk/__init__.py +10 -0
  145. sqlspec/adapters/oracledb/adk/store.py +2369 -0
  146. sqlspec/adapters/oracledb/config.py +550 -0
  147. sqlspec/adapters/oracledb/core.cpython-310-aarch64-linux-gnu.so +0 -0
  148. sqlspec/adapters/oracledb/core.py +543 -0
  149. sqlspec/adapters/oracledb/data_dictionary.py +536 -0
  150. sqlspec/adapters/oracledb/driver.py +1229 -0
  151. sqlspec/adapters/oracledb/events/__init__.py +16 -0
  152. sqlspec/adapters/oracledb/events/backend.py +347 -0
  153. sqlspec/adapters/oracledb/events/store.py +420 -0
  154. sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
  155. sqlspec/adapters/oracledb/litestar/store.py +781 -0
  156. sqlspec/adapters/oracledb/migrations.py +535 -0
  157. sqlspec/adapters/oracledb/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  158. sqlspec/adapters/oracledb/type_converter.py +211 -0
  159. sqlspec/adapters/psqlpy/__init__.py +17 -0
  160. sqlspec/adapters/psqlpy/_typing.py +79 -0
  161. sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
  162. sqlspec/adapters/psqlpy/adk/store.py +766 -0
  163. sqlspec/adapters/psqlpy/config.py +304 -0
  164. sqlspec/adapters/psqlpy/core.cpython-310-aarch64-linux-gnu.so +0 -0
  165. sqlspec/adapters/psqlpy/core.py +480 -0
  166. sqlspec/adapters/psqlpy/data_dictionary.py +126 -0
  167. sqlspec/adapters/psqlpy/driver.py +438 -0
  168. sqlspec/adapters/psqlpy/events/__init__.py +6 -0
  169. sqlspec/adapters/psqlpy/events/backend.py +310 -0
  170. sqlspec/adapters/psqlpy/events/store.py +20 -0
  171. sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
  172. sqlspec/adapters/psqlpy/litestar/store.py +270 -0
  173. sqlspec/adapters/psqlpy/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  174. sqlspec/adapters/psqlpy/type_converter.py +113 -0
  175. sqlspec/adapters/psycopg/__init__.py +32 -0
  176. sqlspec/adapters/psycopg/_typing.py +164 -0
  177. sqlspec/adapters/psycopg/adk/__init__.py +10 -0
  178. sqlspec/adapters/psycopg/adk/store.py +1387 -0
  179. sqlspec/adapters/psycopg/config.py +576 -0
  180. sqlspec/adapters/psycopg/core.cpython-310-aarch64-linux-gnu.so +0 -0
  181. sqlspec/adapters/psycopg/core.py +450 -0
  182. sqlspec/adapters/psycopg/data_dictionary.py +289 -0
  183. sqlspec/adapters/psycopg/driver.py +975 -0
  184. sqlspec/adapters/psycopg/events/__init__.py +20 -0
  185. sqlspec/adapters/psycopg/events/backend.py +458 -0
  186. sqlspec/adapters/psycopg/events/store.py +42 -0
  187. sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
  188. sqlspec/adapters/psycopg/litestar/store.py +552 -0
  189. sqlspec/adapters/psycopg/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  190. sqlspec/adapters/psycopg/type_converter.py +93 -0
  191. sqlspec/adapters/pymysql/__init__.py +21 -0
  192. sqlspec/adapters/pymysql/_typing.py +71 -0
  193. sqlspec/adapters/pymysql/adk/__init__.py +5 -0
  194. sqlspec/adapters/pymysql/adk/store.py +540 -0
  195. sqlspec/adapters/pymysql/config.py +195 -0
  196. sqlspec/adapters/pymysql/core.cpython-310-aarch64-linux-gnu.so +0 -0
  197. sqlspec/adapters/pymysql/core.py +299 -0
  198. sqlspec/adapters/pymysql/data_dictionary.py +122 -0
  199. sqlspec/adapters/pymysql/driver.py +259 -0
  200. sqlspec/adapters/pymysql/events/__init__.py +5 -0
  201. sqlspec/adapters/pymysql/events/store.py +50 -0
  202. sqlspec/adapters/pymysql/litestar/__init__.py +5 -0
  203. sqlspec/adapters/pymysql/litestar/store.py +232 -0
  204. sqlspec/adapters/pymysql/pool.py +137 -0
  205. sqlspec/adapters/spanner/__init__.py +40 -0
  206. sqlspec/adapters/spanner/_typing.py +86 -0
  207. sqlspec/adapters/spanner/adk/__init__.py +5 -0
  208. sqlspec/adapters/spanner/adk/store.py +732 -0
  209. sqlspec/adapters/spanner/config.py +352 -0
  210. sqlspec/adapters/spanner/core.cpython-310-aarch64-linux-gnu.so +0 -0
  211. sqlspec/adapters/spanner/core.py +188 -0
  212. sqlspec/adapters/spanner/data_dictionary.py +120 -0
  213. sqlspec/adapters/spanner/dialect/__init__.py +6 -0
  214. sqlspec/adapters/spanner/dialect/_spangres.py +57 -0
  215. sqlspec/adapters/spanner/dialect/_spanner.py +130 -0
  216. sqlspec/adapters/spanner/driver.py +373 -0
  217. sqlspec/adapters/spanner/events/__init__.py +5 -0
  218. sqlspec/adapters/spanner/events/store.py +187 -0
  219. sqlspec/adapters/spanner/litestar/__init__.py +5 -0
  220. sqlspec/adapters/spanner/litestar/store.py +291 -0
  221. sqlspec/adapters/spanner/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  222. sqlspec/adapters/spanner/type_converter.py +331 -0
  223. sqlspec/adapters/sqlite/__init__.py +19 -0
  224. sqlspec/adapters/sqlite/_typing.py +80 -0
  225. sqlspec/adapters/sqlite/adk/__init__.py +5 -0
  226. sqlspec/adapters/sqlite/adk/store.py +958 -0
  227. sqlspec/adapters/sqlite/config.py +280 -0
  228. sqlspec/adapters/sqlite/core.cpython-310-aarch64-linux-gnu.so +0 -0
  229. sqlspec/adapters/sqlite/core.py +312 -0
  230. sqlspec/adapters/sqlite/data_dictionary.py +202 -0
  231. sqlspec/adapters/sqlite/driver.py +359 -0
  232. sqlspec/adapters/sqlite/events/__init__.py +5 -0
  233. sqlspec/adapters/sqlite/events/store.py +20 -0
  234. sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
  235. sqlspec/adapters/sqlite/litestar/store.py +316 -0
  236. sqlspec/adapters/sqlite/pool.py +198 -0
  237. sqlspec/adapters/sqlite/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  238. sqlspec/adapters/sqlite/type_converter.py +114 -0
  239. sqlspec/base.py +747 -0
  240. sqlspec/builder/__init__.py +179 -0
  241. sqlspec/builder/_base.cpython-310-aarch64-linux-gnu.so +0 -0
  242. sqlspec/builder/_base.py +1022 -0
  243. sqlspec/builder/_column.cpython-310-aarch64-linux-gnu.so +0 -0
  244. sqlspec/builder/_column.py +521 -0
  245. sqlspec/builder/_ddl.cpython-310-aarch64-linux-gnu.so +0 -0
  246. sqlspec/builder/_ddl.py +1642 -0
  247. sqlspec/builder/_delete.cpython-310-aarch64-linux-gnu.so +0 -0
  248. sqlspec/builder/_delete.py +95 -0
  249. sqlspec/builder/_dml.cpython-310-aarch64-linux-gnu.so +0 -0
  250. sqlspec/builder/_dml.py +365 -0
  251. sqlspec/builder/_explain.cpython-310-aarch64-linux-gnu.so +0 -0
  252. sqlspec/builder/_explain.py +579 -0
  253. sqlspec/builder/_expression_wrappers.cpython-310-aarch64-linux-gnu.so +0 -0
  254. sqlspec/builder/_expression_wrappers.py +46 -0
  255. sqlspec/builder/_factory.cpython-310-aarch64-linux-gnu.so +0 -0
  256. sqlspec/builder/_factory.py +1697 -0
  257. sqlspec/builder/_insert.cpython-310-aarch64-linux-gnu.so +0 -0
  258. sqlspec/builder/_insert.py +328 -0
  259. sqlspec/builder/_join.cpython-310-aarch64-linux-gnu.so +0 -0
  260. sqlspec/builder/_join.py +499 -0
  261. sqlspec/builder/_merge.cpython-310-aarch64-linux-gnu.so +0 -0
  262. sqlspec/builder/_merge.py +821 -0
  263. sqlspec/builder/_parsing_utils.cpython-310-aarch64-linux-gnu.so +0 -0
  264. sqlspec/builder/_parsing_utils.py +297 -0
  265. sqlspec/builder/_select.cpython-310-aarch64-linux-gnu.so +0 -0
  266. sqlspec/builder/_select.py +1660 -0
  267. sqlspec/builder/_temporal.cpython-310-aarch64-linux-gnu.so +0 -0
  268. sqlspec/builder/_temporal.py +139 -0
  269. sqlspec/builder/_update.cpython-310-aarch64-linux-gnu.so +0 -0
  270. sqlspec/builder/_update.py +173 -0
  271. sqlspec/builder/_vector_expressions.py +267 -0
  272. sqlspec/cli.py +911 -0
  273. sqlspec/config.py +1755 -0
  274. sqlspec/core/__init__.py +374 -0
  275. sqlspec/core/_correlation.cpython-310-aarch64-linux-gnu.so +0 -0
  276. sqlspec/core/_correlation.py +176 -0
  277. sqlspec/core/cache.cpython-310-aarch64-linux-gnu.so +0 -0
  278. sqlspec/core/cache.py +1069 -0
  279. sqlspec/core/compiler.cpython-310-aarch64-linux-gnu.so +0 -0
  280. sqlspec/core/compiler.py +954 -0
  281. sqlspec/core/explain.cpython-310-aarch64-linux-gnu.so +0 -0
  282. sqlspec/core/explain.py +275 -0
  283. sqlspec/core/filters.cpython-310-aarch64-linux-gnu.so +0 -0
  284. sqlspec/core/filters.py +952 -0
  285. sqlspec/core/hashing.cpython-310-aarch64-linux-gnu.so +0 -0
  286. sqlspec/core/hashing.py +262 -0
  287. sqlspec/core/metrics.cpython-310-aarch64-linux-gnu.so +0 -0
  288. sqlspec/core/metrics.py +83 -0
  289. sqlspec/core/parameters/__init__.py +71 -0
  290. sqlspec/core/parameters/_alignment.cpython-310-aarch64-linux-gnu.so +0 -0
  291. sqlspec/core/parameters/_alignment.py +270 -0
  292. sqlspec/core/parameters/_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  293. sqlspec/core/parameters/_converter.py +543 -0
  294. sqlspec/core/parameters/_processor.cpython-310-aarch64-linux-gnu.so +0 -0
  295. sqlspec/core/parameters/_processor.py +505 -0
  296. sqlspec/core/parameters/_registry.cpython-310-aarch64-linux-gnu.so +0 -0
  297. sqlspec/core/parameters/_registry.py +206 -0
  298. sqlspec/core/parameters/_transformers.cpython-310-aarch64-linux-gnu.so +0 -0
  299. sqlspec/core/parameters/_transformers.py +292 -0
  300. sqlspec/core/parameters/_types.cpython-310-aarch64-linux-gnu.so +0 -0
  301. sqlspec/core/parameters/_types.py +499 -0
  302. sqlspec/core/parameters/_validator.cpython-310-aarch64-linux-gnu.so +0 -0
  303. sqlspec/core/parameters/_validator.py +180 -0
  304. sqlspec/core/pipeline.cpython-310-aarch64-linux-gnu.so +0 -0
  305. sqlspec/core/pipeline.py +319 -0
  306. sqlspec/core/query_modifiers.cpython-310-aarch64-linux-gnu.so +0 -0
  307. sqlspec/core/query_modifiers.py +437 -0
  308. sqlspec/core/result/__init__.py +23 -0
  309. sqlspec/core/result/_base.cpython-310-aarch64-linux-gnu.so +0 -0
  310. sqlspec/core/result/_base.py +1121 -0
  311. sqlspec/core/result/_io.cpython-310-aarch64-linux-gnu.so +0 -0
  312. sqlspec/core/result/_io.py +28 -0
  313. sqlspec/core/splitter.cpython-310-aarch64-linux-gnu.so +0 -0
  314. sqlspec/core/splitter.py +966 -0
  315. sqlspec/core/stack.cpython-310-aarch64-linux-gnu.so +0 -0
  316. sqlspec/core/stack.py +163 -0
  317. sqlspec/core/statement.cpython-310-aarch64-linux-gnu.so +0 -0
  318. sqlspec/core/statement.py +1503 -0
  319. sqlspec/core/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
  320. sqlspec/core/type_converter.py +339 -0
  321. sqlspec/data_dictionary/__init__.py +22 -0
  322. sqlspec/data_dictionary/_loader.py +123 -0
  323. sqlspec/data_dictionary/_registry.cpython-310-aarch64-linux-gnu.so +0 -0
  324. sqlspec/data_dictionary/_registry.py +74 -0
  325. sqlspec/data_dictionary/_types.cpython-310-aarch64-linux-gnu.so +0 -0
  326. sqlspec/data_dictionary/_types.py +121 -0
  327. sqlspec/data_dictionary/dialects/__init__.py +21 -0
  328. sqlspec/data_dictionary/dialects/bigquery.cpython-310-aarch64-linux-gnu.so +0 -0
  329. sqlspec/data_dictionary/dialects/bigquery.py +49 -0
  330. sqlspec/data_dictionary/dialects/cockroachdb.cpython-310-aarch64-linux-gnu.so +0 -0
  331. sqlspec/data_dictionary/dialects/cockroachdb.py +43 -0
  332. sqlspec/data_dictionary/dialects/duckdb.cpython-310-aarch64-linux-gnu.so +0 -0
  333. sqlspec/data_dictionary/dialects/duckdb.py +47 -0
  334. sqlspec/data_dictionary/dialects/mysql.cpython-310-aarch64-linux-gnu.so +0 -0
  335. sqlspec/data_dictionary/dialects/mysql.py +42 -0
  336. sqlspec/data_dictionary/dialects/oracle.cpython-310-aarch64-linux-gnu.so +0 -0
  337. sqlspec/data_dictionary/dialects/oracle.py +34 -0
  338. sqlspec/data_dictionary/dialects/postgres.cpython-310-aarch64-linux-gnu.so +0 -0
  339. sqlspec/data_dictionary/dialects/postgres.py +46 -0
  340. sqlspec/data_dictionary/dialects/spanner.cpython-310-aarch64-linux-gnu.so +0 -0
  341. sqlspec/data_dictionary/dialects/spanner.py +37 -0
  342. sqlspec/data_dictionary/dialects/sqlite.cpython-310-aarch64-linux-gnu.so +0 -0
  343. sqlspec/data_dictionary/dialects/sqlite.py +42 -0
  344. sqlspec/data_dictionary/sql/.gitkeep +0 -0
  345. sqlspec/data_dictionary/sql/bigquery/columns.sql +23 -0
  346. sqlspec/data_dictionary/sql/bigquery/foreign_keys.sql +34 -0
  347. sqlspec/data_dictionary/sql/bigquery/indexes.sql +19 -0
  348. sqlspec/data_dictionary/sql/bigquery/tables.sql +33 -0
  349. sqlspec/data_dictionary/sql/bigquery/version.sql +3 -0
  350. sqlspec/data_dictionary/sql/cockroachdb/columns.sql +34 -0
  351. sqlspec/data_dictionary/sql/cockroachdb/foreign_keys.sql +40 -0
  352. sqlspec/data_dictionary/sql/cockroachdb/indexes.sql +32 -0
  353. sqlspec/data_dictionary/sql/cockroachdb/tables.sql +44 -0
  354. sqlspec/data_dictionary/sql/cockroachdb/version.sql +3 -0
  355. sqlspec/data_dictionary/sql/duckdb/columns.sql +23 -0
  356. sqlspec/data_dictionary/sql/duckdb/foreign_keys.sql +36 -0
  357. sqlspec/data_dictionary/sql/duckdb/indexes.sql +19 -0
  358. sqlspec/data_dictionary/sql/duckdb/tables.sql +38 -0
  359. sqlspec/data_dictionary/sql/duckdb/version.sql +3 -0
  360. sqlspec/data_dictionary/sql/mysql/columns.sql +23 -0
  361. sqlspec/data_dictionary/sql/mysql/foreign_keys.sql +28 -0
  362. sqlspec/data_dictionary/sql/mysql/indexes.sql +26 -0
  363. sqlspec/data_dictionary/sql/mysql/tables.sql +33 -0
  364. sqlspec/data_dictionary/sql/mysql/version.sql +3 -0
  365. sqlspec/data_dictionary/sql/oracle/columns.sql +23 -0
  366. sqlspec/data_dictionary/sql/oracle/foreign_keys.sql +48 -0
  367. sqlspec/data_dictionary/sql/oracle/indexes.sql +44 -0
  368. sqlspec/data_dictionary/sql/oracle/tables.sql +25 -0
  369. sqlspec/data_dictionary/sql/oracle/version.sql +20 -0
  370. sqlspec/data_dictionary/sql/postgres/columns.sql +34 -0
  371. sqlspec/data_dictionary/sql/postgres/foreign_keys.sql +40 -0
  372. sqlspec/data_dictionary/sql/postgres/indexes.sql +56 -0
  373. sqlspec/data_dictionary/sql/postgres/tables.sql +44 -0
  374. sqlspec/data_dictionary/sql/postgres/version.sql +3 -0
  375. sqlspec/data_dictionary/sql/spanner/columns.sql +23 -0
  376. sqlspec/data_dictionary/sql/spanner/foreign_keys.sql +70 -0
  377. sqlspec/data_dictionary/sql/spanner/indexes.sql +30 -0
  378. sqlspec/data_dictionary/sql/spanner/tables.sql +9 -0
  379. sqlspec/data_dictionary/sql/spanner/version.sql +3 -0
  380. sqlspec/data_dictionary/sql/sqlite/columns.sql +23 -0
  381. sqlspec/data_dictionary/sql/sqlite/foreign_keys.sql +22 -0
  382. sqlspec/data_dictionary/sql/sqlite/indexes.sql +7 -0
  383. sqlspec/data_dictionary/sql/sqlite/tables.sql +28 -0
  384. sqlspec/data_dictionary/sql/sqlite/version.sql +3 -0
  385. sqlspec/driver/__init__.py +32 -0
  386. sqlspec/driver/_async.cpython-310-aarch64-linux-gnu.so +0 -0
  387. sqlspec/driver/_async.py +1737 -0
  388. sqlspec/driver/_common.cpython-310-aarch64-linux-gnu.so +0 -0
  389. sqlspec/driver/_common.py +1478 -0
  390. sqlspec/driver/_sql_helpers.cpython-310-aarch64-linux-gnu.so +0 -0
  391. sqlspec/driver/_sql_helpers.py +148 -0
  392. sqlspec/driver/_storage_helpers.cpython-310-aarch64-linux-gnu.so +0 -0
  393. sqlspec/driver/_storage_helpers.py +144 -0
  394. sqlspec/driver/_sync.cpython-310-aarch64-linux-gnu.so +0 -0
  395. sqlspec/driver/_sync.py +1710 -0
  396. sqlspec/exceptions.py +338 -0
  397. sqlspec/extensions/__init__.py +0 -0
  398. sqlspec/extensions/adk/__init__.py +70 -0
  399. sqlspec/extensions/adk/_types.py +51 -0
  400. sqlspec/extensions/adk/converters.py +172 -0
  401. sqlspec/extensions/adk/memory/__init__.py +69 -0
  402. sqlspec/extensions/adk/memory/_types.py +30 -0
  403. sqlspec/extensions/adk/memory/converters.py +149 -0
  404. sqlspec/extensions/adk/memory/service.py +217 -0
  405. sqlspec/extensions/adk/memory/store.py +569 -0
  406. sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +246 -0
  407. sqlspec/extensions/adk/migrations/__init__.py +0 -0
  408. sqlspec/extensions/adk/service.py +225 -0
  409. sqlspec/extensions/adk/store.py +567 -0
  410. sqlspec/extensions/events/__init__.py +51 -0
  411. sqlspec/extensions/events/_channel.py +703 -0
  412. sqlspec/extensions/events/_hints.py +45 -0
  413. sqlspec/extensions/events/_models.py +23 -0
  414. sqlspec/extensions/events/_payload.py +69 -0
  415. sqlspec/extensions/events/_protocols.py +134 -0
  416. sqlspec/extensions/events/_queue.py +461 -0
  417. sqlspec/extensions/events/_store.py +209 -0
  418. sqlspec/extensions/events/migrations/0001_create_event_queue.py +59 -0
  419. sqlspec/extensions/events/migrations/__init__.py +3 -0
  420. sqlspec/extensions/fastapi/__init__.py +19 -0
  421. sqlspec/extensions/fastapi/extension.py +351 -0
  422. sqlspec/extensions/fastapi/providers.py +607 -0
  423. sqlspec/extensions/flask/__init__.py +37 -0
  424. sqlspec/extensions/flask/_state.py +76 -0
  425. sqlspec/extensions/flask/_utils.py +71 -0
  426. sqlspec/extensions/flask/extension.py +519 -0
  427. sqlspec/extensions/litestar/__init__.py +28 -0
  428. sqlspec/extensions/litestar/_utils.py +52 -0
  429. sqlspec/extensions/litestar/channels.py +165 -0
  430. sqlspec/extensions/litestar/cli.py +102 -0
  431. sqlspec/extensions/litestar/config.py +90 -0
  432. sqlspec/extensions/litestar/handlers.py +316 -0
  433. sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
  434. sqlspec/extensions/litestar/migrations/__init__.py +3 -0
  435. sqlspec/extensions/litestar/plugin.py +671 -0
  436. sqlspec/extensions/litestar/providers.py +526 -0
  437. sqlspec/extensions/litestar/store.py +296 -0
  438. sqlspec/extensions/otel/__init__.py +58 -0
  439. sqlspec/extensions/prometheus/__init__.py +113 -0
  440. sqlspec/extensions/starlette/__init__.py +19 -0
  441. sqlspec/extensions/starlette/_state.py +30 -0
  442. sqlspec/extensions/starlette/_utils.py +96 -0
  443. sqlspec/extensions/starlette/extension.py +346 -0
  444. sqlspec/extensions/starlette/middleware.py +235 -0
  445. sqlspec/loader.cpython-310-aarch64-linux-gnu.so +0 -0
  446. sqlspec/loader.py +702 -0
  447. sqlspec/migrations/__init__.py +36 -0
  448. sqlspec/migrations/base.py +731 -0
  449. sqlspec/migrations/commands.py +1232 -0
  450. sqlspec/migrations/context.py +157 -0
  451. sqlspec/migrations/fix.py +204 -0
  452. sqlspec/migrations/loaders.py +443 -0
  453. sqlspec/migrations/runner.py +1172 -0
  454. sqlspec/migrations/templates.py +234 -0
  455. sqlspec/migrations/tracker.py +611 -0
  456. sqlspec/migrations/utils.py +256 -0
  457. sqlspec/migrations/validation.py +207 -0
  458. sqlspec/migrations/version.py +446 -0
  459. sqlspec/observability/__init__.py +55 -0
  460. sqlspec/observability/_common.cpython-310-aarch64-linux-gnu.so +0 -0
  461. sqlspec/observability/_common.py +77 -0
  462. sqlspec/observability/_config.cpython-310-aarch64-linux-gnu.so +0 -0
  463. sqlspec/observability/_config.py +348 -0
  464. sqlspec/observability/_diagnostics.cpython-310-aarch64-linux-gnu.so +0 -0
  465. sqlspec/observability/_diagnostics.py +74 -0
  466. sqlspec/observability/_dispatcher.cpython-310-aarch64-linux-gnu.so +0 -0
  467. sqlspec/observability/_dispatcher.py +152 -0
  468. sqlspec/observability/_formatters/__init__.py +13 -0
  469. sqlspec/observability/_formatters/_aws.cpython-310-aarch64-linux-gnu.so +0 -0
  470. sqlspec/observability/_formatters/_aws.py +102 -0
  471. sqlspec/observability/_formatters/_azure.cpython-310-aarch64-linux-gnu.so +0 -0
  472. sqlspec/observability/_formatters/_azure.py +96 -0
  473. sqlspec/observability/_formatters/_base.cpython-310-aarch64-linux-gnu.so +0 -0
  474. sqlspec/observability/_formatters/_base.py +57 -0
  475. sqlspec/observability/_formatters/_gcp.cpython-310-aarch64-linux-gnu.so +0 -0
  476. sqlspec/observability/_formatters/_gcp.py +131 -0
  477. sqlspec/observability/_formatting.py +58 -0
  478. sqlspec/observability/_observer.cpython-310-aarch64-linux-gnu.so +0 -0
  479. sqlspec/observability/_observer.py +357 -0
  480. sqlspec/observability/_runtime.cpython-310-aarch64-linux-gnu.so +0 -0
  481. sqlspec/observability/_runtime.py +420 -0
  482. sqlspec/observability/_sampling.cpython-310-aarch64-linux-gnu.so +0 -0
  483. sqlspec/observability/_sampling.py +188 -0
  484. sqlspec/observability/_spans.cpython-310-aarch64-linux-gnu.so +0 -0
  485. sqlspec/observability/_spans.py +161 -0
  486. sqlspec/protocols.py +916 -0
  487. sqlspec/py.typed +0 -0
  488. sqlspec/storage/__init__.py +48 -0
  489. sqlspec/storage/_utils.py +104 -0
  490. sqlspec/storage/backends/__init__.py +1 -0
  491. sqlspec/storage/backends/base.py +253 -0
  492. sqlspec/storage/backends/fsspec.py +529 -0
  493. sqlspec/storage/backends/local.py +441 -0
  494. sqlspec/storage/backends/obstore.py +916 -0
  495. sqlspec/storage/errors.py +104 -0
  496. sqlspec/storage/pipeline.py +582 -0
  497. sqlspec/storage/registry.py +301 -0
  498. sqlspec/typing.py +395 -0
  499. sqlspec/utils/__init__.py +7 -0
  500. sqlspec/utils/arrow_helpers.py +318 -0
  501. sqlspec/utils/config_tools.py +332 -0
  502. sqlspec/utils/correlation.cpython-310-aarch64-linux-gnu.so +0 -0
  503. sqlspec/utils/correlation.py +134 -0
  504. sqlspec/utils/deprecation.py +190 -0
  505. sqlspec/utils/fixtures.cpython-310-aarch64-linux-gnu.so +0 -0
  506. sqlspec/utils/fixtures.py +258 -0
  507. sqlspec/utils/logging.py +222 -0
  508. sqlspec/utils/module_loader.py +306 -0
  509. sqlspec/utils/portal.cpython-310-aarch64-linux-gnu.so +0 -0
  510. sqlspec/utils/portal.py +375 -0
  511. sqlspec/utils/schema.cpython-310-aarch64-linux-gnu.so +0 -0
  512. sqlspec/utils/schema.py +485 -0
  513. sqlspec/utils/serializers.cpython-310-aarch64-linux-gnu.so +0 -0
  514. sqlspec/utils/serializers.py +408 -0
  515. sqlspec/utils/singleton.cpython-310-aarch64-linux-gnu.so +0 -0
  516. sqlspec/utils/singleton.py +41 -0
  517. sqlspec/utils/sync_tools.cpython-310-aarch64-linux-gnu.so +0 -0
  518. sqlspec/utils/sync_tools.py +311 -0
  519. sqlspec/utils/text.cpython-310-aarch64-linux-gnu.so +0 -0
  520. sqlspec/utils/text.py +108 -0
  521. sqlspec/utils/type_converters.cpython-310-aarch64-linux-gnu.so +0 -0
  522. sqlspec/utils/type_converters.py +128 -0
  523. sqlspec/utils/type_guards.cpython-310-aarch64-linux-gnu.so +0 -0
  524. sqlspec/utils/type_guards.py +1360 -0
  525. sqlspec/utils/uuids.cpython-310-aarch64-linux-gnu.so +0 -0
  526. sqlspec/utils/uuids.py +225 -0
  527. sqlspec-0.36.0.dist-info/METADATA +205 -0
  528. sqlspec-0.36.0.dist-info/RECORD +531 -0
  529. sqlspec-0.36.0.dist-info/WHEEL +7 -0
  530. sqlspec-0.36.0.dist-info/entry_points.txt +2 -0
  531. sqlspec-0.36.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,550 @@
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._numpy_handlers import register_numpy_handlers # pyright: ignore[reportPrivateUsage]
10
+ from sqlspec.adapters.oracledb._typing import (
11
+ OracleAsyncConnection,
12
+ OracleAsyncConnectionPool,
13
+ OracleSyncConnection,
14
+ OracleSyncConnectionPool,
15
+ )
16
+ from sqlspec.adapters.oracledb._uuid_handlers import register_uuid_handlers
17
+ from sqlspec.adapters.oracledb.core import apply_driver_features, default_statement_config, requires_session_callback
18
+ from sqlspec.adapters.oracledb.driver import (
19
+ OracleAsyncCursor,
20
+ OracleAsyncDriver,
21
+ OracleAsyncExceptionHandler,
22
+ OracleAsyncSessionContext,
23
+ OracleSyncCursor,
24
+ OracleSyncDriver,
25
+ OracleSyncExceptionHandler,
26
+ OracleSyncSessionContext,
27
+ )
28
+ from sqlspec.adapters.oracledb.migrations import OracleAsyncMigrationTracker, OracleSyncMigrationTracker
29
+ from sqlspec.config import AsyncDatabaseConfig, ExtensionConfigs, SyncDatabaseConfig
30
+ from sqlspec.utils.config_tools import normalize_connection_config, reject_pool_aliases
31
+
32
+ if TYPE_CHECKING:
33
+ from collections.abc import Callable
34
+
35
+ from oracledb import AuthMode
36
+
37
+ from sqlspec.core import StatementConfig
38
+
39
+
40
+ __all__ = (
41
+ "OracleAsyncConfig",
42
+ "OracleConnectionParams",
43
+ "OracleDriverFeatures",
44
+ "OraclePoolParams",
45
+ "OracleSyncConfig",
46
+ )
47
+
48
+
49
+ class OracleConnectionParams(TypedDict):
50
+ """OracleDB connection parameters."""
51
+
52
+ dsn: NotRequired[str]
53
+ user: NotRequired[str]
54
+ password: NotRequired[str]
55
+ host: NotRequired[str]
56
+ port: NotRequired[int]
57
+ service_name: NotRequired[str]
58
+ sid: NotRequired[str]
59
+ wallet_location: NotRequired[str]
60
+ wallet_password: NotRequired[str]
61
+ config_dir: NotRequired[str]
62
+ tcp_connect_timeout: NotRequired[float]
63
+ retry_count: NotRequired[int]
64
+ retry_delay: NotRequired[int]
65
+ mode: NotRequired["AuthMode"]
66
+ events: NotRequired[bool]
67
+ edition: NotRequired[str]
68
+
69
+
70
+ class OraclePoolParams(OracleConnectionParams):
71
+ """OracleDB pool parameters."""
72
+
73
+ min: NotRequired[int]
74
+ max: NotRequired[int]
75
+ increment: NotRequired[int]
76
+ threaded: NotRequired[bool]
77
+ getmode: NotRequired[Any]
78
+ homogeneous: NotRequired[bool]
79
+ timeout: NotRequired[int]
80
+ wait_timeout: NotRequired[int]
81
+ max_lifetime_session: NotRequired[int]
82
+ session_callback: NotRequired["Callable[..., Any]"]
83
+ max_sessions_per_shard: NotRequired[int]
84
+ soda_metadata_cache: NotRequired[bool]
85
+ ping_interval: NotRequired[int]
86
+ extra: NotRequired["dict[str, Any]"]
87
+
88
+
89
+ class OracleDriverFeatures(TypedDict):
90
+ """Oracle driver feature flags.
91
+
92
+ enable_numpy_vectors: Enable automatic NumPy array ↔ Oracle VECTOR conversion.
93
+ Requires NumPy and Oracle Database 23ai or higher with VECTOR data type support.
94
+ Defaults to True when NumPy is installed.
95
+ Provides automatic bidirectional conversion between NumPy ndarrays and Oracle VECTOR columns.
96
+ Supports float32, float64, int8, and uint8 dtypes.
97
+ enable_lowercase_column_names: Normalize implicit Oracle uppercase column names to lowercase.
98
+ Targets unquoted Oracle identifiers that default to uppercase while preserving quoted case-sensitive aliases.
99
+ Defaults to True for compatibility with schema libraries expecting snake_case fields.
100
+ enable_uuid_binary: Enable automatic UUID ↔ RAW(16) binary conversion.
101
+ When True (default), Python UUID objects are automatically converted to/from
102
+ RAW(16) binary format for optimal storage efficiency (16 bytes vs 36 bytes).
103
+ Applies only to RAW(16) columns; other RAW sizes remain unchanged.
104
+ Uses Python's stdlib uuid module (no external dependencies).
105
+ Defaults to True for improved type safety and storage efficiency.
106
+ enable_events: Enable database event channel support.
107
+ Defaults to True when extension_config["events"] is configured.
108
+ Provides pub/sub capabilities via Oracle Advanced Queuing or table-backed fallback.
109
+ Requires extension_config["events"] for migration setup when using table_queue backend.
110
+ events_backend: Event channel backend selection.
111
+ Options: "advanced_queue", "table_queue"
112
+ - "advanced_queue": Oracle Advanced Queuing (native messaging, requires DBMS_AQADM privileges)
113
+ - "table_queue": Durable table-backed queue with retries and exactly-once delivery
114
+ Defaults to "table_queue" (works on all Oracle editions without special privileges).
115
+ """
116
+
117
+ enable_numpy_vectors: NotRequired[bool]
118
+ enable_lowercase_column_names: NotRequired[bool]
119
+ enable_uuid_binary: NotRequired[bool]
120
+ enable_events: NotRequired[bool]
121
+ events_backend: NotRequired[str]
122
+
123
+
124
+ class OracleSyncConnectionContext:
125
+ """Context manager for Oracle sync connections."""
126
+
127
+ __slots__ = ("_config", "_conn")
128
+
129
+ def __init__(self, config: "OracleSyncConfig") -> None:
130
+ self._config = config
131
+ self._conn: OracleSyncConnection | None = None
132
+
133
+ def __enter__(self) -> "OracleSyncConnection":
134
+ if self._config.connection_instance is None:
135
+ self._config.connection_instance = self._config.create_pool()
136
+ self._conn = self._config.connection_instance.acquire()
137
+ return self._conn
138
+
139
+ def __exit__(
140
+ self, exc_type: "type[BaseException] | None", exc_val: "BaseException | None", exc_tb: Any
141
+ ) -> bool | None:
142
+ if self._conn:
143
+ if self._config.connection_instance:
144
+ self._config.connection_instance.release(self._conn)
145
+ self._conn = None
146
+ return None
147
+
148
+
149
+ class _OracleSyncSessionConnectionHandler:
150
+ __slots__ = ("_config", "_conn")
151
+
152
+ def __init__(self, config: "OracleSyncConfig") -> None:
153
+ self._config = config
154
+ self._conn: OracleSyncConnection | None = None
155
+
156
+ def acquire_connection(self) -> "OracleSyncConnection":
157
+ if self._config.connection_instance is None:
158
+ self._config.connection_instance = self._config.create_pool()
159
+ self._conn = self._config.connection_instance.acquire()
160
+ return self._conn
161
+
162
+ def release_connection(self, _conn: "OracleSyncConnection") -> None:
163
+ if self._conn is None:
164
+ return
165
+ if self._config.connection_instance:
166
+ self._config.connection_instance.release(self._conn)
167
+ self._conn = None
168
+
169
+
170
+ class OracleSyncConfig(SyncDatabaseConfig[OracleSyncConnection, "OracleSyncConnectionPool", OracleSyncDriver]):
171
+ """Configuration for Oracle synchronous database connections."""
172
+
173
+ __slots__ = ()
174
+
175
+ driver_type: ClassVar[type[OracleSyncDriver]] = OracleSyncDriver
176
+ connection_type: "ClassVar[type[OracleSyncConnection]]" = OracleSyncConnection
177
+ migration_tracker_type: "ClassVar[type[OracleSyncMigrationTracker]]" = OracleSyncMigrationTracker
178
+ supports_transactional_ddl: ClassVar[bool] = False
179
+ supports_native_arrow_export: ClassVar[bool] = True
180
+ supports_native_arrow_import: ClassVar[bool] = True
181
+ supports_native_parquet_export: ClassVar[bool] = True
182
+ supports_native_parquet_import: ClassVar[bool] = True
183
+
184
+ def __init__(
185
+ self,
186
+ *,
187
+ connection_config: "OraclePoolParams | dict[str, Any] | None" = None,
188
+ connection_instance: "OracleSyncConnectionPool | None" = None,
189
+ migration_config: "dict[str, Any] | None" = None,
190
+ statement_config: "StatementConfig | None" = None,
191
+ driver_features: "OracleDriverFeatures | dict[str, Any] | None" = None,
192
+ bind_key: "str | None" = None,
193
+ extension_config: "ExtensionConfigs | None" = None,
194
+ **kwargs: Any,
195
+ ) -> None:
196
+ """Initialize Oracle synchronous configuration.
197
+
198
+ Args:
199
+ connection_config: Connection and pool configuration parameters.
200
+ connection_instance: Existing pool instance to use.
201
+ migration_config: Migration configuration.
202
+ statement_config: Default SQL statement configuration.
203
+ driver_features: Optional driver feature configuration (TypedDict or dict).
204
+ bind_key: Optional unique identifier for this configuration.
205
+ extension_config: Extension-specific configuration (e.g., Litestar plugin settings).
206
+ **kwargs: Additional keyword arguments.
207
+ """
208
+ reject_pool_aliases(kwargs)
209
+
210
+ connection_config = normalize_connection_config(connection_config)
211
+ statement_config = statement_config or default_statement_config
212
+
213
+ driver_features = apply_driver_features(driver_features)
214
+
215
+ super().__init__(
216
+ connection_config=connection_config,
217
+ connection_instance=connection_instance,
218
+ migration_config=migration_config,
219
+ statement_config=statement_config,
220
+ driver_features=driver_features,
221
+ bind_key=bind_key,
222
+ extension_config=extension_config,
223
+ **kwargs,
224
+ )
225
+
226
+ def _create_pool(self) -> "OracleSyncConnectionPool":
227
+ """Create the actual connection pool."""
228
+ config = dict(self.connection_config)
229
+
230
+ if requires_session_callback(self.driver_features):
231
+ config["session_callback"] = self._init_connection
232
+
233
+ return oracledb.create_pool(**config)
234
+
235
+ def _init_connection(self, connection: "OracleSyncConnection", tag: str) -> None:
236
+ """Initialize connection with optional type handlers.
237
+
238
+ Registers NumPy vector handlers and UUID binary handlers when enabled.
239
+ Registration order ensures handler chaining works correctly.
240
+
241
+ Args:
242
+ connection: Oracle connection to initialize.
243
+ tag: Connection tag for session state (unused).
244
+ """
245
+ if self.driver_features.get("enable_numpy_vectors", False):
246
+ register_numpy_handlers(connection)
247
+
248
+ if self.driver_features.get("enable_uuid_binary", False):
249
+ register_uuid_handlers(connection)
250
+
251
+ def _close_pool(self) -> None:
252
+ """Close the actual connection pool."""
253
+ if self.connection_instance:
254
+ self.connection_instance.close()
255
+ self.connection_instance = None
256
+
257
+ def create_connection(self) -> "OracleSyncConnection":
258
+ """Create a single connection (not from pool).
259
+
260
+ Returns:
261
+ An Oracle Connection instance.
262
+ """
263
+ if self.connection_instance is None:
264
+ self.connection_instance = self.create_pool()
265
+ return self.connection_instance.acquire()
266
+
267
+ def provide_connection(self) -> "OracleSyncConnectionContext":
268
+ """Provide a connection context manager.
269
+
270
+ Returns:
271
+ An Oracle Connection context manager.
272
+ """
273
+ return OracleSyncConnectionContext(self)
274
+
275
+ def provide_session(
276
+ self, *_args: Any, statement_config: "StatementConfig | None" = None, **_kwargs: Any
277
+ ) -> "OracleSyncSessionContext":
278
+ """Provide a driver session context manager.
279
+
280
+ Args:
281
+ *_args: Positional arguments (unused).
282
+ statement_config: Optional statement configuration override.
283
+ **_kwargs: Keyword arguments (unused).
284
+
285
+ Returns:
286
+ An OracleSyncDriver session context manager.
287
+ """
288
+ handler = _OracleSyncSessionConnectionHandler(self)
289
+
290
+ return OracleSyncSessionContext(
291
+ acquire_connection=handler.acquire_connection,
292
+ release_connection=handler.release_connection,
293
+ statement_config=statement_config or self.statement_config or default_statement_config,
294
+ driver_features=self.driver_features,
295
+ prepare_driver=self._prepare_driver,
296
+ )
297
+
298
+ def provide_pool(self) -> "OracleSyncConnectionPool":
299
+ """Provide pool instance.
300
+
301
+ Returns:
302
+ The connection pool.
303
+ """
304
+ if not self.connection_instance:
305
+ self.connection_instance = self.create_pool()
306
+ return self.connection_instance
307
+
308
+ def get_signature_namespace(self) -> "dict[str, Any]":
309
+ """Get the signature namespace for OracleDB types.
310
+
311
+ Provides OracleDB-specific types for Litestar framework recognition.
312
+
313
+ Returns:
314
+ Dictionary mapping type names to types.
315
+ """
316
+
317
+ namespace = super().get_signature_namespace()
318
+ namespace.update({
319
+ "OracleAsyncConnection": OracleAsyncConnection,
320
+ "OracleAsyncConnectionPool": OracleAsyncConnectionPool,
321
+ "OracleAsyncCursor": OracleAsyncCursor,
322
+ "OracleAsyncDriver": OracleAsyncDriver,
323
+ "OracleAsyncExceptionHandler": OracleAsyncExceptionHandler,
324
+ "OracleConnectionParams": OracleConnectionParams,
325
+ "OracleDriverFeatures": OracleDriverFeatures,
326
+ "OraclePoolParams": OraclePoolParams,
327
+ "OracleSyncConnectionContext": OracleSyncConnectionContext,
328
+ "OracleSyncConnection": OracleSyncConnection,
329
+ "OracleSyncConnectionPool": OracleSyncConnectionPool,
330
+ "OracleSyncCursor": OracleSyncCursor,
331
+ "OracleSyncDriver": OracleSyncDriver,
332
+ "OracleSyncExceptionHandler": OracleSyncExceptionHandler,
333
+ "OracleSyncSessionContext": OracleSyncSessionContext,
334
+ })
335
+ return namespace
336
+
337
+
338
+ class OracleAsyncConnectionContext:
339
+ """Async context manager for Oracle connections."""
340
+
341
+ __slots__ = ("_config", "_conn")
342
+
343
+ def __init__(self, config: "OracleAsyncConfig") -> None:
344
+ self._config = config
345
+ self._conn: OracleAsyncConnection | None = None
346
+
347
+ async def __aenter__(self) -> "OracleAsyncConnection":
348
+ if self._config.connection_instance is None:
349
+ self._config.connection_instance = await self._config.create_pool()
350
+ self._conn = cast("OracleAsyncConnection", await self._config.connection_instance.acquire())
351
+ return self._conn
352
+
353
+ async def __aexit__(
354
+ self, exc_type: "type[BaseException] | None", exc_val: "BaseException | None", exc_tb: Any
355
+ ) -> bool | None:
356
+ if self._conn:
357
+ if self._config.connection_instance:
358
+ await self._config.connection_instance.release(self._conn)
359
+ self._conn = None
360
+ return None
361
+
362
+
363
+ class _OracleAsyncSessionConnectionHandler:
364
+ __slots__ = ("_config", "_conn")
365
+
366
+ def __init__(self, config: "OracleAsyncConfig") -> None:
367
+ self._config = config
368
+ self._conn: OracleAsyncConnection | None = None
369
+
370
+ async def acquire_connection(self) -> "OracleAsyncConnection":
371
+ if self._config.connection_instance is None:
372
+ self._config.connection_instance = await self._config.create_pool()
373
+ self._conn = cast("OracleAsyncConnection", await self._config.connection_instance.acquire())
374
+ return self._conn
375
+
376
+ async def release_connection(self, _conn: "OracleAsyncConnection") -> None:
377
+ if self._conn is None:
378
+ return
379
+ if self._config.connection_instance:
380
+ await self._config.connection_instance.release(self._conn)
381
+ self._conn = None
382
+
383
+
384
+ @mypyc_attr(native_class=False)
385
+ class OracleAsyncConfig(AsyncDatabaseConfig[OracleAsyncConnection, "OracleAsyncConnectionPool", OracleAsyncDriver]):
386
+ """Configuration for Oracle asynchronous database connections."""
387
+
388
+ __slots__ = ()
389
+
390
+ connection_type: "ClassVar[type[OracleAsyncConnection]]" = OracleAsyncConnection
391
+ driver_type: ClassVar[type[OracleAsyncDriver]] = OracleAsyncDriver
392
+ migration_tracker_type: "ClassVar[type[OracleAsyncMigrationTracker]]" = OracleAsyncMigrationTracker
393
+ supports_transactional_ddl: ClassVar[bool] = False
394
+ supports_native_arrow_export: ClassVar[bool] = True
395
+ supports_native_arrow_import: ClassVar[bool] = True
396
+ supports_native_parquet_export: ClassVar[bool] = True
397
+ supports_native_parquet_import: ClassVar[bool] = True
398
+
399
+ def __init__(
400
+ self,
401
+ *,
402
+ connection_config: "OraclePoolParams | dict[str, Any] | None" = None,
403
+ connection_instance: "OracleAsyncConnectionPool | None" = None,
404
+ migration_config: "dict[str, Any] | None" = None,
405
+ statement_config: "StatementConfig | None" = None,
406
+ driver_features: "OracleDriverFeatures | dict[str, Any] | None" = None,
407
+ bind_key: "str | None" = None,
408
+ extension_config: "ExtensionConfigs | None" = None,
409
+ **kwargs: Any,
410
+ ) -> None:
411
+ """Initialize Oracle asynchronous configuration.
412
+
413
+ Args:
414
+ connection_config: Connection and pool configuration parameters.
415
+ connection_instance: Existing pool instance to use.
416
+ migration_config: Migration configuration.
417
+ statement_config: Default SQL statement configuration.
418
+ driver_features: Optional driver feature configuration (TypedDict or dict).
419
+ bind_key: Optional unique identifier for this configuration.
420
+ extension_config: Extension-specific configuration (e.g., Litestar plugin settings).
421
+ **kwargs: Additional keyword arguments.
422
+ """
423
+ reject_pool_aliases(kwargs)
424
+
425
+ connection_config = normalize_connection_config(connection_config)
426
+
427
+ driver_features = apply_driver_features(driver_features)
428
+
429
+ super().__init__(
430
+ connection_config=connection_config,
431
+ connection_instance=connection_instance,
432
+ migration_config=migration_config,
433
+ statement_config=statement_config or default_statement_config,
434
+ driver_features=driver_features,
435
+ bind_key=bind_key,
436
+ extension_config=extension_config,
437
+ **kwargs,
438
+ )
439
+
440
+ async def _create_pool(self) -> "OracleAsyncConnectionPool":
441
+ """Create the actual async connection pool."""
442
+ config = dict(self.connection_config)
443
+
444
+ if requires_session_callback(self.driver_features):
445
+ config["session_callback"] = self._init_connection
446
+
447
+ return oracledb.create_pool_async(**config)
448
+
449
+ async def _init_connection(self, connection: "OracleAsyncConnection", tag: str) -> None:
450
+ """Initialize async connection with optional type handlers.
451
+
452
+ Registers NumPy vector handlers and UUID binary handlers when enabled.
453
+ Registration order ensures handler chaining works correctly.
454
+
455
+ Args:
456
+ connection: Oracle async connection to initialize.
457
+ tag: Connection tag for session state (unused).
458
+ """
459
+ if self.driver_features.get("enable_numpy_vectors", False):
460
+ register_numpy_handlers(connection)
461
+
462
+ if self.driver_features.get("enable_uuid_binary", False):
463
+ register_uuid_handlers(connection)
464
+
465
+ async def _close_pool(self) -> None:
466
+ """Close the actual async connection pool."""
467
+ if self.connection_instance:
468
+ await self.connection_instance.close()
469
+ self.connection_instance = None
470
+
471
+ async def close_pool(self) -> None:
472
+ """Close the connection pool."""
473
+ await self._close_pool()
474
+
475
+ async def create_connection(self) -> OracleAsyncConnection:
476
+ """Create a single async connection (not from pool).
477
+
478
+ Returns:
479
+ An Oracle AsyncConnection instance.
480
+ """
481
+ if self.connection_instance is None:
482
+ self.connection_instance = await self.create_pool()
483
+ return cast("OracleAsyncConnection", await self.connection_instance.acquire())
484
+
485
+ def provide_connection(self) -> "OracleAsyncConnectionContext":
486
+ """Provide an async connection context manager.
487
+
488
+ Returns:
489
+ An Oracle AsyncConnection context manager.
490
+ """
491
+ return OracleAsyncConnectionContext(self)
492
+
493
+ def provide_session(
494
+ self, *_args: Any, statement_config: "StatementConfig | None" = None, **_kwargs: Any
495
+ ) -> "OracleAsyncSessionContext":
496
+ """Provide an async driver session context manager.
497
+
498
+ Args:
499
+ *_args: Positional arguments (unused).
500
+ statement_config: Optional statement configuration override.
501
+ **_kwargs: Keyword arguments (unused).
502
+
503
+ Returns:
504
+ An OracleAsyncDriver session context manager.
505
+ """
506
+ handler = _OracleAsyncSessionConnectionHandler(self)
507
+
508
+ return OracleAsyncSessionContext(
509
+ acquire_connection=handler.acquire_connection,
510
+ release_connection=handler.release_connection,
511
+ statement_config=statement_config or self.statement_config or default_statement_config,
512
+ driver_features=self.driver_features,
513
+ prepare_driver=self._prepare_driver,
514
+ )
515
+
516
+ async def provide_pool(self) -> "OracleAsyncConnectionPool":
517
+ """Provide async pool instance.
518
+
519
+ Returns:
520
+ The async connection pool.
521
+ """
522
+ if not self.connection_instance:
523
+ self.connection_instance = await self.create_pool()
524
+ return self.connection_instance
525
+
526
+ def get_signature_namespace(self) -> "dict[str, Any]":
527
+ """Get the signature namespace for OracleAsyncConfig types.
528
+
529
+ Returns:
530
+ Dictionary mapping type names to types.
531
+ """
532
+ namespace = super().get_signature_namespace()
533
+ namespace.update({
534
+ "OracleAsyncConnectionContext": OracleAsyncConnectionContext,
535
+ "OracleAsyncConnection": OracleAsyncConnection,
536
+ "OracleAsyncConnectionPool": OracleAsyncConnectionPool,
537
+ "OracleAsyncCursor": OracleAsyncCursor,
538
+ "OracleAsyncDriver": OracleAsyncDriver,
539
+ "OracleAsyncExceptionHandler": OracleAsyncExceptionHandler,
540
+ "OracleAsyncSessionContext": OracleAsyncSessionContext,
541
+ "OracleConnectionParams": OracleConnectionParams,
542
+ "OracleDriverFeatures": OracleDriverFeatures,
543
+ "OraclePoolParams": OraclePoolParams,
544
+ "OracleSyncConnection": OracleSyncConnection,
545
+ "OracleSyncConnectionPool": OracleSyncConnectionPool,
546
+ "OracleSyncCursor": OracleSyncCursor,
547
+ "OracleSyncDriver": OracleSyncDriver,
548
+ "OracleSyncExceptionHandler": OracleSyncExceptionHandler,
549
+ })
550
+ return namespace