sqlspec 0.5.0__tar.gz → 0.38.0__tar.gz

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 (1063) hide show
  1. {sqlspec-0.5.0 → sqlspec-0.38.0}/.gitignore +31 -1
  2. {sqlspec-0.5.0 → sqlspec-0.38.0}/.pre-commit-config.yaml +7 -6
  3. {sqlspec-0.5.0 → sqlspec-0.38.0}/CONTRIBUTING.rst +12 -5
  4. sqlspec-0.38.0/LICENSE +21 -0
  5. {sqlspec-0.5.0 → sqlspec-0.38.0}/Makefile +112 -14
  6. sqlspec-0.38.0/PKG-INFO +205 -0
  7. sqlspec-0.38.0/README.md +109 -0
  8. sqlspec-0.38.0/pyproject.toml +570 -0
  9. sqlspec-0.38.0/sqlspec/__init__.py +140 -0
  10. sqlspec-0.38.0/sqlspec/__main__.py +12 -0
  11. {sqlspec-0.5.0 → sqlspec-0.38.0}/sqlspec/__metadata__.py +2 -6
  12. sqlspec-0.38.0/sqlspec/_serialization.py +315 -0
  13. sqlspec-0.38.0/sqlspec/_typing.py +700 -0
  14. sqlspec-0.38.0/sqlspec/adapters/adbc/__init__.py +5 -0
  15. sqlspec-0.38.0/sqlspec/adapters/adbc/_typing.py +82 -0
  16. sqlspec-0.38.0/sqlspec/adapters/adbc/adk/__init__.py +5 -0
  17. sqlspec-0.38.0/sqlspec/adapters/adbc/adk/store.py +1273 -0
  18. sqlspec-0.38.0/sqlspec/adapters/adbc/config.py +295 -0
  19. sqlspec-0.38.0/sqlspec/adapters/adbc/core.py +800 -0
  20. sqlspec-0.38.0/sqlspec/adapters/adbc/data_dictionary.py +334 -0
  21. sqlspec-0.38.0/sqlspec/adapters/adbc/driver.py +543 -0
  22. sqlspec-0.38.0/sqlspec/adapters/adbc/events/__init__.py +5 -0
  23. sqlspec-0.38.0/sqlspec/adapters/adbc/events/store.py +285 -0
  24. sqlspec-0.38.0/sqlspec/adapters/adbc/litestar/__init__.py +5 -0
  25. sqlspec-0.38.0/sqlspec/adapters/adbc/litestar/store.py +502 -0
  26. sqlspec-0.38.0/sqlspec/adapters/adbc/type_converter.py +140 -0
  27. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/__init__.py +25 -0
  28. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/_typing.py +82 -0
  29. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
  30. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/adk/store.py +818 -0
  31. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/config.py +334 -0
  32. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/core.py +315 -0
  33. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/data_dictionary.py +208 -0
  34. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/driver.py +319 -0
  35. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/events/__init__.py +5 -0
  36. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/events/store.py +20 -0
  37. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
  38. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/litestar/store.py +279 -0
  39. sqlspec-0.38.0/sqlspec/adapters/aiosqlite/pool.py +618 -0
  40. sqlspec-0.38.0/sqlspec/adapters/asyncmy/__init__.py +21 -0
  41. sqlspec-0.38.0/sqlspec/adapters/asyncmy/_typing.py +87 -0
  42. sqlspec-0.38.0/sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
  43. sqlspec-0.38.0/sqlspec/adapters/asyncmy/adk/store.py +703 -0
  44. sqlspec-0.38.0/sqlspec/adapters/asyncmy/config.py +300 -0
  45. sqlspec-0.38.0/sqlspec/adapters/asyncmy/core.py +414 -0
  46. sqlspec-0.38.0/sqlspec/adapters/asyncmy/data_dictionary.py +124 -0
  47. sqlspec-0.38.0/sqlspec/adapters/asyncmy/driver.py +389 -0
  48. sqlspec-0.38.0/sqlspec/adapters/asyncmy/events/__init__.py +5 -0
  49. sqlspec-0.38.0/sqlspec/adapters/asyncmy/events/store.py +104 -0
  50. sqlspec-0.38.0/sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
  51. sqlspec-0.38.0/sqlspec/adapters/asyncmy/litestar/store.py +296 -0
  52. sqlspec-0.38.0/sqlspec/adapters/asyncpg/__init__.py +19 -0
  53. sqlspec-0.38.0/sqlspec/adapters/asyncpg/_typing.py +88 -0
  54. sqlspec-0.38.0/sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
  55. sqlspec-0.38.0/sqlspec/adapters/asyncpg/adk/store.py +748 -0
  56. sqlspec-0.38.0/sqlspec/adapters/asyncpg/config.py +567 -0
  57. sqlspec-0.38.0/sqlspec/adapters/asyncpg/core.py +387 -0
  58. sqlspec-0.38.0/sqlspec/adapters/asyncpg/data_dictionary.py +162 -0
  59. sqlspec-0.38.0/sqlspec/adapters/asyncpg/driver.py +487 -0
  60. sqlspec-0.38.0/sqlspec/adapters/asyncpg/events/__init__.py +6 -0
  61. sqlspec-0.38.0/sqlspec/adapters/asyncpg/events/backend.py +286 -0
  62. sqlspec-0.38.0/sqlspec/adapters/asyncpg/events/store.py +40 -0
  63. sqlspec-0.38.0/sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
  64. sqlspec-0.38.0/sqlspec/adapters/asyncpg/litestar/store.py +251 -0
  65. sqlspec-0.38.0/sqlspec/adapters/bigquery/__init__.py +14 -0
  66. sqlspec-0.38.0/sqlspec/adapters/bigquery/_typing.py +86 -0
  67. sqlspec-0.38.0/sqlspec/adapters/bigquery/adk/__init__.py +5 -0
  68. sqlspec-0.38.0/sqlspec/adapters/bigquery/adk/store.py +827 -0
  69. sqlspec-0.38.0/sqlspec/adapters/bigquery/config.py +353 -0
  70. sqlspec-0.38.0/sqlspec/adapters/bigquery/core.py +735 -0
  71. sqlspec-0.38.0/sqlspec/adapters/bigquery/data_dictionary.py +128 -0
  72. sqlspec-0.38.0/sqlspec/adapters/bigquery/driver.py +558 -0
  73. sqlspec-0.38.0/sqlspec/adapters/bigquery/events/__init__.py +5 -0
  74. sqlspec-0.38.0/sqlspec/adapters/bigquery/events/store.py +139 -0
  75. sqlspec-0.38.0/sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
  76. sqlspec-0.38.0/sqlspec/adapters/bigquery/litestar/store.py +325 -0
  77. sqlspec-0.38.0/sqlspec/adapters/bigquery/type_converter.py +107 -0
  78. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/__init__.py +24 -0
  79. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/_typing.py +72 -0
  80. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/adk/__init__.py +3 -0
  81. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/adk/store.py +410 -0
  82. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/config.py +236 -0
  83. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/core.py +55 -0
  84. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/data_dictionary.py +107 -0
  85. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/driver.py +144 -0
  86. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/events/__init__.py +3 -0
  87. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/events/store.py +20 -0
  88. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/litestar/__init__.py +3 -0
  89. sqlspec-0.38.0/sqlspec/adapters/cockroach_asyncpg/litestar/store.py +142 -0
  90. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/__init__.py +38 -0
  91. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/_typing.py +129 -0
  92. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/adk/__init__.py +13 -0
  93. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/adk/store.py +868 -0
  94. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/config.py +480 -0
  95. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/core.py +63 -0
  96. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/data_dictionary.py +215 -0
  97. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/driver.py +284 -0
  98. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/events/__init__.py +6 -0
  99. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/events/store.py +34 -0
  100. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/litestar/__init__.py +3 -0
  101. sqlspec-0.38.0/sqlspec/adapters/cockroach_psycopg/litestar/store.py +325 -0
  102. sqlspec-0.38.0/sqlspec/adapters/duckdb/__init__.py +25 -0
  103. sqlspec-0.38.0/sqlspec/adapters/duckdb/_typing.py +81 -0
  104. sqlspec-0.38.0/sqlspec/adapters/duckdb/adk/__init__.py +14 -0
  105. sqlspec-0.38.0/sqlspec/adapters/duckdb/adk/store.py +850 -0
  106. sqlspec-0.38.0/sqlspec/adapters/duckdb/config.py +463 -0
  107. sqlspec-0.38.0/sqlspec/adapters/duckdb/core.py +285 -0
  108. sqlspec-0.38.0/sqlspec/adapters/duckdb/data_dictionary.py +140 -0
  109. sqlspec-0.38.0/sqlspec/adapters/duckdb/driver.py +440 -0
  110. sqlspec-0.38.0/sqlspec/adapters/duckdb/events/__init__.py +5 -0
  111. sqlspec-0.38.0/sqlspec/adapters/duckdb/events/store.py +57 -0
  112. sqlspec-0.38.0/sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
  113. sqlspec-0.38.0/sqlspec/adapters/duckdb/litestar/store.py +330 -0
  114. sqlspec-0.38.0/sqlspec/adapters/duckdb/pool.py +350 -0
  115. sqlspec-0.38.0/sqlspec/adapters/duckdb/type_converter.py +118 -0
  116. sqlspec-0.38.0/sqlspec/adapters/mock/__init__.py +72 -0
  117. sqlspec-0.38.0/sqlspec/adapters/mock/_typing.py +147 -0
  118. sqlspec-0.38.0/sqlspec/adapters/mock/config.py +483 -0
  119. sqlspec-0.38.0/sqlspec/adapters/mock/core.py +319 -0
  120. sqlspec-0.38.0/sqlspec/adapters/mock/data_dictionary.py +366 -0
  121. sqlspec-0.38.0/sqlspec/adapters/mock/driver.py +733 -0
  122. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/__init__.py +36 -0
  123. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/_typing.py +141 -0
  124. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/adk/__init__.py +15 -0
  125. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/adk/store.py +1060 -0
  126. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/config.py +392 -0
  127. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/core.py +357 -0
  128. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/data_dictionary.py +235 -0
  129. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/driver.py +495 -0
  130. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/events/__init__.py +8 -0
  131. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/events/store.py +98 -0
  132. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/litestar/__init__.py +5 -0
  133. sqlspec-0.38.0/sqlspec/adapters/mysqlconnector/litestar/store.py +426 -0
  134. sqlspec-0.38.0/sqlspec/adapters/oracledb/__init__.py +60 -0
  135. sqlspec-0.38.0/sqlspec/adapters/oracledb/_numpy_handlers.py +141 -0
  136. sqlspec-0.38.0/sqlspec/adapters/oracledb/_typing.py +182 -0
  137. sqlspec-0.38.0/sqlspec/adapters/oracledb/_uuid_handlers.py +166 -0
  138. sqlspec-0.38.0/sqlspec/adapters/oracledb/adk/__init__.py +10 -0
  139. sqlspec-0.38.0/sqlspec/adapters/oracledb/adk/store.py +2369 -0
  140. sqlspec-0.38.0/sqlspec/adapters/oracledb/config.py +546 -0
  141. sqlspec-0.38.0/sqlspec/adapters/oracledb/core.py +560 -0
  142. sqlspec-0.38.0/sqlspec/adapters/oracledb/data_dictionary.py +536 -0
  143. sqlspec-0.38.0/sqlspec/adapters/oracledb/driver.py +1241 -0
  144. sqlspec-0.38.0/sqlspec/adapters/oracledb/events/__init__.py +16 -0
  145. sqlspec-0.38.0/sqlspec/adapters/oracledb/events/backend.py +347 -0
  146. sqlspec-0.38.0/sqlspec/adapters/oracledb/events/store.py +420 -0
  147. sqlspec-0.38.0/sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
  148. sqlspec-0.38.0/sqlspec/adapters/oracledb/litestar/store.py +781 -0
  149. sqlspec-0.38.0/sqlspec/adapters/oracledb/migrations.py +535 -0
  150. sqlspec-0.38.0/sqlspec/adapters/oracledb/type_converter.py +211 -0
  151. sqlspec-0.38.0/sqlspec/adapters/psqlpy/__init__.py +17 -0
  152. sqlspec-0.38.0/sqlspec/adapters/psqlpy/_typing.py +79 -0
  153. sqlspec-0.38.0/sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
  154. sqlspec-0.38.0/sqlspec/adapters/psqlpy/adk/store.py +766 -0
  155. sqlspec-0.38.0/sqlspec/adapters/psqlpy/config.py +302 -0
  156. sqlspec-0.38.0/sqlspec/adapters/psqlpy/core.py +509 -0
  157. sqlspec-0.38.0/sqlspec/adapters/psqlpy/data_dictionary.py +126 -0
  158. sqlspec-0.38.0/sqlspec/adapters/psqlpy/driver.py +444 -0
  159. sqlspec-0.38.0/sqlspec/adapters/psqlpy/events/__init__.py +6 -0
  160. sqlspec-0.38.0/sqlspec/adapters/psqlpy/events/backend.py +310 -0
  161. sqlspec-0.38.0/sqlspec/adapters/psqlpy/events/store.py +20 -0
  162. sqlspec-0.38.0/sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
  163. sqlspec-0.38.0/sqlspec/adapters/psqlpy/litestar/store.py +270 -0
  164. sqlspec-0.38.0/sqlspec/adapters/psqlpy/type_converter.py +113 -0
  165. sqlspec-0.38.0/sqlspec/adapters/psycopg/__init__.py +32 -0
  166. sqlspec-0.38.0/sqlspec/adapters/psycopg/_typing.py +164 -0
  167. sqlspec-0.38.0/sqlspec/adapters/psycopg/adk/__init__.py +10 -0
  168. sqlspec-0.38.0/sqlspec/adapters/psycopg/adk/store.py +1387 -0
  169. sqlspec-0.38.0/sqlspec/adapters/psycopg/config.py +572 -0
  170. sqlspec-0.38.0/sqlspec/adapters/psycopg/core.py +486 -0
  171. sqlspec-0.38.0/sqlspec/adapters/psycopg/data_dictionary.py +289 -0
  172. sqlspec-0.38.0/sqlspec/adapters/psycopg/driver.py +1005 -0
  173. sqlspec-0.38.0/sqlspec/adapters/psycopg/events/__init__.py +20 -0
  174. sqlspec-0.38.0/sqlspec/adapters/psycopg/events/backend.py +458 -0
  175. sqlspec-0.38.0/sqlspec/adapters/psycopg/events/store.py +42 -0
  176. sqlspec-0.38.0/sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
  177. sqlspec-0.38.0/sqlspec/adapters/psycopg/litestar/store.py +552 -0
  178. sqlspec-0.38.0/sqlspec/adapters/psycopg/type_converter.py +93 -0
  179. sqlspec-0.38.0/sqlspec/adapters/pymysql/__init__.py +21 -0
  180. sqlspec-0.38.0/sqlspec/adapters/pymysql/_typing.py +71 -0
  181. sqlspec-0.38.0/sqlspec/adapters/pymysql/adk/__init__.py +5 -0
  182. sqlspec-0.38.0/sqlspec/adapters/pymysql/adk/store.py +540 -0
  183. sqlspec-0.38.0/sqlspec/adapters/pymysql/config.py +195 -0
  184. sqlspec-0.38.0/sqlspec/adapters/pymysql/core.py +353 -0
  185. sqlspec-0.38.0/sqlspec/adapters/pymysql/data_dictionary.py +122 -0
  186. sqlspec-0.38.0/sqlspec/adapters/pymysql/driver.py +265 -0
  187. sqlspec-0.38.0/sqlspec/adapters/pymysql/events/__init__.py +5 -0
  188. sqlspec-0.38.0/sqlspec/adapters/pymysql/events/store.py +50 -0
  189. sqlspec-0.38.0/sqlspec/adapters/pymysql/litestar/__init__.py +5 -0
  190. sqlspec-0.38.0/sqlspec/adapters/pymysql/litestar/store.py +232 -0
  191. sqlspec-0.38.0/sqlspec/adapters/pymysql/pool.py +164 -0
  192. sqlspec-0.38.0/sqlspec/adapters/spanner/__init__.py +40 -0
  193. sqlspec-0.38.0/sqlspec/adapters/spanner/_typing.py +86 -0
  194. sqlspec-0.38.0/sqlspec/adapters/spanner/adk/__init__.py +5 -0
  195. sqlspec-0.38.0/sqlspec/adapters/spanner/adk/store.py +732 -0
  196. sqlspec-0.38.0/sqlspec/adapters/spanner/config.py +350 -0
  197. sqlspec-0.38.0/sqlspec/adapters/spanner/core.py +216 -0
  198. sqlspec-0.38.0/sqlspec/adapters/spanner/data_dictionary.py +120 -0
  199. sqlspec-0.38.0/sqlspec/adapters/spanner/dialect/__init__.py +6 -0
  200. sqlspec-0.38.0/sqlspec/adapters/spanner/dialect/_spangres.py +57 -0
  201. sqlspec-0.38.0/sqlspec/adapters/spanner/dialect/_spanner.py +130 -0
  202. sqlspec-0.38.0/sqlspec/adapters/spanner/driver.py +373 -0
  203. sqlspec-0.38.0/sqlspec/adapters/spanner/events/__init__.py +5 -0
  204. sqlspec-0.38.0/sqlspec/adapters/spanner/events/store.py +187 -0
  205. sqlspec-0.38.0/sqlspec/adapters/spanner/litestar/__init__.py +5 -0
  206. sqlspec-0.38.0/sqlspec/adapters/spanner/litestar/store.py +291 -0
  207. sqlspec-0.38.0/sqlspec/adapters/spanner/type_converter.py +331 -0
  208. sqlspec-0.38.0/sqlspec/adapters/sqlite/__init__.py +19 -0
  209. sqlspec-0.38.0/sqlspec/adapters/sqlite/_typing.py +80 -0
  210. sqlspec-0.38.0/sqlspec/adapters/sqlite/adk/__init__.py +5 -0
  211. sqlspec-0.38.0/sqlspec/adapters/sqlite/adk/store.py +958 -0
  212. sqlspec-0.38.0/sqlspec/adapters/sqlite/config.py +280 -0
  213. sqlspec-0.38.0/sqlspec/adapters/sqlite/core.py +355 -0
  214. sqlspec-0.38.0/sqlspec/adapters/sqlite/data_dictionary.py +202 -0
  215. sqlspec-0.38.0/sqlspec/adapters/sqlite/driver.py +365 -0
  216. sqlspec-0.38.0/sqlspec/adapters/sqlite/events/__init__.py +5 -0
  217. sqlspec-0.38.0/sqlspec/adapters/sqlite/events/store.py +20 -0
  218. sqlspec-0.38.0/sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
  219. sqlspec-0.38.0/sqlspec/adapters/sqlite/litestar/store.py +316 -0
  220. sqlspec-0.38.0/sqlspec/adapters/sqlite/pool.py +229 -0
  221. sqlspec-0.38.0/sqlspec/adapters/sqlite/type_converter.py +114 -0
  222. sqlspec-0.38.0/sqlspec/base.py +747 -0
  223. sqlspec-0.38.0/sqlspec/builder/__init__.py +181 -0
  224. sqlspec-0.38.0/sqlspec/builder/_base.py +1022 -0
  225. sqlspec-0.38.0/sqlspec/builder/_column.py +521 -0
  226. sqlspec-0.38.0/sqlspec/builder/_ddl.py +1691 -0
  227. sqlspec-0.38.0/sqlspec/builder/_delete.py +95 -0
  228. sqlspec-0.38.0/sqlspec/builder/_dml.py +365 -0
  229. sqlspec-0.38.0/sqlspec/builder/_explain.py +579 -0
  230. sqlspec-0.38.0/sqlspec/builder/_expression_wrappers.py +46 -0
  231. sqlspec-0.38.0/sqlspec/builder/_factory.py +1955 -0
  232. sqlspec-0.38.0/sqlspec/builder/_insert.py +328 -0
  233. sqlspec-0.38.0/sqlspec/builder/_join.py +499 -0
  234. sqlspec-0.38.0/sqlspec/builder/_merge.py +821 -0
  235. sqlspec-0.38.0/sqlspec/builder/_parsing_utils.py +297 -0
  236. sqlspec-0.38.0/sqlspec/builder/_select.py +1672 -0
  237. sqlspec-0.38.0/sqlspec/builder/_temporal.py +139 -0
  238. sqlspec-0.38.0/sqlspec/builder/_update.py +173 -0
  239. sqlspec-0.38.0/sqlspec/builder/_vector_expressions.py +267 -0
  240. sqlspec-0.38.0/sqlspec/cli.py +911 -0
  241. sqlspec-0.38.0/sqlspec/config.py +1755 -0
  242. sqlspec-0.38.0/sqlspec/core/__init__.py +374 -0
  243. sqlspec-0.38.0/sqlspec/core/_correlation.py +176 -0
  244. sqlspec-0.38.0/sqlspec/core/cache.py +1094 -0
  245. sqlspec-0.38.0/sqlspec/core/compiler.py +962 -0
  246. sqlspec-0.38.0/sqlspec/core/explain.py +275 -0
  247. sqlspec-0.38.0/sqlspec/core/filters.py +952 -0
  248. sqlspec-0.38.0/sqlspec/core/hashing.py +262 -0
  249. sqlspec-0.38.0/sqlspec/core/metrics.py +83 -0
  250. sqlspec-0.38.0/sqlspec/core/parameters/__init__.py +71 -0
  251. sqlspec-0.38.0/sqlspec/core/parameters/_alignment.py +270 -0
  252. sqlspec-0.38.0/sqlspec/core/parameters/_converter.py +543 -0
  253. sqlspec-0.38.0/sqlspec/core/parameters/_processor.py +505 -0
  254. sqlspec-0.38.0/sqlspec/core/parameters/_registry.py +206 -0
  255. sqlspec-0.38.0/sqlspec/core/parameters/_transformers.py +292 -0
  256. sqlspec-0.38.0/sqlspec/core/parameters/_types.py +499 -0
  257. sqlspec-0.38.0/sqlspec/core/parameters/_validator.py +180 -0
  258. sqlspec-0.38.0/sqlspec/core/pipeline.py +319 -0
  259. sqlspec-0.38.0/sqlspec/core/query_modifiers.py +510 -0
  260. sqlspec-0.38.0/sqlspec/core/result/__init__.py +23 -0
  261. sqlspec-0.38.0/sqlspec/core/result/_base.py +1121 -0
  262. sqlspec-0.38.0/sqlspec/core/result/_io.py +28 -0
  263. sqlspec-0.38.0/sqlspec/core/splitter.py +966 -0
  264. sqlspec-0.38.0/sqlspec/core/stack.py +163 -0
  265. sqlspec-0.38.0/sqlspec/core/statement.py +1529 -0
  266. sqlspec-0.38.0/sqlspec/core/type_converter.py +339 -0
  267. sqlspec-0.38.0/sqlspec/data_dictionary/__init__.py +22 -0
  268. sqlspec-0.38.0/sqlspec/data_dictionary/_loader.py +123 -0
  269. sqlspec-0.38.0/sqlspec/data_dictionary/_registry.py +74 -0
  270. sqlspec-0.38.0/sqlspec/data_dictionary/_types.py +121 -0
  271. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/__init__.py +21 -0
  272. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/bigquery.py +49 -0
  273. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/cockroachdb.py +43 -0
  274. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/duckdb.py +47 -0
  275. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/mysql.py +42 -0
  276. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/oracle.py +34 -0
  277. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/postgres.py +46 -0
  278. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/spanner.py +37 -0
  279. sqlspec-0.38.0/sqlspec/data_dictionary/dialects/sqlite.py +42 -0
  280. sqlspec-0.38.0/sqlspec/data_dictionary/sql/bigquery/columns.sql +23 -0
  281. sqlspec-0.38.0/sqlspec/data_dictionary/sql/bigquery/foreign_keys.sql +34 -0
  282. sqlspec-0.38.0/sqlspec/data_dictionary/sql/bigquery/indexes.sql +19 -0
  283. sqlspec-0.38.0/sqlspec/data_dictionary/sql/bigquery/tables.sql +33 -0
  284. sqlspec-0.38.0/sqlspec/data_dictionary/sql/bigquery/version.sql +3 -0
  285. sqlspec-0.38.0/sqlspec/data_dictionary/sql/cockroachdb/columns.sql +34 -0
  286. sqlspec-0.38.0/sqlspec/data_dictionary/sql/cockroachdb/foreign_keys.sql +40 -0
  287. sqlspec-0.38.0/sqlspec/data_dictionary/sql/cockroachdb/indexes.sql +32 -0
  288. sqlspec-0.38.0/sqlspec/data_dictionary/sql/cockroachdb/tables.sql +44 -0
  289. sqlspec-0.38.0/sqlspec/data_dictionary/sql/cockroachdb/version.sql +3 -0
  290. sqlspec-0.38.0/sqlspec/data_dictionary/sql/duckdb/columns.sql +23 -0
  291. sqlspec-0.38.0/sqlspec/data_dictionary/sql/duckdb/foreign_keys.sql +36 -0
  292. sqlspec-0.38.0/sqlspec/data_dictionary/sql/duckdb/indexes.sql +19 -0
  293. sqlspec-0.38.0/sqlspec/data_dictionary/sql/duckdb/tables.sql +38 -0
  294. sqlspec-0.38.0/sqlspec/data_dictionary/sql/duckdb/version.sql +3 -0
  295. sqlspec-0.38.0/sqlspec/data_dictionary/sql/mysql/columns.sql +23 -0
  296. sqlspec-0.38.0/sqlspec/data_dictionary/sql/mysql/foreign_keys.sql +28 -0
  297. sqlspec-0.38.0/sqlspec/data_dictionary/sql/mysql/indexes.sql +26 -0
  298. sqlspec-0.38.0/sqlspec/data_dictionary/sql/mysql/tables.sql +33 -0
  299. sqlspec-0.38.0/sqlspec/data_dictionary/sql/mysql/version.sql +3 -0
  300. sqlspec-0.38.0/sqlspec/data_dictionary/sql/oracle/columns.sql +23 -0
  301. sqlspec-0.38.0/sqlspec/data_dictionary/sql/oracle/foreign_keys.sql +48 -0
  302. sqlspec-0.38.0/sqlspec/data_dictionary/sql/oracle/indexes.sql +44 -0
  303. sqlspec-0.38.0/sqlspec/data_dictionary/sql/oracle/tables.sql +25 -0
  304. sqlspec-0.38.0/sqlspec/data_dictionary/sql/oracle/version.sql +20 -0
  305. sqlspec-0.38.0/sqlspec/data_dictionary/sql/postgres/columns.sql +34 -0
  306. sqlspec-0.38.0/sqlspec/data_dictionary/sql/postgres/foreign_keys.sql +40 -0
  307. sqlspec-0.38.0/sqlspec/data_dictionary/sql/postgres/indexes.sql +56 -0
  308. sqlspec-0.38.0/sqlspec/data_dictionary/sql/postgres/tables.sql +44 -0
  309. sqlspec-0.38.0/sqlspec/data_dictionary/sql/postgres/version.sql +3 -0
  310. sqlspec-0.38.0/sqlspec/data_dictionary/sql/spanner/columns.sql +23 -0
  311. sqlspec-0.38.0/sqlspec/data_dictionary/sql/spanner/foreign_keys.sql +70 -0
  312. sqlspec-0.38.0/sqlspec/data_dictionary/sql/spanner/indexes.sql +30 -0
  313. sqlspec-0.38.0/sqlspec/data_dictionary/sql/spanner/tables.sql +9 -0
  314. sqlspec-0.38.0/sqlspec/data_dictionary/sql/spanner/version.sql +3 -0
  315. sqlspec-0.38.0/sqlspec/data_dictionary/sql/sqlite/columns.sql +23 -0
  316. sqlspec-0.38.0/sqlspec/data_dictionary/sql/sqlite/foreign_keys.sql +22 -0
  317. sqlspec-0.38.0/sqlspec/data_dictionary/sql/sqlite/indexes.sql +7 -0
  318. sqlspec-0.38.0/sqlspec/data_dictionary/sql/sqlite/tables.sql +28 -0
  319. sqlspec-0.38.0/sqlspec/data_dictionary/sql/sqlite/version.sql +3 -0
  320. sqlspec-0.38.0/sqlspec/driver/__init__.py +32 -0
  321. sqlspec-0.38.0/sqlspec/driver/_async.py +1981 -0
  322. sqlspec-0.38.0/sqlspec/driver/_common.py +1632 -0
  323. sqlspec-0.38.0/sqlspec/driver/_sql_helpers.py +148 -0
  324. sqlspec-0.38.0/sqlspec/driver/_storage_helpers.py +144 -0
  325. sqlspec-0.38.0/sqlspec/driver/_sync.py +1952 -0
  326. sqlspec-0.38.0/sqlspec/exceptions.py +449 -0
  327. sqlspec-0.38.0/sqlspec/extensions/adk/__init__.py +70 -0
  328. sqlspec-0.38.0/sqlspec/extensions/adk/_types.py +51 -0
  329. sqlspec-0.38.0/sqlspec/extensions/adk/converters.py +172 -0
  330. sqlspec-0.38.0/sqlspec/extensions/adk/memory/__init__.py +69 -0
  331. sqlspec-0.38.0/sqlspec/extensions/adk/memory/_types.py +30 -0
  332. sqlspec-0.38.0/sqlspec/extensions/adk/memory/converters.py +149 -0
  333. sqlspec-0.38.0/sqlspec/extensions/adk/memory/service.py +217 -0
  334. sqlspec-0.38.0/sqlspec/extensions/adk/memory/store.py +569 -0
  335. sqlspec-0.38.0/sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +246 -0
  336. sqlspec-0.38.0/sqlspec/extensions/adk/service.py +225 -0
  337. sqlspec-0.38.0/sqlspec/extensions/adk/store.py +567 -0
  338. sqlspec-0.38.0/sqlspec/extensions/events/__init__.py +51 -0
  339. sqlspec-0.38.0/sqlspec/extensions/events/_channel.py +703 -0
  340. sqlspec-0.38.0/sqlspec/extensions/events/_hints.py +45 -0
  341. sqlspec-0.38.0/sqlspec/extensions/events/_models.py +23 -0
  342. sqlspec-0.38.0/sqlspec/extensions/events/_payload.py +69 -0
  343. sqlspec-0.38.0/sqlspec/extensions/events/_protocols.py +134 -0
  344. sqlspec-0.38.0/sqlspec/extensions/events/_queue.py +461 -0
  345. sqlspec-0.38.0/sqlspec/extensions/events/_store.py +209 -0
  346. sqlspec-0.38.0/sqlspec/extensions/events/migrations/0001_create_event_queue.py +59 -0
  347. sqlspec-0.38.0/sqlspec/extensions/events/migrations/__init__.py +3 -0
  348. sqlspec-0.38.0/sqlspec/extensions/fastapi/__init__.py +19 -0
  349. sqlspec-0.38.0/sqlspec/extensions/fastapi/extension.py +351 -0
  350. sqlspec-0.38.0/sqlspec/extensions/fastapi/providers.py +607 -0
  351. sqlspec-0.38.0/sqlspec/extensions/flask/__init__.py +37 -0
  352. sqlspec-0.38.0/sqlspec/extensions/flask/_state.py +76 -0
  353. sqlspec-0.38.0/sqlspec/extensions/flask/_utils.py +71 -0
  354. sqlspec-0.38.0/sqlspec/extensions/flask/extension.py +519 -0
  355. sqlspec-0.38.0/sqlspec/extensions/litestar/__init__.py +28 -0
  356. sqlspec-0.38.0/sqlspec/extensions/litestar/_utils.py +52 -0
  357. sqlspec-0.38.0/sqlspec/extensions/litestar/channels.py +165 -0
  358. sqlspec-0.38.0/sqlspec/extensions/litestar/cli.py +102 -0
  359. sqlspec-0.38.0/sqlspec/extensions/litestar/config.py +90 -0
  360. sqlspec-0.38.0/sqlspec/extensions/litestar/handlers.py +316 -0
  361. sqlspec-0.38.0/sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
  362. sqlspec-0.38.0/sqlspec/extensions/litestar/migrations/__init__.py +3 -0
  363. sqlspec-0.38.0/sqlspec/extensions/litestar/plugin.py +671 -0
  364. sqlspec-0.38.0/sqlspec/extensions/litestar/providers.py +526 -0
  365. sqlspec-0.38.0/sqlspec/extensions/litestar/store.py +296 -0
  366. sqlspec-0.38.0/sqlspec/extensions/otel/__init__.py +58 -0
  367. sqlspec-0.38.0/sqlspec/extensions/prometheus/__init__.py +113 -0
  368. sqlspec-0.38.0/sqlspec/extensions/starlette/__init__.py +19 -0
  369. sqlspec-0.38.0/sqlspec/extensions/starlette/_state.py +30 -0
  370. sqlspec-0.38.0/sqlspec/extensions/starlette/_utils.py +96 -0
  371. sqlspec-0.38.0/sqlspec/extensions/starlette/extension.py +346 -0
  372. sqlspec-0.38.0/sqlspec/extensions/starlette/middleware.py +235 -0
  373. sqlspec-0.38.0/sqlspec/loader.py +702 -0
  374. sqlspec-0.38.0/sqlspec/migrations/__init__.py +36 -0
  375. sqlspec-0.38.0/sqlspec/migrations/base.py +731 -0
  376. sqlspec-0.38.0/sqlspec/migrations/commands.py +1232 -0
  377. sqlspec-0.38.0/sqlspec/migrations/context.py +157 -0
  378. sqlspec-0.38.0/sqlspec/migrations/fix.py +204 -0
  379. sqlspec-0.38.0/sqlspec/migrations/loaders.py +443 -0
  380. sqlspec-0.38.0/sqlspec/migrations/runner.py +1172 -0
  381. sqlspec-0.38.0/sqlspec/migrations/templates.py +234 -0
  382. sqlspec-0.38.0/sqlspec/migrations/tracker.py +611 -0
  383. sqlspec-0.38.0/sqlspec/migrations/utils.py +256 -0
  384. sqlspec-0.38.0/sqlspec/migrations/validation.py +207 -0
  385. sqlspec-0.38.0/sqlspec/migrations/version.py +446 -0
  386. sqlspec-0.38.0/sqlspec/observability/__init__.py +57 -0
  387. sqlspec-0.38.0/sqlspec/observability/_common.py +77 -0
  388. sqlspec-0.38.0/sqlspec/observability/_config.py +348 -0
  389. sqlspec-0.38.0/sqlspec/observability/_diagnostics.py +74 -0
  390. sqlspec-0.38.0/sqlspec/observability/_dispatcher.py +152 -0
  391. sqlspec-0.38.0/sqlspec/observability/_formatters/__init__.py +13 -0
  392. sqlspec-0.38.0/sqlspec/observability/_formatters/_aws.py +102 -0
  393. sqlspec-0.38.0/sqlspec/observability/_formatters/_azure.py +96 -0
  394. sqlspec-0.38.0/sqlspec/observability/_formatters/_base.py +57 -0
  395. sqlspec-0.38.0/sqlspec/observability/_formatters/_gcp.py +131 -0
  396. sqlspec-0.38.0/sqlspec/observability/_formatting.py +58 -0
  397. sqlspec-0.38.0/sqlspec/observability/_observer.py +363 -0
  398. sqlspec-0.38.0/sqlspec/observability/_runtime.py +420 -0
  399. sqlspec-0.38.0/sqlspec/observability/_sampling.py +188 -0
  400. sqlspec-0.38.0/sqlspec/observability/_spans.py +161 -0
  401. sqlspec-0.38.0/sqlspec/protocols.py +948 -0
  402. sqlspec-0.38.0/sqlspec/storage/__init__.py +48 -0
  403. sqlspec-0.38.0/sqlspec/storage/_utils.py +104 -0
  404. sqlspec-0.38.0/sqlspec/storage/backends/__init__.py +1 -0
  405. sqlspec-0.38.0/sqlspec/storage/backends/base.py +253 -0
  406. sqlspec-0.38.0/sqlspec/storage/backends/fsspec.py +529 -0
  407. sqlspec-0.38.0/sqlspec/storage/backends/local.py +441 -0
  408. sqlspec-0.38.0/sqlspec/storage/backends/obstore.py +916 -0
  409. sqlspec-0.38.0/sqlspec/storage/errors.py +104 -0
  410. sqlspec-0.38.0/sqlspec/storage/pipeline.py +582 -0
  411. sqlspec-0.38.0/sqlspec/storage/registry.py +301 -0
  412. sqlspec-0.38.0/sqlspec/typing.py +395 -0
  413. sqlspec-0.38.0/sqlspec/utils/__init__.py +7 -0
  414. sqlspec-0.38.0/sqlspec/utils/arrow_helpers.py +318 -0
  415. sqlspec-0.38.0/sqlspec/utils/config_tools.py +314 -0
  416. sqlspec-0.38.0/sqlspec/utils/correlation.py +134 -0
  417. sqlspec-0.38.0/sqlspec/utils/deprecation.py +190 -0
  418. sqlspec-0.38.0/sqlspec/utils/fixtures.py +258 -0
  419. sqlspec-0.38.0/sqlspec/utils/logging.py +251 -0
  420. sqlspec-0.38.0/sqlspec/utils/module_loader.py +306 -0
  421. sqlspec-0.38.0/sqlspec/utils/portal.py +375 -0
  422. sqlspec-0.38.0/sqlspec/utils/schema.py +986 -0
  423. sqlspec-0.38.0/sqlspec/utils/serializers.py +408 -0
  424. sqlspec-0.38.0/sqlspec/utils/singleton.py +41 -0
  425. sqlspec-0.38.0/sqlspec/utils/sync_tools.py +311 -0
  426. sqlspec-0.38.0/sqlspec/utils/text.py +108 -0
  427. sqlspec-0.38.0/sqlspec/utils/type_converters.py +128 -0
  428. sqlspec-0.38.0/sqlspec/utils/type_guards.py +1391 -0
  429. sqlspec-0.38.0/sqlspec/utils/uuids.py +225 -0
  430. sqlspec-0.38.0/tests/__init__.py +1 -0
  431. sqlspec-0.38.0/tests/conftest.py +120 -0
  432. sqlspec-0.38.0/tests/fixtures/__init__.py +1 -0
  433. sqlspec-0.38.0/tests/fixtures/asset_maintenance.sql +12 -0
  434. sqlspec-0.38.0/tests/fixtures/ddls-mysql-collection.sql +257 -0
  435. sqlspec-0.38.0/tests/fixtures/ddls-postgres-collection.sql +913 -0
  436. sqlspec-0.38.0/tests/fixtures/example_usage.py +60 -0
  437. sqlspec-0.38.0/tests/fixtures/init.sql +25 -0
  438. sqlspec-0.38.0/tests/fixtures/mysql/collection-config.sql +570 -0
  439. sqlspec-0.38.0/tests/fixtures/mysql/collection-data_types.sql +42 -0
  440. sqlspec-0.38.0/tests/fixtures/mysql/collection-database_details.sql +182 -0
  441. sqlspec-0.38.0/tests/fixtures/mysql/collection-engines.sql +34 -0
  442. sqlspec-0.38.0/tests/fixtures/mysql/collection-hostname.sql +17 -0
  443. sqlspec-0.38.0/tests/fixtures/mysql/collection-plugins.sql +44 -0
  444. sqlspec-0.38.0/tests/fixtures/mysql/collection-process_list.sql +38 -0
  445. sqlspec-0.38.0/tests/fixtures/mysql/collection-resource-groups.sql +50 -0
  446. sqlspec-0.38.0/tests/fixtures/mysql/collection-schema_objects.sql +197 -0
  447. sqlspec-0.38.0/tests/fixtures/mysql/collection-table_details.sql +134 -0
  448. sqlspec-0.38.0/tests/fixtures/mysql/collection-users.sql +52 -0
  449. sqlspec-0.38.0/tests/fixtures/mysql/init.sql +39 -0
  450. sqlspec-0.38.0/tests/fixtures/oracle.ddl.sql +207 -0
  451. sqlspec-0.38.0/tests/fixtures/postgres/collection-applications.sql +26 -0
  452. sqlspec-0.38.0/tests/fixtures/postgres/collection-aws_extension_dependency.sql +406 -0
  453. sqlspec-0.38.0/tests/fixtures/postgres/collection-aws_oracle_exists.sql +25 -0
  454. sqlspec-0.38.0/tests/fixtures/postgres/collection-bg_writer_stats.sql +63 -0
  455. sqlspec-0.38.0/tests/fixtures/postgres/collection-calculated_metrics.sql +245 -0
  456. sqlspec-0.38.0/tests/fixtures/postgres/collection-data_types.sql +72 -0
  457. sqlspec-0.38.0/tests/fixtures/postgres/collection-database_details.sql +386 -0
  458. sqlspec-0.38.0/tests/fixtures/postgres/collection-extensions.sql +41 -0
  459. sqlspec-0.38.0/tests/fixtures/postgres/collection-index_details.sql +75 -0
  460. sqlspec-0.38.0/tests/fixtures/postgres/collection-pglogical-details.sql +28 -0
  461. sqlspec-0.38.0/tests/fixtures/postgres/collection-privileges.sql +152 -0
  462. sqlspec-0.38.0/tests/fixtures/postgres/collection-replication_slots.sql +131 -0
  463. sqlspec-0.38.0/tests/fixtures/postgres/collection-replication_stats.sql +63 -0
  464. sqlspec-0.38.0/tests/fixtures/postgres/collection-schema_details.sql +77 -0
  465. sqlspec-0.38.0/tests/fixtures/postgres/collection-schema_objects.sql +205 -0
  466. sqlspec-0.38.0/tests/fixtures/postgres/collection-settings.sql +56 -0
  467. sqlspec-0.38.0/tests/fixtures/postgres/collection-source_details.sql +63 -0
  468. sqlspec-0.38.0/tests/fixtures/postgres/collection-table_details.sql +496 -0
  469. sqlspec-0.38.0/tests/fixtures/postgres/extended-collection-all-databases.sql +36 -0
  470. sqlspec-0.38.0/tests/fixtures/postgres/init.sql +24 -0
  471. sqlspec-0.38.0/tests/fixtures/readiness-check.sql +35 -0
  472. sqlspec-0.38.0/tests/fixtures/sql_utils.py +92 -0
  473. sqlspec-0.38.0/tests/integration/__init__.py +1 -0
  474. sqlspec-0.38.0/tests/integration/adapters/__init__.py +1 -0
  475. sqlspec-0.38.0/tests/integration/adapters/_events_helpers.py +34 -0
  476. sqlspec-0.38.0/tests/integration/adapters/_storage_bridge_helpers.py +28 -0
  477. sqlspec-0.38.0/tests/integration/adapters/adbc/__init__.py +1 -0
  478. sqlspec-0.38.0/tests/integration/adapters/adbc/conftest.py +177 -0
  479. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/__init__.py +1 -0
  480. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/adk/__init__.py +1 -0
  481. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/adk/test_dialect_integration.py +229 -0
  482. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/adk/test_dialect_support.py +198 -0
  483. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/adk/test_edge_cases.py +269 -0
  484. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/adk/test_event_operations.py +320 -0
  485. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/adk/test_memory_store.py +92 -0
  486. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/adk/test_owner_id_column.py +145 -0
  487. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/adk/test_session_operations.py +184 -0
  488. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/litestar/__init__.py +1 -0
  489. sqlspec-0.38.0/tests/integration/adapters/adbc/extensions/litestar/test_store.py +258 -0
  490. sqlspec-0.38.0/tests/integration/adapters/adbc/test_adbc_backends.py +269 -0
  491. sqlspec-0.38.0/tests/integration/adapters/adbc/test_adbc_connection.py +201 -0
  492. sqlspec-0.38.0/tests/integration/adapters/adbc/test_adbc_driver.py +487 -0
  493. sqlspec-0.38.0/tests/integration/adapters/adbc/test_adbc_edge_cases.py +506 -0
  494. sqlspec-0.38.0/tests/integration/adapters/adbc/test_adbc_results.py +376 -0
  495. sqlspec-0.38.0/tests/integration/adapters/adbc/test_arrow_duckdb.py +211 -0
  496. sqlspec-0.38.0/tests/integration/adapters/adbc/test_arrow_features.py +403 -0
  497. sqlspec-0.38.0/tests/integration/adapters/adbc/test_data_dictionary.py +142 -0
  498. sqlspec-0.38.0/tests/integration/adapters/adbc/test_exceptions.py +128 -0
  499. sqlspec-0.38.0/tests/integration/adapters/adbc/test_explain.py +146 -0
  500. sqlspec-0.38.0/tests/integration/adapters/adbc/test_migrations.py +293 -0
  501. sqlspec-0.38.0/tests/integration/adapters/adbc/test_parameter_styles.py +652 -0
  502. sqlspec-0.38.0/tests/integration/adapters/adbc/test_storage_bridge.py +61 -0
  503. sqlspec-0.38.0/tests/integration/adapters/adbc/test_vector_functions.py +325 -0
  504. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/__init__.py +1 -0
  505. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/conftest.py +90 -0
  506. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/extensions/__init__.py +1 -0
  507. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/extensions/adk/test_memory_store.py +99 -0
  508. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/extensions/events/test_queue_backend.py +234 -0
  509. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/extensions/litestar/__init__.py +1 -0
  510. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/extensions/litestar/test_numpy_serialization.py +254 -0
  511. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/extensions/litestar/test_store.py +234 -0
  512. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_arrow.py +233 -0
  513. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_connection.py +286 -0
  514. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_data_dictionary.py +75 -0
  515. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_driver.py +564 -0
  516. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_exceptions.py +125 -0
  517. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_explain.py +109 -0
  518. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_migrations.py +334 -0
  519. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_parameter_styles.py +379 -0
  520. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_pooling.py +190 -0
  521. sqlspec-0.38.0/tests/integration/adapters/aiosqlite/test_storage_bridge.py +44 -0
  522. sqlspec-0.38.0/tests/integration/adapters/asyncmy/__init__.py +3 -0
  523. sqlspec-0.38.0/tests/integration/adapters/asyncmy/conftest.py +88 -0
  524. sqlspec-0.38.0/tests/integration/adapters/asyncmy/extensions/__init__.py +1 -0
  525. sqlspec-0.38.0/tests/integration/adapters/asyncmy/extensions/adk/__init__.py +1 -0
  526. sqlspec-0.38.0/tests/integration/adapters/asyncmy/extensions/adk/conftest.py +118 -0
  527. sqlspec-0.38.0/tests/integration/adapters/asyncmy/extensions/adk/test_store.py +332 -0
  528. sqlspec-0.38.0/tests/integration/adapters/asyncmy/extensions/events/test_queue_backend.py +147 -0
  529. sqlspec-0.38.0/tests/integration/adapters/asyncmy/extensions/litestar/__init__.py +1 -0
  530. sqlspec-0.38.0/tests/integration/adapters/asyncmy/extensions/litestar/test_store.py +252 -0
  531. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_arrow.py +203 -0
  532. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_config.py +220 -0
  533. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_driver.py +510 -0
  534. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_exceptions.py +137 -0
  535. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_explain.py +138 -0
  536. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_features.py +284 -0
  537. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_migrations.py +405 -0
  538. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_parameter_styles.py +696 -0
  539. sqlspec-0.38.0/tests/integration/adapters/asyncmy/test_storage_bridge.py +61 -0
  540. sqlspec-0.38.0/tests/integration/adapters/asyncpg/__init__.py +1 -0
  541. sqlspec-0.38.0/tests/integration/adapters/asyncpg/conftest.py +41 -0
  542. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/__init__.py +1 -0
  543. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/adk/__init__.py +1 -0
  544. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/adk/conftest.py +69 -0
  545. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/adk/test_owner_id_column.py +411 -0
  546. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/adk/test_session_operations.py +134 -0
  547. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/events/test_listen_notify.py +172 -0
  548. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/events/test_queue_backend.py +38 -0
  549. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/litestar/__init__.py +1 -0
  550. sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/litestar/test_store.py +237 -0
  551. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_arrow.py +204 -0
  552. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_cloud_connectors.py +205 -0
  553. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_data_dictionary.py +167 -0
  554. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_driver.py +906 -0
  555. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_exceptions.py +119 -0
  556. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_execute_many.py +271 -0
  557. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_explain.py +119 -0
  558. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_merge.py +251 -0
  559. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_merge_bulk.py +280 -0
  560. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_migrations.py +648 -0
  561. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_parameter_styles.py +621 -0
  562. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_schema_migration.py +323 -0
  563. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_storage_bridge.py +69 -0
  564. sqlspec-0.38.0/tests/integration/adapters/asyncpg/test_vector_functions.py +287 -0
  565. sqlspec-0.38.0/tests/integration/adapters/bigquery/__init__.py +1 -0
  566. sqlspec-0.38.0/tests/integration/adapters/bigquery/conftest.py +75 -0
  567. sqlspec-0.38.0/tests/integration/adapters/bigquery/test_arrow.py +223 -0
  568. sqlspec-0.38.0/tests/integration/adapters/bigquery/test_config.py +147 -0
  569. sqlspec-0.38.0/tests/integration/adapters/bigquery/test_driver.py +540 -0
  570. sqlspec-0.38.0/tests/integration/adapters/bigquery/test_exceptions.py +93 -0
  571. sqlspec-0.38.0/tests/integration/adapters/bigquery/test_explain.py +102 -0
  572. sqlspec-0.38.0/tests/integration/adapters/bigquery/test_features.py +64 -0
  573. sqlspec-0.38.0/tests/integration/adapters/bigquery/test_vector_functions.py +217 -0
  574. sqlspec-0.38.0/tests/integration/adapters/cockroach_asyncpg/__init__.py +1 -0
  575. sqlspec-0.38.0/tests/integration/adapters/cockroach_asyncpg/conftest.py +38 -0
  576. sqlspec-0.38.0/tests/integration/adapters/cockroach_asyncpg/test_driver.py +47 -0
  577. sqlspec-0.38.0/tests/integration/adapters/cockroach_psycopg/__init__.py +1 -0
  578. sqlspec-0.38.0/tests/integration/adapters/cockroach_psycopg/conftest.py +59 -0
  579. sqlspec-0.38.0/tests/integration/adapters/cockroach_psycopg/test_driver.py +85 -0
  580. sqlspec-0.38.0/tests/integration/adapters/duckdb/__init__.py +5 -0
  581. sqlspec-0.38.0/tests/integration/adapters/duckdb/conftest.py +26 -0
  582. sqlspec-0.38.0/tests/integration/adapters/duckdb/extensions/__init__.py +1 -0
  583. sqlspec-0.38.0/tests/integration/adapters/duckdb/extensions/adk/test_memory_store.py +92 -0
  584. sqlspec-0.38.0/tests/integration/adapters/duckdb/extensions/adk/test_store.py +692 -0
  585. sqlspec-0.38.0/tests/integration/adapters/duckdb/extensions/events/test_queue_backend.py +35 -0
  586. sqlspec-0.38.0/tests/integration/adapters/duckdb/extensions/litestar/__init__.py +1 -0
  587. sqlspec-0.38.0/tests/integration/adapters/duckdb/extensions/litestar/test_store.py +273 -0
  588. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_arrow.py +193 -0
  589. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_connection.py +394 -0
  590. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_driver.py +651 -0
  591. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_driver_features.py +156 -0
  592. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_exceptions.py +128 -0
  593. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_execute_many.py +294 -0
  594. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_explain.py +160 -0
  595. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_migrations.py +284 -0
  596. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_mixed_parameter_styles.py +151 -0
  597. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_parameter_styles.py +887 -0
  598. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_pooling.py +128 -0
  599. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_storage_bridge.py +69 -0
  600. sqlspec-0.38.0/tests/integration/adapters/duckdb/test_vector_functions.py +289 -0
  601. sqlspec-0.38.0/tests/integration/adapters/duckdb/utils.py +39 -0
  602. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/__init__.py +1 -0
  603. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/conftest.py +175 -0
  604. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/extensions/__init__.py +1 -0
  605. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/extensions/adk/__init__.py +1 -0
  606. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/extensions/adk/conftest.py +100 -0
  607. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/extensions/adk/test_store.py +353 -0
  608. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/extensions/events/__init__.py +1 -0
  609. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/extensions/events/test_queue_backend.py +141 -0
  610. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/extensions/litestar/__init__.py +1 -0
  611. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/extensions/litestar/test_store.py +106 -0
  612. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/test_config.py +165 -0
  613. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/test_driver_async.py +259 -0
  614. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/test_driver_sync.py +179 -0
  615. sqlspec-0.38.0/tests/integration/adapters/mysqlconnector/test_exceptions.py +138 -0
  616. sqlspec-0.38.0/tests/integration/adapters/oracledb/__init__.py +5 -0
  617. sqlspec-0.38.0/tests/integration/adapters/oracledb/conftest.py +60 -0
  618. sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/adk/__init__.py +1 -0
  619. sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/adk/test_inmemory.py +416 -0
  620. sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/adk/test_oracle_specific.py +496 -0
  621. sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/events/test_oracle_aq.py +111 -0
  622. sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/events/test_queue_backend.py +166 -0
  623. sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/litestar/test_inmemory.py +282 -0
  624. sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/litestar/test_store_async.py +248 -0
  625. sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/litestar/test_store_sync.py +248 -0
  626. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_arrow.py +258 -0
  627. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_driver_async.py +529 -0
  628. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_driver_sync.py +521 -0
  629. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_exceptions.py +142 -0
  630. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_execute_many.py +323 -0
  631. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_explain.py +132 -0
  632. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_features.py +361 -0
  633. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_merge.py +360 -0
  634. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_merge_bulk.py +312 -0
  635. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_migrations.py +927 -0
  636. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_msgspec_clob.py +525 -0
  637. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_numpy_vectors.py +378 -0
  638. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_parameter_styles.py +818 -0
  639. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_stack.py +142 -0
  640. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_uuid_binary.py +354 -0
  641. sqlspec-0.38.0/tests/integration/adapters/oracledb/test_vector_functions.py +240 -0
  642. sqlspec-0.38.0/tests/integration/adapters/psqlpy/__init__.py +1 -0
  643. sqlspec-0.38.0/tests/integration/adapters/psqlpy/conftest.py +57 -0
  644. sqlspec-0.38.0/tests/integration/adapters/psqlpy/extensions/__init__.py +1 -0
  645. sqlspec-0.38.0/tests/integration/adapters/psqlpy/extensions/adk/__init__.py +1 -0
  646. sqlspec-0.38.0/tests/integration/adapters/psqlpy/extensions/adk/test_owner_id_column.py +125 -0
  647. sqlspec-0.38.0/tests/integration/adapters/psqlpy/extensions/events/test_listen_notify.py +102 -0
  648. sqlspec-0.38.0/tests/integration/adapters/psqlpy/extensions/events/test_queue_backend.py +50 -0
  649. sqlspec-0.38.0/tests/integration/adapters/psqlpy/extensions/litestar/__init__.py +1 -0
  650. sqlspec-0.38.0/tests/integration/adapters/psqlpy/extensions/litestar/test_store.py +237 -0
  651. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_arrow.py +194 -0
  652. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_driver.py +661 -0
  653. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_exceptions.py +118 -0
  654. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_explain.py +110 -0
  655. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_features.py +221 -0
  656. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_merge_bulk.py +280 -0
  657. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_migrations.py +372 -0
  658. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_parameter_styles.py +661 -0
  659. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_storage_bridge.py +63 -0
  660. sqlspec-0.38.0/tests/integration/adapters/psqlpy/test_vector_functions.py +240 -0
  661. sqlspec-0.38.0/tests/integration/adapters/psycopg/__init__.py +3 -0
  662. sqlspec-0.38.0/tests/integration/adapters/psycopg/conftest.py +53 -0
  663. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/__init__.py +0 -0
  664. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/adk/__init__.py +0 -0
  665. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/adk/test_owner_id_column.py +180 -0
  666. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/events/__init__.py +0 -0
  667. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/events/test_listen_notify.py +158 -0
  668. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/events/test_queue_backend.py +88 -0
  669. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/litestar/__init__.py +0 -0
  670. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/litestar/test_store_async.py +237 -0
  671. sqlspec-0.38.0/tests/integration/adapters/psycopg/extensions/litestar/test_store_sync.py +267 -0
  672. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_arrow.py +194 -0
  673. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_async_copy.py +203 -0
  674. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_driver.py +755 -0
  675. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_exceptions.py +161 -0
  676. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_execute_many.py +324 -0
  677. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_explain.py +181 -0
  678. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_merge_bulk.py +282 -0
  679. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_migrations.py +743 -0
  680. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_parameter_styles.py +1032 -0
  681. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_storage_bridge.py +151 -0
  682. sqlspec-0.38.0/tests/integration/adapters/psycopg/test_vector_functions.py +241 -0
  683. sqlspec-0.38.0/tests/integration/adapters/pymysql/__init__.py +1 -0
  684. sqlspec-0.38.0/tests/integration/adapters/pymysql/conftest.py +82 -0
  685. sqlspec-0.38.0/tests/integration/adapters/pymysql/extensions/__init__.py +1 -0
  686. sqlspec-0.38.0/tests/integration/adapters/pymysql/extensions/events/__init__.py +1 -0
  687. sqlspec-0.38.0/tests/integration/adapters/pymysql/extensions/events/test_queue_backend.py +52 -0
  688. sqlspec-0.38.0/tests/integration/adapters/pymysql/extensions/litestar/__init__.py +1 -0
  689. sqlspec-0.38.0/tests/integration/adapters/pymysql/extensions/litestar/test_store.py +65 -0
  690. sqlspec-0.38.0/tests/integration/adapters/pymysql/test_config.py +80 -0
  691. sqlspec-0.38.0/tests/integration/adapters/pymysql/test_driver.py +203 -0
  692. sqlspec-0.38.0/tests/integration/adapters/pymysql/test_exceptions.py +115 -0
  693. sqlspec-0.38.0/tests/integration/adapters/spanner/__init__.py +0 -0
  694. sqlspec-0.38.0/tests/integration/adapters/spanner/conftest.py +180 -0
  695. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/__init__.py +1 -0
  696. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/adk/__init__.py +0 -0
  697. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/adk/conftest.py +36 -0
  698. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/adk/test_adk_store.py +75 -0
  699. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/events/__init__.py +0 -0
  700. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/events/conftest.py +53 -0
  701. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/events/test_queue_backend.py +97 -0
  702. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/litestar/__init__.py +0 -0
  703. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/litestar/conftest.py +39 -0
  704. sqlspec-0.38.0/tests/integration/adapters/spanner/extensions/litestar/test_store.py +44 -0
  705. sqlspec-0.38.0/tests/integration/adapters/spanner/test_arrow.py +133 -0
  706. sqlspec-0.38.0/tests/integration/adapters/spanner/test_bytes_direct.py +76 -0
  707. sqlspec-0.38.0/tests/integration/adapters/spanner/test_crud_operations.py +199 -0
  708. sqlspec-0.38.0/tests/integration/adapters/spanner/test_driver.py +352 -0
  709. sqlspec-0.38.0/tests/integration/adapters/spanner/test_exceptions.py +118 -0
  710. sqlspec-0.38.0/tests/integration/adapters/spanner/test_execute_many.py +224 -0
  711. sqlspec-0.38.0/tests/integration/adapters/spanner/test_explain.py +92 -0
  712. sqlspec-0.38.0/tests/integration/adapters/spanner/test_parameter_styles.py +261 -0
  713. sqlspec-0.38.0/tests/integration/adapters/spanner/test_spangres_driver.py +65 -0
  714. sqlspec-0.38.0/tests/integration/adapters/spanner/test_spangres_parameter_styles.py +64 -0
  715. sqlspec-0.38.0/tests/integration/adapters/sqlite/__init__.py +1 -0
  716. sqlspec-0.38.0/tests/integration/adapters/sqlite/conftest.py +130 -0
  717. sqlspec-0.38.0/tests/integration/adapters/sqlite/extensions/__init__.py +1 -0
  718. sqlspec-0.38.0/tests/integration/adapters/sqlite/extensions/adk/__init__.py +1 -0
  719. sqlspec-0.38.0/tests/integration/adapters/sqlite/extensions/adk/test_memory_store.py +93 -0
  720. sqlspec-0.38.0/tests/integration/adapters/sqlite/extensions/adk/test_owner_id_column.py +386 -0
  721. sqlspec-0.38.0/tests/integration/adapters/sqlite/extensions/events/__init__.py +0 -0
  722. sqlspec-0.38.0/tests/integration/adapters/sqlite/extensions/events/test_queue_backend.py +182 -0
  723. sqlspec-0.38.0/tests/integration/adapters/sqlite/extensions/litestar/__init__.py +1 -0
  724. sqlspec-0.38.0/tests/integration/adapters/sqlite/extensions/litestar/test_store.py +253 -0
  725. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_arrow.py +156 -0
  726. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_data_dictionary.py +95 -0
  727. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_driver.py +580 -0
  728. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_driver_features.py +113 -0
  729. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_exceptions.py +112 -0
  730. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_explain.py +147 -0
  731. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_migrations.py +492 -0
  732. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_parameter_styles.py +417 -0
  733. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_pooling.py +279 -0
  734. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_query_mixin.py +214 -0
  735. sqlspec-0.38.0/tests/integration/adapters/sqlite/test_storage_bridge.py +45 -0
  736. sqlspec-0.38.0/tests/integration/cli/__init__.py +0 -0
  737. sqlspec-0.38.0/tests/integration/cli/test_config_discovery.py +577 -0
  738. sqlspec-0.38.0/tests/integration/cli/test_sync_adapter.py +290 -0
  739. sqlspec-0.38.0/tests/integration/config/__init__.py +0 -0
  740. sqlspec-0.38.0/tests/integration/config/conftest.py +18 -0
  741. sqlspec-0.38.0/tests/integration/config/test_connection_injection.py +347 -0
  742. sqlspec-0.38.0/tests/integration/conftest.py +27 -0
  743. sqlspec-0.38.0/tests/integration/core/__init__.py +0 -0
  744. sqlspec-0.38.0/tests/integration/core/test_stack_edge_cases.py +185 -0
  745. sqlspec-0.38.0/tests/integration/dishka/__init__.py +1 -0
  746. sqlspec-0.38.0/tests/integration/dishka/conftest.py +115 -0
  747. sqlspec-0.38.0/tests/integration/dishka/test_integration.py +472 -0
  748. sqlspec-0.38.0/tests/integration/extensions/__init__.py +1 -0
  749. sqlspec-0.38.0/tests/integration/extensions/fastapi/__init__.py +0 -0
  750. sqlspec-0.38.0/tests/integration/extensions/fastapi/test_filters_integration.py +395 -0
  751. sqlspec-0.38.0/tests/integration/extensions/fastapi/test_integration.py +284 -0
  752. sqlspec-0.38.0/tests/integration/extensions/flask/__init__.py +0 -0
  753. sqlspec-0.38.0/tests/integration/extensions/flask/test_disable_di.py +80 -0
  754. sqlspec-0.38.0/tests/integration/extensions/flask/test_integration.py +316 -0
  755. sqlspec-0.38.0/tests/integration/extensions/litestar/__init__.py +0 -0
  756. sqlspec-0.38.0/tests/integration/extensions/litestar/test_channels_backend.py +50 -0
  757. sqlspec-0.38.0/tests/integration/extensions/litestar/test_correlation_middleware.py +101 -0
  758. sqlspec-0.38.0/tests/integration/extensions/litestar/test_disable_di.py +69 -0
  759. sqlspec-0.38.0/tests/integration/extensions/litestar/test_logging_format.py +46 -0
  760. sqlspec-0.38.0/tests/integration/extensions/litestar/test_offset_pagination_serialization.py +37 -0
  761. sqlspec-0.38.0/tests/integration/extensions/prometheus/__init__.py +0 -0
  762. sqlspec-0.38.0/tests/integration/extensions/prometheus/test_integration.py +205 -0
  763. sqlspec-0.38.0/tests/integration/extensions/starlette/__init__.py +0 -0
  764. sqlspec-0.38.0/tests/integration/extensions/starlette/test_disable_di.py +70 -0
  765. sqlspec-0.38.0/tests/integration/extensions/starlette/test_integration.py +225 -0
  766. sqlspec-0.38.0/tests/integration/loader/__init__.py +5 -0
  767. sqlspec-0.38.0/tests/integration/loader/test_file_system.py +756 -0
  768. sqlspec-0.38.0/tests/integration/migrations/__init__.py +5 -0
  769. sqlspec-0.38.0/tests/integration/migrations/test_async_migrations.py +291 -0
  770. sqlspec-0.38.0/tests/integration/migrations/test_auto_sync.py +333 -0
  771. sqlspec-0.38.0/tests/integration/migrations/test_fix_checksum_stability.py +203 -0
  772. sqlspec-0.38.0/tests/integration/migrations/test_fix_file_operations.py +376 -0
  773. sqlspec-0.38.0/tests/integration/migrations/test_fix_idempotency_workflow.py +353 -0
  774. sqlspec-0.38.0/tests/integration/migrations/test_migrations_logging_format.py +38 -0
  775. sqlspec-0.38.0/tests/integration/migrations/test_schema_migration.py +311 -0
  776. sqlspec-0.38.0/tests/integration/migrations/test_upgrade_downgrade_versions.py +411 -0
  777. sqlspec-0.38.0/tests/integration/observability/__init__.py +0 -0
  778. sqlspec-0.38.0/tests/integration/observability/test_logging_format.py +78 -0
  779. sqlspec-0.38.0/tests/integration/storage/__init__.py +1 -0
  780. sqlspec-0.38.0/tests/integration/storage/test_integration.py +931 -0
  781. sqlspec-0.38.0/tests/integration/storage/test_signing.py +254 -0
  782. sqlspec-0.38.0/tests/integration/storage/test_streaming.py +49 -0
  783. sqlspec-0.38.0/tests/unit/__init__.py +1 -0
  784. sqlspec-0.38.0/tests/unit/adapters/__init__.py +3 -0
  785. sqlspec-0.38.0/tests/unit/adapters/conftest.py +590 -0
  786. sqlspec-0.38.0/tests/unit/adapters/test_adapter_implementations.py +431 -0
  787. sqlspec-0.38.0/tests/unit/adapters/test_adbc/__init__.py +0 -0
  788. sqlspec-0.38.0/tests/unit/adapters/test_adbc/test_adbc_config_normalization.py +205 -0
  789. sqlspec-0.38.0/tests/unit/adapters/test_adbc/test_adbc_serialization.py +120 -0
  790. sqlspec-0.38.0/tests/unit/adapters/test_async_adapters.py +568 -0
  791. sqlspec-0.38.0/tests/unit/adapters/test_asyncmy/__init__.py +0 -0
  792. sqlspec-0.38.0/tests/unit/adapters/test_asyncmy/test_config.py +36 -0
  793. sqlspec-0.38.0/tests/unit/adapters/test_asyncpg/__init__.py +1 -0
  794. sqlspec-0.38.0/tests/unit/adapters/test_asyncpg/test_cloud_connectors.py +546 -0
  795. sqlspec-0.38.0/tests/unit/adapters/test_asyncpg/test_config.py +36 -0
  796. sqlspec-0.38.0/tests/unit/adapters/test_asyncpg/test_type_handlers.py +66 -0
  797. sqlspec-0.38.0/tests/unit/adapters/test_bigquery/__init__.py +1 -0
  798. sqlspec-0.38.0/tests/unit/adapters/test_bigquery/test_config.py +28 -0
  799. sqlspec-0.38.0/tests/unit/adapters/test_bigquery/test_execute_many.py +74 -0
  800. sqlspec-0.38.0/tests/unit/adapters/test_bigquery/test_parameters.py +13 -0
  801. sqlspec-0.38.0/tests/unit/adapters/test_cockroach_asyncpg/__init__.py +1 -0
  802. sqlspec-0.38.0/tests/unit/adapters/test_cockroach_asyncpg/test_config.py +125 -0
  803. sqlspec-0.38.0/tests/unit/adapters/test_cockroach_asyncpg/test_core.py +169 -0
  804. sqlspec-0.38.0/tests/unit/adapters/test_cockroach_psycopg/__init__.py +1 -0
  805. sqlspec-0.38.0/tests/unit/adapters/test_cockroach_psycopg/test_config.py +214 -0
  806. sqlspec-0.38.0/tests/unit/adapters/test_cockroach_psycopg/test_core.py +169 -0
  807. sqlspec-0.38.0/tests/unit/adapters/test_duckdb/__init__.py +1 -0
  808. sqlspec-0.38.0/tests/unit/adapters/test_duckdb/test_config.py +28 -0
  809. sqlspec-0.38.0/tests/unit/adapters/test_duckdb/test_extension_flags.py +42 -0
  810. sqlspec-0.38.0/tests/unit/adapters/test_duckdb/test_type_converter.py +82 -0
  811. sqlspec-0.38.0/tests/unit/adapters/test_extension_config.py +214 -0
  812. sqlspec-0.38.0/tests/unit/adapters/test_mock/__init__.py +1 -0
  813. sqlspec-0.38.0/tests/unit/adapters/test_mock/test_config.py +152 -0
  814. sqlspec-0.38.0/tests/unit/adapters/test_mock/test_core.py +349 -0
  815. sqlspec-0.38.0/tests/unit/adapters/test_mock/test_cursor_and_exceptions.py +256 -0
  816. sqlspec-0.38.0/tests/unit/adapters/test_mock/test_data_dictionary.py +319 -0
  817. sqlspec-0.38.0/tests/unit/adapters/test_mock/test_dialect_transpilation.py +224 -0
  818. sqlspec-0.38.0/tests/unit/adapters/test_mock/test_driver.py +233 -0
  819. sqlspec-0.38.0/tests/unit/adapters/test_mock/test_edge_cases.py +389 -0
  820. sqlspec-0.38.0/tests/unit/adapters/test_oracledb/__init__.py +0 -0
  821. sqlspec-0.38.0/tests/unit/adapters/test_oracledb/test_data_dictionary_oracledb.py +157 -0
  822. sqlspec-0.38.0/tests/unit/adapters/test_oracledb/test_numpy_handlers.py +228 -0
  823. sqlspec-0.38.0/tests/unit/adapters/test_oracledb/test_oracle_adk_store.py +49 -0
  824. sqlspec-0.38.0/tests/unit/adapters/test_oracledb/test_pipeline_helpers.py +137 -0
  825. sqlspec-0.38.0/tests/unit/adapters/test_oracledb/test_type_converter_vectors.py +192 -0
  826. sqlspec-0.38.0/tests/unit/adapters/test_oracledb/test_uuid_handlers.py +240 -0
  827. sqlspec-0.38.0/tests/unit/adapters/test_pool_logging.py +203 -0
  828. sqlspec-0.38.0/tests/unit/adapters/test_psqlpy/__init__.py +0 -0
  829. sqlspec-0.38.0/tests/unit/adapters/test_psqlpy/test_config.py +28 -0
  830. sqlspec-0.38.0/tests/unit/adapters/test_psycopg/__init__.py +1 -0
  831. sqlspec-0.38.0/tests/unit/adapters/test_psycopg/test_config.py +58 -0
  832. sqlspec-0.38.0/tests/unit/adapters/test_psycopg/test_type_handlers.py +102 -0
  833. sqlspec-0.38.0/tests/unit/adapters/test_spanner/__init__.py +1 -0
  834. sqlspec-0.38.0/tests/unit/adapters/test_spanner/conftest.py +3 -0
  835. sqlspec-0.38.0/tests/unit/adapters/test_spanner/test_config.py +210 -0
  836. sqlspec-0.38.0/tests/unit/adapters/test_spanner/test_dialect.py +801 -0
  837. sqlspec-0.38.0/tests/unit/adapters/test_spanner/test_driver.py +79 -0
  838. sqlspec-0.38.0/tests/unit/adapters/test_spanner/test_events_store.py +202 -0
  839. sqlspec-0.38.0/tests/unit/adapters/test_spanner/test_litestar_store.py +124 -0
  840. sqlspec-0.38.0/tests/unit/adapters/test_spanner/test_type_converter.py +30 -0
  841. sqlspec-0.38.0/tests/unit/adapters/test_sqlite/__init__.py +0 -0
  842. sqlspec-0.38.0/tests/unit/adapters/test_sqlite/test_type_handlers.py +44 -0
  843. sqlspec-0.38.0/tests/unit/adapters/test_sync_adapters.py +488 -0
  844. sqlspec-0.38.0/tests/unit/base/__init__.py +1 -0
  845. sqlspec-0.38.0/tests/unit/base/test_config_instances.py +487 -0
  846. sqlspec-0.38.0/tests/unit/base/test_sql_integration.py +301 -0
  847. sqlspec-0.38.0/tests/unit/base/test_sqlspec_class.py +603 -0
  848. sqlspec-0.38.0/tests/unit/builder/__init__.py +1 -0
  849. sqlspec-0.38.0/tests/unit/builder/test_cte_parameter_collisions.py +244 -0
  850. sqlspec-0.38.0/tests/unit/builder/test_dialect_override.py +156 -0
  851. sqlspec-0.38.0/tests/unit/builder/test_explain.py +1528 -0
  852. sqlspec-0.38.0/tests/unit/builder/test_insert_builder.py +321 -0
  853. sqlspec-0.38.0/tests/unit/builder/test_lateral_joins.py +272 -0
  854. sqlspec-0.38.0/tests/unit/builder/test_merge.py +720 -0
  855. sqlspec-0.38.0/tests/unit/builder/test_merge_dialect_validation.py +231 -0
  856. sqlspec-0.38.0/tests/unit/builder/test_merge_property_shorthand.py +183 -0
  857. sqlspec-0.38.0/tests/unit/builder/test_parameter_naming.py +481 -0
  858. sqlspec-0.38.0/tests/unit/builder/test_parsing_utils.py +186 -0
  859. sqlspec-0.38.0/tests/unit/builder/test_select_builder.py +62 -0
  860. sqlspec-0.38.0/tests/unit/builder/test_select_locking.py +240 -0
  861. sqlspec-0.38.0/tests/unit/builder/test_sql_factory.py +2062 -0
  862. sqlspec-0.38.0/tests/unit/builder/test_temporal.py +122 -0
  863. sqlspec-0.38.0/tests/unit/builder/test_to_sql.py +384 -0
  864. sqlspec-0.38.0/tests/unit/builder/test_upsert_factory.py +272 -0
  865. sqlspec-0.38.0/tests/unit/builder/test_vector_functions.py +570 -0
  866. sqlspec-0.38.0/tests/unit/builder/test_where_or_operations.py +560 -0
  867. sqlspec-0.38.0/tests/unit/cli/__init__.py +0 -0
  868. sqlspec-0.38.0/tests/unit/cli/test_config_loading.py +153 -0
  869. sqlspec-0.38.0/tests/unit/cli/test_migration_commands.py +770 -0
  870. sqlspec-0.38.0/tests/unit/cli/test_shell_completion.py +59 -0
  871. sqlspec-0.38.0/tests/unit/config/__init__.py +0 -0
  872. sqlspec-0.38.0/tests/unit/config/test_connection_config_edge_cases.py +426 -0
  873. sqlspec-0.38.0/tests/unit/config/test_connection_config_parameters.py +544 -0
  874. sqlspec-0.38.0/tests/unit/config/test_discovery.py +265 -0
  875. sqlspec-0.38.0/tests/unit/config/test_migration_methods.py +507 -0
  876. sqlspec-0.38.0/tests/unit/config/test_observability_extensions.py +66 -0
  877. sqlspec-0.38.0/tests/unit/config/test_resolver.py +258 -0
  878. sqlspec-0.38.0/tests/unit/config/test_storage_capabilities.py +109 -0
  879. sqlspec-0.38.0/tests/unit/conftest.py +1119 -0
  880. sqlspec-0.38.0/tests/unit/core/__init__.py +0 -0
  881. sqlspec-0.38.0/tests/unit/core/test_cache.py +844 -0
  882. sqlspec-0.38.0/tests/unit/core/test_compiler.py +970 -0
  883. sqlspec-0.38.0/tests/unit/core/test_correlation.py +189 -0
  884. sqlspec-0.38.0/tests/unit/core/test_data_dictionary.py +87 -0
  885. sqlspec-0.38.0/tests/unit/core/test_filters.py +509 -0
  886. sqlspec-0.38.0/tests/unit/core/test_hashing.py +535 -0
  887. sqlspec-0.38.0/tests/unit/core/test_parameter_regex_performance.py +200 -0
  888. sqlspec-0.38.0/tests/unit/core/test_parameters.py +1887 -0
  889. sqlspec-0.38.0/tests/unit/core/test_query_modifiers.py +675 -0
  890. sqlspec-0.38.0/tests/unit/core/test_result.py +605 -0
  891. sqlspec-0.38.0/tests/unit/core/test_sql_modifiers.py +483 -0
  892. sqlspec-0.38.0/tests/unit/core/test_stack.py +135 -0
  893. sqlspec-0.38.0/tests/unit/core/test_statement.py +1240 -0
  894. sqlspec-0.38.0/tests/unit/core/test_type_conversion.py +322 -0
  895. sqlspec-0.38.0/tests/unit/dialects/__init__.py +0 -0
  896. sqlspec-0.38.0/tests/unit/dialects/test_spangres.py +32 -0
  897. sqlspec-0.38.0/tests/unit/dialects/test_spanner.py +113 -0
  898. sqlspec-0.38.0/tests/unit/driver/__init__.py +0 -0
  899. sqlspec-0.38.0/tests/unit/driver/test_count_query.py +643 -0
  900. sqlspec-0.38.0/tests/unit/driver/test_data_dictionary.py +364 -0
  901. sqlspec-0.38.0/tests/unit/driver/test_fetch_aliases.py +531 -0
  902. sqlspec-0.38.0/tests/unit/driver/test_force_select.py +93 -0
  903. sqlspec-0.38.0/tests/unit/driver/test_result_tools.py +415 -0
  904. sqlspec-0.38.0/tests/unit/driver/test_stack_base.py +128 -0
  905. sqlspec-0.38.0/tests/unit/exceptions/__init__.py +1 -0
  906. sqlspec-0.38.0/tests/unit/exceptions/test_exceptions.py +158 -0
  907. sqlspec-0.38.0/tests/unit/extensions/__init__.py +1 -0
  908. sqlspec-0.38.0/tests/unit/extensions/conftest.py +5 -0
  909. sqlspec-0.38.0/tests/unit/extensions/test_adk/__init__.py +0 -0
  910. sqlspec-0.38.0/tests/unit/extensions/test_adk/test_memory_converters.py +69 -0
  911. sqlspec-0.38.0/tests/unit/extensions/test_events/__init__.py +0 -0
  912. sqlspec-0.38.0/tests/unit/extensions/test_events/test_adapter_stores.py +1099 -0
  913. sqlspec-0.38.0/tests/unit/extensions/test_events/test_backend_factories.py +541 -0
  914. sqlspec-0.38.0/tests/unit/extensions/test_events/test_channel.py +237 -0
  915. sqlspec-0.38.0/tests/unit/extensions/test_events/test_channel_extended.py +253 -0
  916. sqlspec-0.38.0/tests/unit/extensions/test_events/test_events_config.py +157 -0
  917. sqlspec-0.38.0/tests/unit/extensions/test_events/test_hints.py +103 -0
  918. sqlspec-0.38.0/tests/unit/extensions/test_events/test_models.py +181 -0
  919. sqlspec-0.38.0/tests/unit/extensions/test_events/test_queue.py +277 -0
  920. sqlspec-0.38.0/tests/unit/extensions/test_events/test_store.py +108 -0
  921. sqlspec-0.38.0/tests/unit/extensions/test_events/test_store_hooks.py +701 -0
  922. sqlspec-0.38.0/tests/unit/extensions/test_fastapi/__init__.py +1 -0
  923. sqlspec-0.38.0/tests/unit/extensions/test_fastapi/test_extension.py +95 -0
  924. sqlspec-0.38.0/tests/unit/extensions/test_fastapi/test_providers.py +328 -0
  925. sqlspec-0.38.0/tests/unit/extensions/test_flask/__init__.py +1 -0
  926. sqlspec-0.38.0/tests/unit/extensions/test_flask/test_correlation.py +265 -0
  927. sqlspec-0.38.0/tests/unit/extensions/test_flask/test_extension.py +100 -0
  928. sqlspec-0.38.0/tests/unit/extensions/test_flask/test_state.py +169 -0
  929. sqlspec-0.38.0/tests/unit/extensions/test_litestar/__init__.py +1 -0
  930. sqlspec-0.38.0/tests/unit/extensions/test_litestar/test_correlation_middleware.py +30 -0
  931. sqlspec-0.38.0/tests/unit/extensions/test_litestar/test_handlers.py +301 -0
  932. sqlspec-0.38.0/tests/unit/extensions/test_otel/__init__.py +0 -0
  933. sqlspec-0.38.0/tests/unit/extensions/test_otel/test_enable_tracing.py +25 -0
  934. sqlspec-0.38.0/tests/unit/extensions/test_prometheus/__init__.py +0 -0
  935. sqlspec-0.38.0/tests/unit/extensions/test_prometheus/test_enable_metrics.py +41 -0
  936. sqlspec-0.38.0/tests/unit/extensions/test_prometheus/test_metrics.py +351 -0
  937. sqlspec-0.38.0/tests/unit/extensions/test_starlette/__init__.py +1 -0
  938. sqlspec-0.38.0/tests/unit/extensions/test_starlette/test_config_state.py +68 -0
  939. sqlspec-0.38.0/tests/unit/extensions/test_starlette/test_correlation_middleware.py +281 -0
  940. sqlspec-0.38.0/tests/unit/extensions/test_starlette/test_extension.py +74 -0
  941. sqlspec-0.38.0/tests/unit/extensions/test_starlette/test_utils.py +147 -0
  942. sqlspec-0.38.0/tests/unit/loader/__init__.py +4 -0
  943. sqlspec-0.38.0/tests/unit/loader/test_cache_integration.py +628 -0
  944. sqlspec-0.38.0/tests/unit/loader/test_correlation_preserved.py +19 -0
  945. sqlspec-0.38.0/tests/unit/loader/test_fixtures_directory_loading.py +646 -0
  946. sqlspec-0.38.0/tests/unit/loader/test_loading_patterns.py +780 -0
  947. sqlspec-0.38.0/tests/unit/loader/test_sql_file_loader.py +1007 -0
  948. sqlspec-0.38.0/tests/unit/migrations/__init__.py +8 -0
  949. sqlspec-0.38.0/tests/unit/migrations/test_checksum_canonicalization.py +345 -0
  950. sqlspec-0.38.0/tests/unit/migrations/test_extension_discovery.py +80 -0
  951. sqlspec-0.38.0/tests/unit/migrations/test_fix_regex_precision.py +368 -0
  952. sqlspec-0.38.0/tests/unit/migrations/test_migration.py +702 -0
  953. sqlspec-0.38.0/tests/unit/migrations/test_migration_commands.py +382 -0
  954. sqlspec-0.38.0/tests/unit/migrations/test_migration_context.py +200 -0
  955. sqlspec-0.38.0/tests/unit/migrations/test_migration_execution.py +627 -0
  956. sqlspec-0.38.0/tests/unit/migrations/test_migration_runner.py +874 -0
  957. sqlspec-0.38.0/tests/unit/migrations/test_tracker_idempotency.py +317 -0
  958. sqlspec-0.38.0/tests/unit/migrations/test_utils.py +385 -0
  959. sqlspec-0.38.0/tests/unit/migrations/test_validation.py +206 -0
  960. sqlspec-0.38.0/tests/unit/migrations/test_version.py +326 -0
  961. sqlspec-0.38.0/tests/unit/migrations/test_version_conversion.py +303 -0
  962. sqlspec-0.38.0/tests/unit/migrations/test_version_parsing_edge_cases.py +236 -0
  963. sqlspec-0.38.0/tests/unit/observability/__init__.py +0 -0
  964. sqlspec-0.38.0/tests/unit/observability/test_formatters.py +290 -0
  965. sqlspec-0.38.0/tests/unit/observability/test_observability_core.py +608 -0
  966. sqlspec-0.38.0/tests/unit/observability/test_observability_logging.py +327 -0
  967. sqlspec-0.38.0/tests/unit/observability/test_observability_sampling.py +347 -0
  968. sqlspec-0.38.0/tests/unit/observability/test_sampling.py +204 -0
  969. sqlspec-0.38.0/tests/unit/storage/__init__.py +1 -0
  970. sqlspec-0.38.0/tests/unit/storage/test_bridge.py +373 -0
  971. sqlspec-0.38.0/tests/unit/storage/test_errors.py +32 -0
  972. sqlspec-0.38.0/tests/unit/storage/test_fsspec_backend.py +481 -0
  973. sqlspec-0.38.0/tests/unit/storage/test_local_store.py +446 -0
  974. sqlspec-0.38.0/tests/unit/storage/test_obstore_backend.py +470 -0
  975. sqlspec-0.38.0/tests/unit/storage/test_signing.py +407 -0
  976. sqlspec-0.38.0/tests/unit/storage/test_storage_registry.py +248 -0
  977. sqlspec-0.38.0/tests/unit/storage/test_storage_utils.py +75 -0
  978. sqlspec-0.38.0/tests/unit/utils/__init__.py +1 -0
  979. sqlspec-0.38.0/tests/unit/utils/test_arrow_helpers.py +145 -0
  980. sqlspec-0.38.0/tests/unit/utils/test_correlation.py +466 -0
  981. sqlspec-0.38.0/tests/unit/utils/test_data_transformation.py +343 -0
  982. sqlspec-0.38.0/tests/unit/utils/test_dependencies.py +302 -0
  983. sqlspec-0.38.0/tests/unit/utils/test_deprecation.py +153 -0
  984. sqlspec-0.38.0/tests/unit/utils/test_fixtures.py +498 -0
  985. sqlspec-0.38.0/tests/unit/utils/test_logging.py +705 -0
  986. sqlspec-0.38.0/tests/unit/utils/test_portal.py +399 -0
  987. sqlspec-0.38.0/tests/unit/utils/test_serialization.py +558 -0
  988. sqlspec-0.38.0/tests/unit/utils/test_serializers.py +668 -0
  989. sqlspec-0.38.0/tests/unit/utils/test_sync_tools.py +453 -0
  990. sqlspec-0.38.0/tests/unit/utils/test_text.py +255 -0
  991. sqlspec-0.38.0/tests/unit/utils/test_to_value_type.py +764 -0
  992. sqlspec-0.38.0/tests/unit/utils/test_type_guards.py +1103 -0
  993. sqlspec-0.38.0/tests/unit/utils/test_uuids.py +501 -0
  994. sqlspec-0.38.0/tools/__init__.py +0 -0
  995. sqlspec-0.38.0/tools/build_docs.py +35 -0
  996. sqlspec-0.38.0/tools/fix_documentation.py +227 -0
  997. sqlspec-0.38.0/tools/local-infra.sh +686 -0
  998. sqlspec-0.38.0/tools/run_pre_commit.py +57 -0
  999. sqlspec-0.38.0/tools/sphinx_ext/__init__.py +16 -0
  1000. {sqlspec-0.5.0 → sqlspec-0.38.0}/tools/sphinx_ext/changelog.py +4 -9
  1001. sqlspec-0.38.0/tools/sphinx_ext/missing_references.py +331 -0
  1002. sqlspec-0.38.0/tools/sphinx_ext/playground.py +38 -0
  1003. sqlspec-0.38.0/tools/sphinx_ext/playground_template.html +691 -0
  1004. sqlspec-0.38.0/uv.lock +8142 -0
  1005. sqlspec-0.5.0/NOTICE +0 -29
  1006. sqlspec-0.5.0/PKG-INFO +0 -126
  1007. sqlspec-0.5.0/README.md +0 -75
  1008. sqlspec-0.5.0/pyproject.toml +0 -345
  1009. sqlspec-0.5.0/sqlspec/__init__.py +0 -1
  1010. sqlspec-0.5.0/sqlspec/_serialization.py +0 -24
  1011. sqlspec-0.5.0/sqlspec/_typing.py +0 -168
  1012. sqlspec-0.5.0/sqlspec/adapters/adbc/config.py +0 -52
  1013. sqlspec-0.5.0/sqlspec/adapters/aiosqlite/__init__.py +0 -3
  1014. sqlspec-0.5.0/sqlspec/adapters/aiosqlite/config.py +0 -95
  1015. sqlspec-0.5.0/sqlspec/adapters/asyncmy/__init__.py +0 -3
  1016. sqlspec-0.5.0/sqlspec/adapters/asyncmy/config.py +0 -181
  1017. sqlspec-0.5.0/sqlspec/adapters/asyncpg/config.py +0 -149
  1018. sqlspec-0.5.0/sqlspec/adapters/duckdb/__init__.py +0 -3
  1019. sqlspec-0.5.0/sqlspec/adapters/duckdb/config.py +0 -202
  1020. sqlspec-0.5.0/sqlspec/adapters/oracledb/__init__.py +0 -13
  1021. sqlspec-0.5.0/sqlspec/adapters/oracledb/config/__init__.py +0 -9
  1022. sqlspec-0.5.0/sqlspec/adapters/oracledb/config/_asyncio.py +0 -98
  1023. sqlspec-0.5.0/sqlspec/adapters/oracledb/config/_common.py +0 -151
  1024. sqlspec-0.5.0/sqlspec/adapters/oracledb/config/_sync.py +0 -98
  1025. sqlspec-0.5.0/sqlspec/adapters/psycopg/config/__init__.py +0 -9
  1026. sqlspec-0.5.0/sqlspec/adapters/psycopg/config/_async.py +0 -78
  1027. sqlspec-0.5.0/sqlspec/adapters/psycopg/config/_common.py +0 -73
  1028. sqlspec-0.5.0/sqlspec/adapters/psycopg/config/_sync.py +0 -78
  1029. sqlspec-0.5.0/sqlspec/adapters/sqlite/config.py +0 -92
  1030. sqlspec-0.5.0/sqlspec/base.py +0 -87
  1031. sqlspec-0.5.0/sqlspec/exceptions.py +0 -103
  1032. sqlspec-0.5.0/sqlspec/extensions/litestar/plugin.py +0 -34
  1033. sqlspec-0.5.0/sqlspec/filters.py +0 -129
  1034. sqlspec-0.5.0/sqlspec/typing.py +0 -503
  1035. sqlspec-0.5.0/sqlspec/utils/deprecation.py +0 -111
  1036. sqlspec-0.5.0/sqlspec/utils/fixtures.py +0 -66
  1037. sqlspec-0.5.0/sqlspec/utils/module_loader.py +0 -94
  1038. sqlspec-0.5.0/sqlspec/utils/text.py +0 -46
  1039. sqlspec-0.5.0/tests/conftest.py +0 -18
  1040. sqlspec-0.5.0/tests/unit/test_adapters/test_duckdb/test_config.py +0 -254
  1041. sqlspec-0.5.0/tests/unit/test_typing.py +0 -276
  1042. sqlspec-0.5.0/tests/unit/test_utils/test_module_loader.py +0 -47
  1043. sqlspec-0.5.0/tests/unit/test_utils/test_text.py +0 -16
  1044. sqlspec-0.5.0/tools/build_docs.py +0 -93
  1045. sqlspec-0.5.0/tools/sphinx_ext/__init__.py +0 -16
  1046. sqlspec-0.5.0/tools/sphinx_ext/missing_references.py +0 -122
  1047. sqlspec-0.5.0/uv.lock +0 -3662
  1048. {sqlspec-0.5.0 → sqlspec-0.38.0}/sqlspec/adapters/__init__.py +0 -0
  1049. /sqlspec-0.5.0/sqlspec/adapters/adbc/__init__.py → /sqlspec-0.38.0/sqlspec/data_dictionary/sql/.gitkeep +0 -0
  1050. {sqlspec-0.5.0/sqlspec/adapters/asyncpg → sqlspec-0.38.0/sqlspec/extensions}/__init__.py +0 -0
  1051. {sqlspec-0.5.0/sqlspec/adapters/psycopg → sqlspec-0.38.0/sqlspec/extensions/adk/migrations}/__init__.py +0 -0
  1052. {sqlspec-0.5.0 → sqlspec-0.38.0}/sqlspec/py.typed +0 -0
  1053. {sqlspec-0.5.0/sqlspec/adapters/sqlite → sqlspec-0.38.0/tests/integration/adapters/aiosqlite/extensions/adk}/__init__.py +0 -0
  1054. {sqlspec-0.5.0/sqlspec/extensions → sqlspec-0.38.0/tests/integration/adapters/aiosqlite/extensions/events}/__init__.py +0 -0
  1055. {sqlspec-0.5.0/sqlspec/extensions/litestar → sqlspec-0.38.0/tests/integration/adapters/asyncmy/extensions/events}/__init__.py +0 -0
  1056. {sqlspec-0.5.0/sqlspec/utils → sqlspec-0.38.0/tests/integration/adapters/asyncpg/extensions/events}/__init__.py +0 -0
  1057. {sqlspec-0.5.0/tests → sqlspec-0.38.0/tests/integration/adapters/duckdb/extensions/adk}/__init__.py +0 -0
  1058. {sqlspec-0.5.0/tests/unit → sqlspec-0.38.0/tests/integration/adapters/duckdb/extensions/events}/__init__.py +0 -0
  1059. {sqlspec-0.5.0/tests/unit/test_adapters → sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions}/__init__.py +0 -0
  1060. {sqlspec-0.5.0/tests/unit/test_adapters/test_duckdb → sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/events}/__init__.py +0 -0
  1061. {sqlspec-0.5.0/tests/unit/test_utils → sqlspec-0.38.0/tests/integration/adapters/oracledb/extensions/litestar}/__init__.py +0 -0
  1062. {sqlspec-0.5.0/tools → sqlspec-0.38.0/tests/integration/adapters/psqlpy/extensions/events}/__init__.py +0 -0
  1063. {sqlspec-0.5.0 → sqlspec-0.38.0}/tools/pypi_readme.py +0 -0
@@ -18,7 +18,9 @@ target/
18
18
  .idea/
19
19
  .vscode/
20
20
  .cursor/
21
-
21
+ .zed/
22
+ .cache
23
+ .coverage*
22
24
  # files
23
25
  **/*.so
24
26
  **/*.sqlite
@@ -29,5 +31,33 @@ target/
29
31
  .python-version
30
32
  .ruff_cache
31
33
  /docs/_build/
34
+ docs/autoapi/
32
35
  coverage.*
33
36
  setup.py
37
+ tmp/
38
+ *.log
39
+ .tmp
40
+ .tmp_mypyc
41
+ TODO*
42
+ .env
43
+ tools/*.json
44
+ benchmarks/
45
+ .benchmark
46
+ *.db
47
+ *.db-journal
48
+ *.db-wal
49
+ *.db-shm
50
+ *.duckdb
51
+ .crush
52
+ CRUSH.md
53
+ CLAUDE.md
54
+ AGENTS.md
55
+ docs-build
56
+ .envs/
57
+ .claude/*
58
+ .gh-cache
59
+ .gemini/
60
+ specs/
61
+ .playwright-mcp
62
+ .geminiignore
63
+ uv.toml
@@ -2,12 +2,12 @@ default_language_version:
2
2
  python: "3"
3
3
  repos:
4
4
  - repo: https://github.com/compilerla/conventional-pre-commit
5
- rev: v4.0.0
5
+ rev: v4.3.0
6
6
  hooks:
7
7
  - id: conventional-pre-commit
8
8
  stages: [commit-msg]
9
9
  - repo: https://github.com/pre-commit/pre-commit-hooks
10
- rev: v5.0.0
10
+ rev: v6.0.0
11
11
  hooks:
12
12
  - id: check-ast
13
13
  - id: check-case-conflict
@@ -17,19 +17,19 @@ repos:
17
17
  - id: mixed-line-ending
18
18
  - id: trailing-whitespace
19
19
  - repo: https://github.com/charliermarsh/ruff-pre-commit
20
- rev: "v0.9.1"
20
+ rev: "v0.14.13"
21
21
  hooks:
22
22
  - id: ruff
23
23
  args: ["--fix"]
24
24
  - id: ruff-format
25
25
  - repo: https://github.com/codespell-project/codespell
26
- rev: v2.3.0
26
+ rev: v2.4.1
27
27
  hooks:
28
28
  - id: codespell
29
29
  additional_dependencies:
30
30
  - tomli
31
31
  - repo: https://github.com/python-formate/flake8-dunder-all
32
- rev: v0.4.1
32
+ rev: v0.5.0
33
33
  hooks:
34
34
  - id: ensure-dunder-all
35
35
  exclude: "test*|tools"
@@ -40,9 +40,10 @@ repos:
40
40
  - id: slotscheck
41
41
  exclude: "docs|.github"
42
42
  - repo: https://github.com/sphinx-contrib/sphinx-lint
43
- rev: "v1.0.0"
43
+ rev: "v1.0.2"
44
44
  hooks:
45
45
  - id: sphinx-lint
46
+ args: ["--jobs", "1"]
46
47
  - repo: local
47
48
  hooks:
48
49
  - id: pypi-readme
@@ -18,7 +18,7 @@ Workflow
18
18
  2. Clone your fork locally with git
19
19
  3. `Set up the environment <#setting-up-the-environment>`_
20
20
  4. Make your changes
21
- 5. Run ``male lint`` to run linters and formatters. This step is optional and will be executed
21
+ 5. Run ``make lint`` to run linters and formatters. This step is optional and will be executed
22
22
  automatically by git before you make a commit, but you may want to run it manually in order to apply fixes
23
23
  6. Commit your changes to git
24
24
  7. Push the changes to your fork
@@ -36,7 +36,14 @@ Guidelines for writing code
36
36
  - All code should be fully `typed <https://peps.python.org/pep-0484/>`_. This is enforced via
37
37
  `mypy <https://mypy.readthedocs.io/en/stable/>`_.
38
38
  - All code should be tested. This is enforced via `pytest <https://docs.pytest.org/en/stable/>`_.
39
- - All code should be properly formatted. This is enforced via `black <https://black.readthedocs.io/en/stable/>`_ and `Ruff <https://beta.ruff.rs/docs/>`_.
39
+ - All code should be properly formatted. This is enforced via `black <https://black.readthedocs.io/en/stable/>`_ and `Ruff <https://docs.astral.sh/ruff/>`_.
40
+
41
+ Logging
42
+ ++++++++
43
+
44
+ - Logger names must follow the ``sqlspec.<module>`` hierarchy.
45
+ - Always obtain loggers via ``sqlspec.utils.logging.get_logger`` to ensure filters are attached.
46
+ - Use static event names in structured logs and include context fields instead of dynamic message strings.
40
47
 
41
48
  Writing and running tests
42
49
  +++++++++++++++++++++++++
@@ -48,8 +55,8 @@ Project documentation
48
55
 
49
56
  The documentation is located in the ``/docs`` directory and is `ReST <https://docutils.sourceforge.io/rst.html>`_ and
50
57
  `Sphinx <https://www.sphinx-doc.org/en/master/>`_. If you're unfamiliar with any of those,
51
- `ReStructuredText primer <https://www.sphinx-doc.org/en/master/lib/usage/restructuredtext/basics.html>`_ and
52
- `Sphinx quickstart <https://www.sphinx-doc.org/en/master/lib/usage/quickstart.html>`_ are recommended reads.
58
+ `ReStructuredText primer <https://www.sphinx-doc.org/en/master/usage/restructuredtext/basics.html>`_ and
59
+ `Sphinx quickstart <https://www.sphinx-doc.org/en/master/usage/quickstart.html>`_ are recommended reads.
53
60
 
54
61
  Running the docs locally
55
62
  ++++++++++++++++++++++++
@@ -60,7 +67,7 @@ Creating a new release
60
67
  ----------------------
61
68
 
62
69
  1. Increment the version in `pyproject.toml <https://github.com/litestar-org/sqlspec/blob/main/pyproject.toml>`_.
63
- .. note:: The version should follow `semantic versioning <https://semver.org/>`_ and `PEP 440 <https://www.python.org/dev/peps/pep-0440/>`_.
70
+ .. note:: The version should follow `semantic versioning <https://semver.org/>`_ and `PEP 440 <https://peps.python.org/pep-0440/>`_.
64
71
  2. `Draft a new release <https://github.com/litestar-org/sqlspec/releases/new>`_ on GitHub
65
72
 
66
73
  * Use ``vMAJOR.MINOR.PATCH`` (e.g. ``v1.2.3``) as both the tag and release title
sqlspec-0.38.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 Litestar Organization
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -43,11 +43,23 @@ install-uv: ## Install latest version of
43
43
  .PHONY: install
44
44
  install: destroy clean ## Install the project, dependencies, and pre-commit
45
45
  @echo "${INFO} Starting fresh installation..."
46
- @uv python pin 3.12 >/dev/null 2>&1
46
+ @uv python pin 3.10 >/dev/null 2>&1
47
47
  @uv venv >/dev/null 2>&1
48
48
  @uv sync --all-extras --dev
49
49
  @echo "${OK} Installation complete! 🎉"
50
50
 
51
+ .PHONY: install-compiled
52
+ install-compiled: destroy clean ## Install with mypyc compilation for performance
53
+ @echo "${INFO} Starting fresh installation with mypyc compilation..."
54
+ @uv python pin 3.10 >/dev/null 2>&1
55
+ @uv venv >/dev/null 2>&1
56
+ @echo "${INFO} Installing in editable mode with mypyc compilation..."
57
+ @HATCH_BUILD_HOOKS_ENABLE=1 uv pip install -e .
58
+ @uv sync --all-extras --dev
59
+ @echo "${OK} Performance installation complete! 🚀"
60
+ @echo "${INFO} Verifying compilation..."
61
+ @find sqlspec -name "*.so" | wc -l | xargs -I {} echo "${OK} Compiled {} modules"
62
+
51
63
  .PHONY: destroy
52
64
  destroy: ## Destroy the virtual environment
53
65
  @echo "${INFO} Destroying virtual environment... 🗑️"
@@ -83,16 +95,57 @@ build: ## Build the package
83
95
  @uv build >/dev/null 2>&1
84
96
  @echo "${OK} Package build complete"
85
97
 
98
+ .PHONY: build-performance
99
+ build-performance: ## Build package with mypyc compilation
100
+ @echo "${INFO} Building package with mypyc compilation... 📦"
101
+ @HATCH_BUILD_HOOKS_ENABLE=1 uv build >/dev/null 2>&1
102
+ @echo "${OK} Performance package build complete 🚀"
103
+
104
+ .PHONY: test-mypyc
105
+ test-mypyc: ## Test mypyc compilation on individual modules
106
+ @echo "${INFO} Testing mypyc compilation... 🔧"
107
+ @uv run mypyc --check-untyped-defs sqlspec/utils/statement_hashing.py
108
+ @uv run mypyc --check-untyped-defs sqlspec/utils/text.py
109
+ @uv run mypyc --check-untyped-defs sqlspec/utils/sync_tools.py
110
+ @uv run mypyc --check-untyped-defs sqlspec/statement/cache.py
111
+ @echo "${OK} Mypyc compilation tests passed ✨"
112
+
113
+
86
114
  .PHONY: release
87
115
  release: ## Bump version and create release tag
88
116
  @echo "${INFO} Preparing for release... 📦"
89
117
  @make docs
90
118
  @make clean
91
119
  @make build
92
- @uv lock --upgrade-package litestar-vite >/dev/null 2>&1
93
120
  @uv run bump-my-version bump $(bump)
121
+ @uv lock --upgrade-package sqlspec >/dev/null 2>&1
94
122
  @echo "${OK} Release complete 🎉"
95
123
 
124
+ .PHONY: pre-release
125
+ pre-release: ## Start a pre-release: make pre-release version=0.33.0-alpha.1
126
+ @if [ -z "$(version)" ]; then \
127
+ echo "${ERROR} Usage: make pre-release version=X.Y.Z-alpha.N"; \
128
+ echo ""; \
129
+ echo "Pre-release workflow:"; \
130
+ echo " 1. Start alpha: make pre-release version=0.33.0-alpha.1"; \
131
+ echo " 2. Next alpha: make pre-release version=0.33.0-alpha.2"; \
132
+ echo " 3. Move to beta: make pre-release version=0.33.0-beta.1"; \
133
+ echo " 4. Move to rc: make pre-release version=0.33.0-rc.1"; \
134
+ echo " 5. Final release: make release bump=patch (from rc) OR bump=minor (from stable)"; \
135
+ exit 1; \
136
+ fi
137
+ @echo "${INFO} Preparing pre-release $(version)... 🧪"
138
+ @make clean
139
+ @make build
140
+ @uv run bump-my-version bump --new-version $(version) pre
141
+ @uv lock --upgrade-package sqlspec >/dev/null 2>&1
142
+ @echo "${OK} Pre-release $(version) complete 🧪"
143
+ @echo ""
144
+ @echo "${INFO} Next steps:"
145
+ @echo " 1. Push: git push origin HEAD"
146
+ @echo " 2. Create a GitHub pre-release: gh release create v$(version) --prerelease --generate-notes --title 'v$(version)'"
147
+ @echo " 3. This will publish to PyPI with pre-release tags"
148
+
96
149
  # =============================================================================
97
150
  # Cleaning and Maintenance
98
151
  # =============================================================================
@@ -101,13 +154,15 @@ release: ## Bump version and create re
101
154
  clean: ## Cleanup temporary build artifacts
102
155
  @echo "${INFO} Cleaning working directory... 🧹"
103
156
  @rm -rf .pytest_cache .ruff_cache .hypothesis build/ -rf dist/ .eggs/ .coverage coverage.xml coverage.json htmlcov/ .pytest_cache tests/.pytest_cache tests/**/.pytest_cache .mypy_cache .unasyncd_cache/ .auto_pytabs_cache >/dev/null 2>&1
104
- @find . -name '*.egg-info' -exec rm -rf {} + >/dev/null 2>&1
105
- @find . -type f -name '*.egg' -exec rm -f {} + >/dev/null 2>&1
106
- @find . -name '*.pyc' -exec rm -f {} + >/dev/null 2>&1
107
- @find . -name '*.pyo' -exec rm -f {} + >/dev/null 2>&1
108
- @find . -name '*~' -exec rm -f {} + >/dev/null 2>&1
109
- @find . -name '__pycache__' -exec rm -rf {} + >/dev/null 2>&1
110
- @find . -name '.ipynb_checkpoints' -exec rm -rf {} + >/dev/null 2>&1
157
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -name '*.egg-info' -exec rm -rf {} + >/dev/null 2>&1
158
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -type f -name '*.egg' -exec rm -f {} + >/dev/null 2>&1
159
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -name '*.pyc' -exec rm -f {} + >/dev/null 2>&1
160
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -name '*.pyo' -exec rm -f {} + >/dev/null 2>&1
161
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -name '*~' -exec rm -f {} + >/dev/null 2>&1
162
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -type d -name '__pycache__' -exec rm -rf {} + >/dev/null 2>&1
163
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -name '.ipynb_checkpoints' -exec rm -rf {} + >/dev/null 2>&1
164
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -name '*.so' -exec rm -f {} + >/dev/null 2>&1
165
+ @find . \( -path ./.venv -o -path ./.git \) -prune -o -name '*.c' -exec rm -f {} + >/dev/null 2>&1
111
166
  @echo "${OK} Working directory cleaned"
112
167
  $(MAKE) docs-clean
113
168
 
@@ -118,7 +173,7 @@ clean: ## Cleanup temporary build a
118
173
  .PHONY: test
119
174
  test: ## Run the tests
120
175
  @echo "${INFO} Running test cases... 🧪"
121
- @uv run pytest tests
176
+ @uv run pytest -n 2 --dist=loadgroup tests
122
177
  @echo "${OK} Tests complete ✨"
123
178
 
124
179
  .PHONY: test-all
@@ -128,7 +183,7 @@ test-all: tests ## Run all tests
128
183
  .PHONY: coverage
129
184
  coverage: ## Run tests with coverage report
130
185
  @echo "${INFO} Running tests with coverage... 📊"
131
- @uv run pytest --cov -n auto --quiet
186
+ @uv run pytest --cov -n 2 --dist=loadgroup --quiet
132
187
  @uv run coverage html >/dev/null 2>&1
133
188
  @uv run coverage xml >/dev/null 2>&1
134
189
  @echo "${OK} Coverage report generated ✨"
@@ -189,18 +244,18 @@ check-all: lint test-all coverage ## Run all checks (lint, test
189
244
  .PHONY: docs-clean
190
245
  docs-clean: ## Clean documentation build
191
246
  @echo "${INFO} Cleaning documentation build assets... 🧹"
192
- @rm -rf docs/_build >/dev/null 2>&1
247
+ @rm -rf docs/_build
193
248
  @echo "${OK} Documentation assets cleaned"
194
249
 
195
250
  .PHONY: docs-serve
196
251
  docs-serve: docs-clean ## Serve documentation locally
197
252
  @echo "${INFO} Starting documentation server... 📚"
198
- @uv run sphinx-autobuild docs docs/_build/ -j auto --watch sqlspec --watch docs --watch tests --watch CONTRIBUTING.rst --port 8002
253
+ @uv run sphinx-autobuild docs docs/_build/ -j 1 --watch sqlspec --watch docs --watch tests --watch CONTRIBUTING.rst --port 8002
199
254
 
200
255
  .PHONY: docs
201
256
  docs: docs-clean ## Build documentation
202
257
  @echo "${INFO} Building documentation... 📝"
203
- @uv run sphinx-build -M html docs docs/_build/ -E -a -j auto -W --keep-going >/dev/null 2>&1
258
+ @PYTHONWARNINGS="ignore::FutureWarning" uv run sphinx-build -M html docs docs/_build/ -E -a -j 1 -W --keep-going
204
259
  @echo "${OK} Documentation built successfully"
205
260
 
206
261
  .PHONY: docs-linkcheck
@@ -215,6 +270,49 @@ docs-linkcheck-full: ## Run full documentation lin
215
270
  @uv run sphinx-build -b linkcheck ./docs ./docs/_build -D linkcheck_anchors=0
216
271
  @echo "${OK} Full link check complete"
217
272
 
273
+ # =============================================================================
274
+ # Development Infrastructure
275
+ # =============================================================================
276
+
277
+ .PHONY: infra-up
278
+ infra-up: ## Start development infrastructure (databases, storage)
279
+ @echo "${INFO} Starting development infrastructure..."
280
+ @./tools/local-infra.sh up
281
+ @echo "${OK} Development infrastructure ready ✨"
282
+
283
+ .PHONY: infra-down
284
+ infra-down: ## Stop development infrastructure
285
+ @echo "${INFO} Stopping development infrastructure..."
286
+ @./tools/local-infra.sh down --quiet
287
+ @echo "${OK} Development infrastructure stopped"
288
+
289
+ .PHONY: infra-status
290
+ infra-status: ## Show development infrastructure status
291
+ @./tools/local-infra.sh status
292
+
293
+ .PHONY: infra-cleanup
294
+ infra-cleanup: ## Clean up development infrastructure
295
+ @echo "${WARN} This will remove all development containers and volumes"
296
+ @./tools/local-infra.sh cleanup
297
+
298
+ .PHONY: infra-postgres
299
+ infra-postgres: ## Start only PostgreSQL
300
+ @echo "${INFO} Starting PostgreSQL..."
301
+ @./tools/local-infra.sh up postgres --quiet
302
+ @echo "${OK} PostgreSQL ready on port 5433"
303
+
304
+ .PHONY: infra-oracle
305
+ infra-oracle: ## Start only Oracle
306
+ @echo "${INFO} Starting Oracle..."
307
+ @./tools/local-infra.sh up oracle --quiet
308
+ @echo "${OK} Oracle ready on port 1522"
309
+
310
+ .PHONY: infra-mysql
311
+ infra-mysql: ## Start only MySQL
312
+ @echo "${INFO} Starting MySQL..."
313
+ @./tools/local-infra.sh up mysql --quiet
314
+ @echo "${OK} MySQL ready on port 3307"
315
+
218
316
  # =============================================================================
219
317
  # End of Makefile
220
318
  # =============================================================================
@@ -0,0 +1,205 @@
1
+ Metadata-Version: 2.4
2
+ Name: sqlspec
3
+ Version: 0.38.0
4
+ Summary: SQL Experiments in Python
5
+ Project-URL: Discord, https://discord.gg/litestar
6
+ Project-URL: Issue, https://github.com/litestar-org/sqlspec/issues/
7
+ Project-URL: Source, https://github.com/litestar-org/sqlspec
8
+ Author-email: Cody Fincher <cody@litestar.dev>
9
+ Maintainer-email: Litestar Developers <hello@litestar.dev>
10
+ License-Expression: MIT
11
+ License-File: LICENSE
12
+ Requires-Python: <4.0,>=3.10
13
+ Requires-Dist: mypy-extensions
14
+ Requires-Dist: rich-click>=1.9.0
15
+ Requires-Dist: sqlglot>=19.9.0
16
+ Requires-Dist: tomli>=2.0.0; python_version < '3.11'
17
+ Requires-Dist: typing-extensions
18
+ Provides-Extra: adbc
19
+ Requires-Dist: adbc-driver-manager; extra == 'adbc'
20
+ Requires-Dist: pyarrow; extra == 'adbc'
21
+ Provides-Extra: adk
22
+ Requires-Dist: google-adk; extra == 'adk'
23
+ Provides-Extra: aioodbc
24
+ Requires-Dist: aioodbc; extra == 'aioodbc'
25
+ Provides-Extra: aiosqlite
26
+ Requires-Dist: aiosqlite; extra == 'aiosqlite'
27
+ Provides-Extra: alloydb
28
+ Requires-Dist: google-cloud-alloydb-connector; extra == 'alloydb'
29
+ Provides-Extra: asyncmy
30
+ Requires-Dist: asyncmy; extra == 'asyncmy'
31
+ Provides-Extra: asyncpg
32
+ Requires-Dist: asyncpg; extra == 'asyncpg'
33
+ Provides-Extra: attrs
34
+ Requires-Dist: attrs; extra == 'attrs'
35
+ Requires-Dist: cattrs; extra == 'attrs'
36
+ Provides-Extra: bigquery
37
+ Requires-Dist: google-cloud-bigquery; extra == 'bigquery'
38
+ Requires-Dist: google-cloud-storage; extra == 'bigquery'
39
+ Provides-Extra: cloud-sql
40
+ Requires-Dist: cloud-sql-python-connector; extra == 'cloud-sql'
41
+ Provides-Extra: cockroachdb
42
+ Requires-Dist: asyncpg; extra == 'cockroachdb'
43
+ Requires-Dist: psycopg[binary,pool]; extra == 'cockroachdb'
44
+ Provides-Extra: duckdb
45
+ Requires-Dist: duckdb; extra == 'duckdb'
46
+ Provides-Extra: fastapi
47
+ Requires-Dist: fastapi; extra == 'fastapi'
48
+ Provides-Extra: flask
49
+ Requires-Dist: flask; extra == 'flask'
50
+ Provides-Extra: fsspec
51
+ Requires-Dist: fsspec; extra == 'fsspec'
52
+ Provides-Extra: litestar
53
+ Requires-Dist: litestar; extra == 'litestar'
54
+ Provides-Extra: msgspec
55
+ Requires-Dist: msgspec; extra == 'msgspec'
56
+ Provides-Extra: mypyc
57
+ Provides-Extra: mysql-connector
58
+ Requires-Dist: mysql-connector-python; extra == 'mysql-connector'
59
+ Provides-Extra: nanoid
60
+ Requires-Dist: fastnanoid>=0.4.1; extra == 'nanoid'
61
+ Provides-Extra: obstore
62
+ Requires-Dist: obstore; extra == 'obstore'
63
+ Provides-Extra: opentelemetry
64
+ Requires-Dist: opentelemetry-instrumentation; extra == 'opentelemetry'
65
+ Provides-Extra: oracledb
66
+ Requires-Dist: oracledb; extra == 'oracledb'
67
+ Provides-Extra: orjson
68
+ Requires-Dist: orjson; extra == 'orjson'
69
+ Provides-Extra: pandas
70
+ Requires-Dist: pandas; extra == 'pandas'
71
+ Requires-Dist: pyarrow; extra == 'pandas'
72
+ Provides-Extra: performance
73
+ Requires-Dist: msgspec; extra == 'performance'
74
+ Requires-Dist: sqlglot[rs]; extra == 'performance'
75
+ Provides-Extra: polars
76
+ Requires-Dist: polars; extra == 'polars'
77
+ Requires-Dist: pyarrow; extra == 'polars'
78
+ Provides-Extra: prometheus
79
+ Requires-Dist: prometheus-client; extra == 'prometheus'
80
+ Provides-Extra: psqlpy
81
+ Requires-Dist: psqlpy; extra == 'psqlpy'
82
+ Provides-Extra: psycopg
83
+ Requires-Dist: psycopg[binary,pool]; extra == 'psycopg'
84
+ Provides-Extra: pydantic
85
+ Requires-Dist: pydantic; extra == 'pydantic'
86
+ Requires-Dist: pydantic-extra-types; extra == 'pydantic'
87
+ Provides-Extra: pymssql
88
+ Requires-Dist: pymssql; extra == 'pymssql'
89
+ Provides-Extra: pymysql
90
+ Requires-Dist: pymysql; extra == 'pymysql'
91
+ Provides-Extra: spanner
92
+ Requires-Dist: google-cloud-spanner; extra == 'spanner'
93
+ Provides-Extra: uuid
94
+ Requires-Dist: uuid-utils; extra == 'uuid'
95
+ Description-Content-Type: text/markdown
96
+
97
+ # SQLSpec
98
+
99
+ **Type-safe SQL execution layer for Python.**
100
+
101
+ SQLSpec handles database connectivity and result mapping so you can focus on SQL. Write raw queries when you need precision, use the builder API when you need composability, or load SQL from files when you need organization. Every statement passes through a [sqlglot](https://github.com/tobymao/sqlglot)-powered AST pipeline for validation, dialect conversion, and optimization before execution. Export results as Python objects, Arrow tables, Polars or pandas DataFrames.
102
+
103
+ It's not an ORM. It's the connectivity and processing layer between your application and your database that provides the right abstraction for each situation without dictating how you write SQL.
104
+
105
+ ## Status
106
+
107
+ SQLSpec is currently in active development. The public API may change. Follow the [docs](https://sqlspec.dev/) and changelog for updates.
108
+
109
+ ## What You Get
110
+
111
+ **Connection Management**
112
+
113
+ - Connection pooling with configurable size, timeout, and lifecycle hooks
114
+ - Sync and async support with a unified API surface
115
+ - Adapters for PostgreSQL (psycopg, asyncpg, psqlpy), SQLite (sqlite3, aiosqlite), DuckDB, MySQL (asyncmy, mysql-connector, pymysql), Oracle, BigQuery, and ADBC-compatible databases
116
+
117
+ **Query Execution**
118
+
119
+ - Raw SQL strings with automatic parameter binding and dialect translation
120
+ - SQL AST parsing via sqlglot for validation, optimization, and dialect conversion
121
+ - Builder API for programmatic query construction without string concatenation
122
+ - SQL file loading to keep queries organized alongside your code (named SQL queries)
123
+ - Statement stacks for batching multiple operations with transaction control
124
+
125
+ **Result Handling**
126
+
127
+ - Type-safe result mapping to Pydantic, msgspec, attrs, or dataclasses
128
+ - Apache Arrow export for zero-copy integration with pandas, Polars, and analytical tools
129
+ - Result iteration, single-row fetch, or bulk retrieval based on your use case
130
+
131
+ **Framework Integration**
132
+
133
+ - Litestar plugin with dependency injection for connections, sessions, and pools
134
+ - Starlette/FastAPI middleware for automatic transaction management
135
+ - Flask extension with sync/async portal support
136
+
137
+ **Production Features**
138
+
139
+ - SQL validation and caching via sqlglot AST parsing
140
+ - OpenTelemetry and Prometheus instrumentation hooks
141
+ - Database event channels with native LISTEN/NOTIFY, Oracle AQ, and a portable queue fallback
142
+ - Structured logging with correlation ID support
143
+ - Migration CLI for schema versioning
144
+
145
+ ## Quick Start
146
+
147
+ ### Install
148
+
149
+ ```bash
150
+ pip install "sqlspec"
151
+ ```
152
+
153
+ ### Run your first query
154
+
155
+ ```python
156
+ from pydantic import BaseModel
157
+ from sqlspec import SQLSpec
158
+ from sqlspec.adapters.sqlite import SqliteConfig
159
+
160
+ class Greeting(BaseModel):
161
+ message: str
162
+
163
+ spec = SQLSpec()
164
+ db = spec.add_config(SqliteConfig(connection_config={"database": ":memory:"}))
165
+
166
+ with spec.provide_session(db) as session:
167
+ greeting = session.select_one(
168
+ "SELECT 'Hello, SQLSpec!' AS message",
169
+ schema_type=Greeting,
170
+ )
171
+ print(greeting.message) # Output: Hello, SQLSpec!
172
+ ```
173
+
174
+ That's it. Write SQL, define a schema, get typed objects back. Connection pooling, parameter binding, and result mapping are handled automatically.
175
+
176
+ See the [Getting Started guide](https://sqlspec.dev/getting_started/) for installation variants, adapter selection, and advanced result mapping options.
177
+
178
+ ## Documentation
179
+
180
+ - [Getting Started](https://sqlspec.dev/getting_started/)
181
+ - [Usage Guides](https://sqlspec.dev/usage/)
182
+ - [Examples Gallery](https://sqlspec.dev/examples/)
183
+ - [API Reference](https://sqlspec.dev/reference/)
184
+ - [CLI Reference](https://sqlspec.dev/usage/cli.html)
185
+
186
+ ## Reference Applications
187
+
188
+ - **[PostgreSQL + Vertex AI Demo](https://github.com/cofin/postgres-vertexai-demo)** - Vector search with pgvector and real-time chat using Litestar and Google ADK. Shows connection pooling, migrations, type-safe result mapping, vector embeddings, and response caching.
189
+ - **[Oracle + Vertex AI Demo](https://github.com/cofin/oracledb-vertexai-demo)** - Oracle 23ai vector search with semantic similarity using HNSW indexes. Demonstrates NumPy array conversion, large object (CLOB) handling, and real-time performance metrics.
190
+
191
+ See the [usage docs](https://sqlspec.dev/usage/) for detailed guides on adapters, configuration patterns, and features like the [SQL file loader](https://sqlspec.dev/usage/loader.html).
192
+
193
+ ## Built With
194
+
195
+ - **[sqlglot](https://github.com/tobymao/sqlglot)** - SQL parser, transpiler, and optimizer powering SQLSpec's AST pipeline
196
+
197
+ ## Contributing
198
+
199
+ Contributions, issue reports, and adapter ideas are welcome. Review the
200
+ [contributor guide](https://sqlspec.dev/contributing/) and follow the project
201
+ coding standards before opening a pull request.
202
+
203
+ ## License
204
+
205
+ SQLSpec is distributed under the MIT License.
@@ -0,0 +1,109 @@
1
+ # SQLSpec
2
+
3
+ **Type-safe SQL execution layer for Python.**
4
+
5
+ SQLSpec handles database connectivity and result mapping so you can focus on SQL. Write raw queries when you need precision, use the builder API when you need composability, or load SQL from files when you need organization. Every statement passes through a [sqlglot](https://github.com/tobymao/sqlglot)-powered AST pipeline for validation, dialect conversion, and optimization before execution. Export results as Python objects, Arrow tables, Polars or pandas DataFrames.
6
+
7
+ It's not an ORM. It's the connectivity and processing layer between your application and your database that provides the right abstraction for each situation without dictating how you write SQL.
8
+
9
+ ## Status
10
+
11
+ SQLSpec is currently in active development. The public API may change. Follow the [docs](https://sqlspec.dev/) and changelog for updates.
12
+
13
+ ## What You Get
14
+
15
+ **Connection Management**
16
+
17
+ - Connection pooling with configurable size, timeout, and lifecycle hooks
18
+ - Sync and async support with a unified API surface
19
+ - Adapters for PostgreSQL (psycopg, asyncpg, psqlpy), SQLite (sqlite3, aiosqlite), DuckDB, MySQL (asyncmy, mysql-connector, pymysql), Oracle, BigQuery, and ADBC-compatible databases
20
+
21
+ **Query Execution**
22
+
23
+ - Raw SQL strings with automatic parameter binding and dialect translation
24
+ - SQL AST parsing via sqlglot for validation, optimization, and dialect conversion
25
+ - Builder API for programmatic query construction without string concatenation
26
+ - SQL file loading to keep queries organized alongside your code (named SQL queries)
27
+ - Statement stacks for batching multiple operations with transaction control
28
+
29
+ **Result Handling**
30
+
31
+ - Type-safe result mapping to Pydantic, msgspec, attrs, or dataclasses
32
+ - Apache Arrow export for zero-copy integration with pandas, Polars, and analytical tools
33
+ - Result iteration, single-row fetch, or bulk retrieval based on your use case
34
+
35
+ **Framework Integration**
36
+
37
+ - Litestar plugin with dependency injection for connections, sessions, and pools
38
+ - Starlette/FastAPI middleware for automatic transaction management
39
+ - Flask extension with sync/async portal support
40
+
41
+ **Production Features**
42
+
43
+ - SQL validation and caching via sqlglot AST parsing
44
+ - OpenTelemetry and Prometheus instrumentation hooks
45
+ - Database event channels with native LISTEN/NOTIFY, Oracle AQ, and a portable queue fallback
46
+ - Structured logging with correlation ID support
47
+ - Migration CLI for schema versioning
48
+
49
+ ## Quick Start
50
+
51
+ ### Install
52
+
53
+ ```bash
54
+ pip install "sqlspec"
55
+ ```
56
+
57
+ ### Run your first query
58
+
59
+ ```python
60
+ from pydantic import BaseModel
61
+ from sqlspec import SQLSpec
62
+ from sqlspec.adapters.sqlite import SqliteConfig
63
+
64
+ class Greeting(BaseModel):
65
+ message: str
66
+
67
+ spec = SQLSpec()
68
+ db = spec.add_config(SqliteConfig(connection_config={"database": ":memory:"}))
69
+
70
+ with spec.provide_session(db) as session:
71
+ greeting = session.select_one(
72
+ "SELECT 'Hello, SQLSpec!' AS message",
73
+ schema_type=Greeting,
74
+ )
75
+ print(greeting.message) # Output: Hello, SQLSpec!
76
+ ```
77
+
78
+ That's it. Write SQL, define a schema, get typed objects back. Connection pooling, parameter binding, and result mapping are handled automatically.
79
+
80
+ See the [Getting Started guide](https://sqlspec.dev/getting_started/) for installation variants, adapter selection, and advanced result mapping options.
81
+
82
+ ## Documentation
83
+
84
+ - [Getting Started](https://sqlspec.dev/getting_started/)
85
+ - [Usage Guides](https://sqlspec.dev/usage/)
86
+ - [Examples Gallery](https://sqlspec.dev/examples/)
87
+ - [API Reference](https://sqlspec.dev/reference/)
88
+ - [CLI Reference](https://sqlspec.dev/usage/cli.html)
89
+
90
+ ## Reference Applications
91
+
92
+ - **[PostgreSQL + Vertex AI Demo](https://github.com/cofin/postgres-vertexai-demo)** - Vector search with pgvector and real-time chat using Litestar and Google ADK. Shows connection pooling, migrations, type-safe result mapping, vector embeddings, and response caching.
93
+ - **[Oracle + Vertex AI Demo](https://github.com/cofin/oracledb-vertexai-demo)** - Oracle 23ai vector search with semantic similarity using HNSW indexes. Demonstrates NumPy array conversion, large object (CLOB) handling, and real-time performance metrics.
94
+
95
+ See the [usage docs](https://sqlspec.dev/usage/) for detailed guides on adapters, configuration patterns, and features like the [SQL file loader](https://sqlspec.dev/usage/loader.html).
96
+
97
+ ## Built With
98
+
99
+ - **[sqlglot](https://github.com/tobymao/sqlglot)** - SQL parser, transpiler, and optimizer powering SQLSpec's AST pipeline
100
+
101
+ ## Contributing
102
+
103
+ Contributions, issue reports, and adapter ideas are welcome. Review the
104
+ [contributor guide](https://sqlspec.dev/contributing/) and follow the project
105
+ coding standards before opening a pull request.
106
+
107
+ ## License
108
+
109
+ SQLSpec is distributed under the MIT License.