sqlspec 0.26.0__tar.gz → 0.28.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.

Potentially problematic release.


This version of sqlspec might be problematic. Click here for more details.

Files changed (625) hide show
  1. sqlspec-0.28.0/.claude/AGENTS.md +1 -0
  2. sqlspec-0.28.0/.claude/README.md +263 -0
  3. sqlspec-0.28.0/.claude/agents/docs-vision.md +822 -0
  4. sqlspec-0.28.0/.claude/agents/expert.md +560 -0
  5. sqlspec-0.28.0/.claude/agents/prd.md +300 -0
  6. sqlspec-0.28.0/.claude/agents/testing.md +465 -0
  7. sqlspec-0.28.0/.claude/commands/implement.md +35 -0
  8. sqlspec-0.28.0/.claude/commands/prd.md +26 -0
  9. sqlspec-0.28.0/.claude/commands/review.md +42 -0
  10. sqlspec-0.28.0/.claude/commands/test.md +25 -0
  11. {sqlspec-0.26.0 → sqlspec-0.28.0}/.gitignore +19 -18
  12. {sqlspec-0.26.0 → sqlspec-0.28.0}/.pre-commit-config.yaml +3 -3
  13. sqlspec-0.28.0/AGENTS.md +2702 -0
  14. sqlspec-0.28.0/CLAUDE.md +1 -0
  15. sqlspec-0.28.0/GEMINI.md +1 -0
  16. {sqlspec-0.26.0 → sqlspec-0.28.0}/Makefile +11 -11
  17. {sqlspec-0.26.0 → sqlspec-0.28.0}/PKG-INFO +41 -22
  18. {sqlspec-0.26.0 → sqlspec-0.28.0}/README.md +37 -18
  19. {sqlspec-0.26.0 → sqlspec-0.28.0}/pyproject.toml +34 -20
  20. sqlspec-0.28.0/specs/README.md +175 -0
  21. sqlspec-0.28.0/specs/template-spec/README.md +70 -0
  22. sqlspec-0.28.0/specs/template-spec/prd.md +158 -0
  23. sqlspec-0.28.0/specs/template-spec/recovery.md +144 -0
  24. sqlspec-0.28.0/specs/template-spec/tasks.md +73 -0
  25. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/__init__.py +7 -15
  26. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/_serialization.py +55 -25
  27. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/_typing.py +155 -52
  28. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/_types.py +1 -1
  29. sqlspec-0.28.0/sqlspec/adapters/adbc/adk/__init__.py +5 -0
  30. sqlspec-0.28.0/sqlspec/adapters/adbc/adk/store.py +880 -0
  31. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/config.py +62 -12
  32. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/data_dictionary.py +74 -2
  33. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/driver.py +226 -58
  34. sqlspec-0.28.0/sqlspec/adapters/adbc/litestar/__init__.py +5 -0
  35. sqlspec-0.28.0/sqlspec/adapters/adbc/litestar/store.py +504 -0
  36. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/type_converter.py +44 -50
  37. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/_types.py +1 -1
  38. sqlspec-0.28.0/sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
  39. sqlspec-0.28.0/sqlspec/adapters/aiosqlite/adk/store.py +536 -0
  40. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/config.py +86 -16
  41. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/data_dictionary.py +34 -2
  42. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/driver.py +127 -38
  43. sqlspec-0.28.0/sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
  44. sqlspec-0.28.0/sqlspec/adapters/aiosqlite/litestar/store.py +281 -0
  45. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/pool.py +7 -7
  46. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncmy/__init__.py +7 -1
  47. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncmy/_types.py +1 -1
  48. sqlspec-0.28.0/sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
  49. sqlspec-0.28.0/sqlspec/adapters/asyncmy/adk/store.py +503 -0
  50. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncmy/config.py +59 -17
  51. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncmy/data_dictionary.py +41 -2
  52. sqlspec-0.28.0/sqlspec/adapters/asyncmy/driver.py +565 -0
  53. sqlspec-0.28.0/sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
  54. sqlspec-0.28.0/sqlspec/adapters/asyncmy/litestar/store.py +296 -0
  55. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncpg/__init__.py +2 -1
  56. sqlspec-0.28.0/sqlspec/adapters/asyncpg/_type_handlers.py +71 -0
  57. sqlspec-0.28.0/sqlspec/adapters/asyncpg/_types.py +21 -0
  58. sqlspec-0.28.0/sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
  59. sqlspec-0.28.0/sqlspec/adapters/asyncpg/adk/store.py +460 -0
  60. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncpg/config.py +57 -36
  61. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncpg/data_dictionary.py +48 -2
  62. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncpg/driver.py +153 -23
  63. sqlspec-0.28.0/sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
  64. sqlspec-0.28.0/sqlspec/adapters/asyncpg/litestar/store.py +253 -0
  65. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/_types.py +1 -1
  66. sqlspec-0.28.0/sqlspec/adapters/bigquery/adk/__init__.py +5 -0
  67. sqlspec-0.28.0/sqlspec/adapters/bigquery/adk/store.py +585 -0
  68. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/config.py +36 -11
  69. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/data_dictionary.py +42 -2
  70. sqlspec-0.28.0/sqlspec/adapters/bigquery/driver.py +897 -0
  71. sqlspec-0.28.0/sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
  72. sqlspec-0.28.0/sqlspec/adapters/bigquery/litestar/store.py +327 -0
  73. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/type_converter.py +55 -23
  74. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/_types.py +2 -2
  75. sqlspec-0.28.0/sqlspec/adapters/duckdb/adk/__init__.py +14 -0
  76. sqlspec-0.28.0/sqlspec/adapters/duckdb/adk/store.py +563 -0
  77. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/config.py +79 -21
  78. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/data_dictionary.py +41 -2
  79. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/driver.py +225 -44
  80. sqlspec-0.28.0/sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
  81. sqlspec-0.28.0/sqlspec/adapters/duckdb/litestar/store.py +332 -0
  82. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/pool.py +5 -5
  83. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/type_converter.py +51 -21
  84. sqlspec-0.28.0/sqlspec/adapters/oracledb/_numpy_handlers.py +133 -0
  85. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/_types.py +20 -2
  86. sqlspec-0.28.0/sqlspec/adapters/oracledb/adk/__init__.py +5 -0
  87. sqlspec-0.28.0/sqlspec/adapters/oracledb/adk/store.py +1628 -0
  88. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/config.py +120 -36
  89. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/data_dictionary.py +87 -20
  90. sqlspec-0.28.0/sqlspec/adapters/oracledb/driver.py +976 -0
  91. sqlspec-0.28.0/sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
  92. sqlspec-0.28.0/sqlspec/adapters/oracledb/litestar/store.py +765 -0
  93. sqlspec-0.28.0/sqlspec/adapters/oracledb/migrations.py +532 -0
  94. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/type_converter.py +91 -16
  95. sqlspec-0.28.0/sqlspec/adapters/psqlpy/_type_handlers.py +44 -0
  96. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/_types.py +2 -1
  97. sqlspec-0.28.0/sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
  98. sqlspec-0.28.0/sqlspec/adapters/psqlpy/adk/store.py +483 -0
  99. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/config.py +45 -19
  100. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/data_dictionary.py +48 -2
  101. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/driver.py +108 -41
  102. sqlspec-0.28.0/sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
  103. sqlspec-0.28.0/sqlspec/adapters/psqlpy/litestar/store.py +272 -0
  104. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/type_converter.py +40 -11
  105. sqlspec-0.28.0/sqlspec/adapters/psycopg/_type_handlers.py +80 -0
  106. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/_types.py +2 -1
  107. sqlspec-0.28.0/sqlspec/adapters/psycopg/adk/__init__.py +5 -0
  108. sqlspec-0.28.0/sqlspec/adapters/psycopg/adk/store.py +962 -0
  109. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/config.py +65 -37
  110. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/data_dictionary.py +91 -3
  111. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/driver.py +200 -78
  112. sqlspec-0.28.0/sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
  113. sqlspec-0.28.0/sqlspec/adapters/psycopg/litestar/store.py +554 -0
  114. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/__init__.py +2 -1
  115. sqlspec-0.28.0/sqlspec/adapters/sqlite/_type_handlers.py +86 -0
  116. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/_types.py +1 -1
  117. sqlspec-0.28.0/sqlspec/adapters/sqlite/adk/__init__.py +5 -0
  118. sqlspec-0.28.0/sqlspec/adapters/sqlite/adk/store.py +582 -0
  119. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/config.py +85 -16
  120. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/data_dictionary.py +34 -2
  121. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/driver.py +120 -52
  122. sqlspec-0.28.0/sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
  123. sqlspec-0.28.0/sqlspec/adapters/sqlite/litestar/store.py +318 -0
  124. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/pool.py +5 -5
  125. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/base.py +45 -26
  126. sqlspec-0.28.0/sqlspec/builder/__init__.py +137 -0
  127. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_base.py +91 -58
  128. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_column.py +5 -5
  129. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_ddl.py +98 -89
  130. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_delete.py +5 -4
  131. sqlspec-0.28.0/sqlspec/builder/_dml.py +388 -0
  132. sqlspec-0.26.0/sqlspec/_sql.py → sqlspec-0.28.0/sqlspec/builder/_factory.py +41 -44
  133. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_insert.py +5 -82
  134. sqlspec-0.26.0/sqlspec/builder/mixins/_join_operations.py → sqlspec-0.28.0/sqlspec/builder/_join.py +145 -143
  135. sqlspec-0.28.0/sqlspec/builder/_merge.py +506 -0
  136. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_parsing_utils.py +9 -11
  137. sqlspec-0.28.0/sqlspec/builder/_select.py +1604 -0
  138. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_update.py +11 -42
  139. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/cli.py +76 -69
  140. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/config.py +331 -62
  141. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/__init__.py +5 -4
  142. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/cache.py +18 -18
  143. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/compiler.py +6 -8
  144. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/filters.py +55 -47
  145. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/hashing.py +9 -9
  146. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/parameters.py +76 -45
  147. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/result.py +234 -47
  148. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/splitter.py +16 -17
  149. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/statement.py +32 -31
  150. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/type_conversion.py +3 -2
  151. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/__init__.py +1 -3
  152. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/_async.py +183 -160
  153. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/_common.py +197 -109
  154. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/_sync.py +189 -161
  155. sqlspec-0.28.0/sqlspec/driver/mixins/_result_tools.py +61 -0
  156. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/mixins/_sql_translator.py +4 -4
  157. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/exceptions.py +70 -7
  158. sqlspec-0.28.0/sqlspec/extensions/adk/__init__.py +53 -0
  159. sqlspec-0.28.0/sqlspec/extensions/adk/_types.py +51 -0
  160. sqlspec-0.28.0/sqlspec/extensions/adk/converters.py +172 -0
  161. sqlspec-0.28.0/sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +144 -0
  162. sqlspec-0.28.0/sqlspec/extensions/adk/service.py +181 -0
  163. sqlspec-0.28.0/sqlspec/extensions/adk/store.py +536 -0
  164. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/aiosql/adapter.py +69 -61
  165. sqlspec-0.28.0/sqlspec/extensions/fastapi/__init__.py +21 -0
  166. sqlspec-0.28.0/sqlspec/extensions/fastapi/extension.py +331 -0
  167. sqlspec-0.28.0/sqlspec/extensions/fastapi/providers.py +543 -0
  168. sqlspec-0.28.0/sqlspec/extensions/flask/__init__.py +36 -0
  169. sqlspec-0.28.0/sqlspec/extensions/flask/_state.py +71 -0
  170. sqlspec-0.28.0/sqlspec/extensions/flask/_utils.py +40 -0
  171. sqlspec-0.28.0/sqlspec/extensions/flask/extension.py +389 -0
  172. sqlspec-0.28.0/sqlspec/extensions/litestar/__init__.py +23 -0
  173. sqlspec-0.28.0/sqlspec/extensions/litestar/cli.py +92 -0
  174. sqlspec-0.28.0/sqlspec/extensions/litestar/config.py +66 -0
  175. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/litestar/handlers.py +46 -17
  176. sqlspec-0.28.0/sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
  177. sqlspec-0.28.0/sqlspec/extensions/litestar/migrations/__init__.py +3 -0
  178. sqlspec-0.28.0/sqlspec/extensions/litestar/plugin.py +511 -0
  179. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/litestar/providers.py +25 -25
  180. sqlspec-0.28.0/sqlspec/extensions/litestar/store.py +265 -0
  181. sqlspec-0.28.0/sqlspec/extensions/starlette/__init__.py +10 -0
  182. sqlspec-0.28.0/sqlspec/extensions/starlette/_state.py +25 -0
  183. sqlspec-0.28.0/sqlspec/extensions/starlette/_utils.py +52 -0
  184. sqlspec-0.28.0/sqlspec/extensions/starlette/extension.py +254 -0
  185. sqlspec-0.28.0/sqlspec/extensions/starlette/middleware.py +154 -0
  186. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/loader.py +30 -49
  187. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/base.py +200 -76
  188. sqlspec-0.28.0/sqlspec/migrations/commands.py +929 -0
  189. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/context.py +6 -9
  190. sqlspec-0.28.0/sqlspec/migrations/fix.py +199 -0
  191. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/loaders.py +47 -19
  192. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/runner.py +241 -75
  193. sqlspec-0.28.0/sqlspec/migrations/tracker.py +403 -0
  194. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/utils.py +51 -3
  195. sqlspec-0.28.0/sqlspec/migrations/validation.py +177 -0
  196. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/protocols.py +106 -36
  197. sqlspec-0.28.0/sqlspec/py.typed +0 -0
  198. sqlspec-0.28.0/sqlspec/storage/_utils.py +85 -0
  199. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/backends/fsspec.py +133 -107
  200. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/backends/local.py +78 -51
  201. sqlspec-0.28.0/sqlspec/storage/backends/obstore.py +582 -0
  202. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/registry.py +75 -39
  203. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/typing.py +30 -84
  204. sqlspec-0.28.0/sqlspec/utils/__init__.py +31 -0
  205. sqlspec-0.28.0/sqlspec/utils/arrow_helpers.py +81 -0
  206. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/config_resolver.py +6 -6
  207. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/correlation.py +4 -5
  208. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/data_transformation.py +3 -2
  209. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/deprecation.py +9 -8
  210. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/fixtures.py +4 -4
  211. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/logging.py +46 -6
  212. sqlspec-0.28.0/sqlspec/utils/module_loader.py +293 -0
  213. sqlspec-0.28.0/sqlspec/utils/portal.py +311 -0
  214. sqlspec-0.28.0/sqlspec/utils/schema.py +288 -0
  215. sqlspec-0.28.0/sqlspec/utils/serializers.py +167 -0
  216. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/sync_tools.py +36 -22
  217. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/text.py +1 -2
  218. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/type_guards.py +136 -20
  219. sqlspec-0.28.0/sqlspec/utils/version.py +433 -0
  220. sqlspec-0.28.0/tests/__init__.py +0 -0
  221. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/conftest.py +5 -0
  222. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/example_usage.py +3 -5
  223. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/sql_utils.py +7 -7
  224. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/conftest.py +0 -10
  225. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/conftest.py +2 -2
  226. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_arrow.py +219 -0
  227. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_exceptions.py +118 -0
  228. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/__init__.py +1 -0
  229. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/__init__.py +1 -0
  230. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_dialect_integration.py +229 -0
  231. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_dialect_support.py +198 -0
  232. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_edge_cases.py +269 -0
  233. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_event_operations.py +320 -0
  234. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_owner_id_column.py +145 -0
  235. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_session_operations.py +184 -0
  236. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/__init__.py +1 -0
  237. sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/test_store.py +262 -0
  238. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_migrations.py +16 -8
  239. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/conftest.py +4 -8
  240. sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_arrow.py +235 -0
  241. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_connection.py +19 -28
  242. sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_exceptions.py +124 -0
  243. sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/__init__.py +1 -0
  244. sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/__init__.py +1 -0
  245. sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_numpy_serialization.py +254 -0
  246. sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_store.py +234 -0
  247. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_migrations.py +9 -2
  248. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_arrow.py +246 -0
  249. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_asyncmy_features.py +0 -7
  250. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_config.py +82 -2
  251. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_driver.py +53 -17
  252. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_exceptions.py +137 -0
  253. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/__init__.py +1 -0
  254. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/__init__.py +1 -0
  255. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/conftest.py +104 -0
  256. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/test_store.py +332 -0
  257. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_litestar/__init__.py +1 -0
  258. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_litestar/test_store.py +252 -0
  259. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_migrations.py +3 -7
  260. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_parameter_styles.py +4 -23
  261. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_arrow.py +234 -0
  262. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_exceptions.py +130 -0
  263. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_execute_many.py +0 -10
  264. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/__init__.py +1 -0
  265. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/__init__.py +1 -0
  266. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/conftest.py +68 -0
  267. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_owner_id_column.py +411 -0
  268. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_session_operations.py +134 -0
  269. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/__init__.py +1 -0
  270. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/test_store.py +246 -0
  271. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_migrations.py +6 -6
  272. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_parameter_styles.py +0 -17
  273. sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_schema_migration.py +321 -0
  274. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/conftest.py +3 -5
  275. sqlspec-0.28.0/tests/integration/test_adapters/test_bigquery/test_arrow.py +266 -0
  276. sqlspec-0.28.0/tests/integration/test_adapters/test_bigquery/test_exceptions.py +96 -0
  277. sqlspec-0.28.0/tests/integration/test_adapters/test_bigquery/test_type_handler_config.py +0 -0
  278. sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_arrow.py +193 -0
  279. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_connection.py +14 -11
  280. sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_driver_features.py +151 -0
  281. sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_exceptions.py +128 -0
  282. sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/__init__.py +1 -0
  283. sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/test_adk/__init__.py +0 -0
  284. sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/test_adk/test_store.py +692 -0
  285. sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/test_litestar/__init__.py +1 -0
  286. sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/test_litestar/test_store.py +272 -0
  287. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_migrations.py +12 -8
  288. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/utils.py +1 -2
  289. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_arrow.py +267 -0
  290. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_driver_async.py +84 -12
  291. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_driver_sync.py +84 -12
  292. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_exceptions.py +142 -0
  293. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_execute_many.py +27 -29
  294. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/__init__.py +0 -0
  295. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/__init__.py +1 -0
  296. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/test_inmemory.py +412 -0
  297. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/test_oracle_specific.py +530 -0
  298. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/__init__.py +0 -0
  299. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_inmemory.py +280 -0
  300. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_store_async.py +248 -0
  301. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_store_sync.py +248 -0
  302. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_migrations.py +164 -24
  303. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_msgspec_clob.py +525 -0
  304. sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_numpy_vectors.py +376 -0
  305. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_oracle_features.py +29 -26
  306. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_parameter_styles.py +104 -88
  307. sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_arrow.py +229 -0
  308. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_connection.py +0 -7
  309. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_driver.py +0 -1
  310. sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_exceptions.py +131 -0
  311. sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/__init__.py +1 -0
  312. sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/__init__.py +1 -0
  313. sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/test_owner_id_column.py +147 -0
  314. sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/__init__.py +1 -0
  315. sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/test_store.py +246 -0
  316. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_migrations.py +13 -13
  317. sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_arrow.py +236 -0
  318. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_async_copy.py +0 -4
  319. sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_exceptions.py +161 -0
  320. sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/__init__.py +0 -0
  321. sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_adk/__init__.py +0 -0
  322. sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_adk/test_owner_id_column.py +180 -0
  323. sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/__init__.py +0 -0
  324. sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_async.py +249 -0
  325. sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_sync.py +267 -0
  326. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_migrations.py +19 -20
  327. sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_arrow.py +223 -0
  328. sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_driver_features.py +111 -0
  329. sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_exceptions.py +120 -0
  330. sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/__init__.py +1 -0
  331. sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_adk/__init__.py +1 -0
  332. sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_adk/test_owner_id_column.py +386 -0
  333. sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/__init__.py +1 -0
  334. sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/test_store.py +253 -0
  335. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_migrations.py +16 -8
  336. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_pooling.py +6 -3
  337. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_query_mixin.py +2 -2
  338. sqlspec-0.28.0/tests/integration/test_extensions/__init__.py +1 -0
  339. sqlspec-0.28.0/tests/integration/test_extensions/test_fastapi_filters_integration.py +390 -0
  340. sqlspec-0.28.0/tests/integration/test_extensions/test_fastapi_integration.py +281 -0
  341. sqlspec-0.28.0/tests/integration/test_extensions/test_flask_integration.py +315 -0
  342. sqlspec-0.28.0/tests/integration/test_extensions/test_starlette_integration.py +222 -0
  343. sqlspec-0.28.0/tests/integration/test_migrations/test_auto_sync.py +333 -0
  344. sqlspec-0.28.0/tests/integration/test_migrations/test_fix_checksum_stability.py +203 -0
  345. sqlspec-0.28.0/tests/integration/test_migrations/test_fix_file_operations.py +376 -0
  346. sqlspec-0.28.0/tests/integration/test_migrations/test_fix_idempotency_workflow.py +353 -0
  347. sqlspec-0.28.0/tests/integration/test_migrations/test_schema_migration.py +311 -0
  348. sqlspec-0.28.0/tests/integration/test_migrations/test_upgrade_downgrade_versions.py +409 -0
  349. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_storage/test_storage_integration.py +19 -11
  350. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/conftest.py +22 -21
  351. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/conftest.py +12 -12
  352. sqlspec-0.28.0/tests/unit/test_adapters/test_adbc/test_adbc_serialization.py +120 -0
  353. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/test_async_adapters.py +12 -51
  354. sqlspec-0.28.0/tests/unit/test_adapters/test_asyncmy/__init__.py +0 -0
  355. sqlspec-0.28.0/tests/unit/test_adapters/test_asyncpg/__init__.py +1 -0
  356. sqlspec-0.28.0/tests/unit/test_adapters/test_asyncpg/test_config.py +0 -0
  357. sqlspec-0.28.0/tests/unit/test_adapters/test_asyncpg/test_type_handlers.py +66 -0
  358. sqlspec-0.28.0/tests/unit/test_adapters/test_bigquery/__init__.py +1 -0
  359. sqlspec-0.28.0/tests/unit/test_adapters/test_duckdb/__init__.py +1 -0
  360. sqlspec-0.28.0/tests/unit/test_adapters/test_duckdb/test_type_converter.py +82 -0
  361. sqlspec-0.28.0/tests/unit/test_adapters/test_extension_config.py +194 -0
  362. sqlspec-0.28.0/tests/unit/test_adapters/test_oracledb/test_numpy_handlers.py +228 -0
  363. sqlspec-0.28.0/tests/unit/test_adapters/test_oracledb/test_type_converter_vectors.py +192 -0
  364. sqlspec-0.28.0/tests/unit/test_adapters/test_psycopg/test_type_handlers.py +83 -0
  365. sqlspec-0.28.0/tests/unit/test_adapters/test_sqlite/__init__.py +0 -0
  366. sqlspec-0.28.0/tests/unit/test_adapters/test_sqlite/test_type_handlers.py +44 -0
  367. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/test_sync_adapters.py +12 -12
  368. sqlspec-0.28.0/tests/unit/test_arrow_helpers.py +156 -0
  369. sqlspec-0.28.0/tests/unit/test_arrow_result.py +150 -0
  370. sqlspec-0.28.0/tests/unit/test_cli/__init__.py +0 -0
  371. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_cli/test_config_loading.py +33 -0
  372. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_cli/test_migration_commands.py +43 -7
  373. sqlspec-0.28.0/tests/unit/test_cli/test_shell_completion.py +72 -0
  374. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_parameters.py +3 -3
  375. sqlspec-0.28.0/tests/unit/test_core/test_result.py +298 -0
  376. sqlspec-0.28.0/tests/unit/test_driver/__init__.py +0 -0
  377. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_driver/test_result_tools.py +66 -6
  378. sqlspec-0.28.0/tests/unit/test_exceptions.py +44 -0
  379. sqlspec-0.28.0/tests/unit/test_extensions/test_fastapi/__init__.py +1 -0
  380. sqlspec-0.28.0/tests/unit/test_extensions/test_fastapi/test_extension.py +95 -0
  381. sqlspec-0.28.0/tests/unit/test_extensions/test_fastapi/test_providers.py +338 -0
  382. sqlspec-0.28.0/tests/unit/test_extensions/test_flask/__init__.py +1 -0
  383. sqlspec-0.28.0/tests/unit/test_extensions/test_flask/test_extension.py +98 -0
  384. sqlspec-0.28.0/tests/unit/test_extensions/test_flask/test_state.py +161 -0
  385. sqlspec-0.28.0/tests/unit/test_extensions/test_litestar/test_handlers.py +277 -0
  386. sqlspec-0.28.0/tests/unit/test_extensions/test_starlette/__init__.py +1 -0
  387. sqlspec-0.28.0/tests/unit/test_extensions/test_starlette/test_config_state.py +65 -0
  388. sqlspec-0.28.0/tests/unit/test_extensions/test_starlette/test_extension.py +69 -0
  389. sqlspec-0.28.0/tests/unit/test_extensions/test_starlette/test_utils.py +143 -0
  390. sqlspec-0.28.0/tests/unit/test_migrations/test_checksum_canonicalization.py +345 -0
  391. sqlspec-0.28.0/tests/unit/test_migrations/test_fix_regex_precision.py +368 -0
  392. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration_commands.py +98 -2
  393. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration_execution.py +8 -2
  394. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration_runner.py +276 -0
  395. sqlspec-0.28.0/tests/unit/test_migrations/test_tracker_idempotency.py +317 -0
  396. sqlspec-0.28.0/tests/unit/test_migrations/test_utils.py +274 -0
  397. sqlspec-0.28.0/tests/unit/test_migrations/test_validation.py +206 -0
  398. sqlspec-0.28.0/tests/unit/test_migrations/test_version.py +225 -0
  399. sqlspec-0.28.0/tests/unit/test_migrations/test_version_conversion.py +303 -0
  400. sqlspec-0.28.0/tests/unit/test_migrations/test_version_parsing_edge_cases.py +236 -0
  401. sqlspec-0.28.0/tests/unit/test_serialization.py +615 -0
  402. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_sql_factory.py +8 -7
  403. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/test_fsspec_backend.py +9 -4
  404. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/test_local_store.py +9 -4
  405. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/test_obstore_backend.py +9 -4
  406. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/test_storage_registry.py +61 -21
  407. sqlspec-0.28.0/tests/unit/test_storage/test_storage_utils.py +75 -0
  408. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_correlation.py +0 -1
  409. sqlspec-0.28.0/tests/unit/test_utils/test_dependencies.py +58 -0
  410. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_fixtures.py +0 -9
  411. sqlspec-0.28.0/tests/unit/test_utils/test_portal.py +300 -0
  412. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_serializers.py +201 -1
  413. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_sync_tools.py +82 -19
  414. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_type_guards.py +93 -14
  415. sqlspec-0.28.0/tools/__init__.py +0 -0
  416. sqlspec-0.28.0/tools/build_docs.py +35 -0
  417. sqlspec-0.28.0/tools/fix_documentation.py +227 -0
  418. {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/sphinx_ext/changelog.py +2 -2
  419. {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/sphinx_ext/missing_references.py +12 -63
  420. sqlspec-0.28.0/uv.lock +6999 -0
  421. sqlspec-0.26.0/NOTICE +0 -29
  422. sqlspec-0.26.0/sqlspec/adapters/asyncmy/driver.py +0 -334
  423. sqlspec-0.26.0/sqlspec/adapters/asyncpg/_types.py +0 -17
  424. sqlspec-0.26.0/sqlspec/adapters/bigquery/driver.py +0 -552
  425. sqlspec-0.26.0/sqlspec/adapters/oracledb/driver.py +0 -587
  426. sqlspec-0.26.0/sqlspec/adapters/oracledb/migrations.py +0 -241
  427. sqlspec-0.26.0/sqlspec/builder/__init__.py +0 -68
  428. sqlspec-0.26.0/sqlspec/builder/_merge.py +0 -71
  429. sqlspec-0.26.0/sqlspec/builder/_select.py +0 -316
  430. sqlspec-0.26.0/sqlspec/builder/mixins/__init__.py +0 -55
  431. sqlspec-0.26.0/sqlspec/builder/mixins/_cte_and_set_ops.py +0 -253
  432. sqlspec-0.26.0/sqlspec/builder/mixins/_delete_operations.py +0 -50
  433. sqlspec-0.26.0/sqlspec/builder/mixins/_insert_operations.py +0 -282
  434. sqlspec-0.26.0/sqlspec/builder/mixins/_merge_operations.py +0 -698
  435. sqlspec-0.26.0/sqlspec/builder/mixins/_order_limit_operations.py +0 -145
  436. sqlspec-0.26.0/sqlspec/builder/mixins/_pivot_operations.py +0 -157
  437. sqlspec-0.26.0/sqlspec/builder/mixins/_select_operations.py +0 -930
  438. sqlspec-0.26.0/sqlspec/builder/mixins/_update_operations.py +0 -199
  439. sqlspec-0.26.0/sqlspec/builder/mixins/_where_clause.py +0 -1298
  440. sqlspec-0.26.0/sqlspec/driver/mixins/_result_tools.py +0 -277
  441. sqlspec-0.26.0/sqlspec/extensions/litestar/__init__.py +0 -6
  442. sqlspec-0.26.0/sqlspec/extensions/litestar/cli.py +0 -48
  443. sqlspec-0.26.0/sqlspec/extensions/litestar/config.py +0 -276
  444. sqlspec-0.26.0/sqlspec/extensions/litestar/plugin.py +0 -386
  445. sqlspec-0.26.0/sqlspec/migrations/commands.py +0 -400
  446. sqlspec-0.26.0/sqlspec/migrations/tracker.py +0 -187
  447. sqlspec-0.26.0/sqlspec/storage/backends/obstore.py +0 -474
  448. sqlspec-0.26.0/sqlspec/utils/__init__.py +0 -10
  449. sqlspec-0.26.0/sqlspec/utils/module_loader.py +0 -93
  450. sqlspec-0.26.0/sqlspec/utils/serializers.py +0 -58
  451. sqlspec-0.26.0/tests/unit/test_cli/__init__.py +0 -1
  452. sqlspec-0.26.0/tests/unit/test_core/test_result.py +0 -140
  453. sqlspec-0.26.0/tests/unit/test_extensions/test_litestar/test_config.py +0 -482
  454. sqlspec-0.26.0/tests/unit/test_serialization.py +0 -254
  455. sqlspec-0.26.0/tools/build_docs.py +0 -93
  456. sqlspec-0.26.0/uv.lock +0 -6325
  457. {sqlspec-0.26.0 → sqlspec-0.28.0}/CONTRIBUTING.rst +0 -0
  458. {sqlspec-0.26.0 → sqlspec-0.28.0}/LICENSE +0 -0
  459. /sqlspec-0.26.0/sqlspec/adapters/__init__.py → /sqlspec-0.28.0/specs/active/.gitkeep +0 -0
  460. /sqlspec-0.26.0/sqlspec/extensions/__init__.py → /sqlspec-0.28.0/specs/archive/.gitkeep +0 -0
  461. /sqlspec-0.26.0/sqlspec/py.typed → /sqlspec-0.28.0/specs/template-spec/research/.gitkeep +0 -0
  462. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/__main__.py +0 -0
  463. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/__metadata__.py +0 -0
  464. {sqlspec-0.26.0/tests → sqlspec-0.28.0/sqlspec/adapters}/__init__.py +0 -0
  465. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/__init__.py +0 -0
  466. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/__init__.py +0 -0
  467. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/__init__.py +0 -0
  468. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/__init__.py +0 -0
  469. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/__init__.py +0 -0
  470. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/__init__.py +0 -0
  471. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/__init__.py +0 -0
  472. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_expression_wrappers.py +0 -0
  473. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/mixins/__init__.py +0 -0
  474. {sqlspec-0.26.0/tests/unit/test_driver → sqlspec-0.28.0/sqlspec/extensions}/__init__.py +0 -0
  475. {sqlspec-0.26.0/tools → sqlspec-0.28.0/sqlspec/extensions/adk/migrations}/__init__.py +0 -0
  476. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/aiosql/__init__.py +0 -0
  477. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/litestar/_utils.py +0 -0
  478. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/__init__.py +0 -0
  479. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/__init__.py +0 -0
  480. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/backends/__init__.py +0 -0
  481. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/backends/base.py +0 -0
  482. {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/singleton.py +0 -0
  483. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/__init__.py +0 -0
  484. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/asset_maintenance.sql +0 -0
  485. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/ddls-mysql-collection.sql +0 -0
  486. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/ddls-postgres-collection.sql +0 -0
  487. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/init.sql +0 -0
  488. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-config.sql +0 -0
  489. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-data_types.sql +0 -0
  490. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-database_details.sql +0 -0
  491. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-engines.sql +0 -0
  492. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-hostname.sql +0 -0
  493. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-plugins.sql +0 -0
  494. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-process_list.sql +0 -0
  495. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-resource-groups.sql +0 -0
  496. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-schema_objects.sql +0 -0
  497. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-table_details.sql +0 -0
  498. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-users.sql +0 -0
  499. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/init.sql +0 -0
  500. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/oracle.ddl.sql +0 -0
  501. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-applications.sql +0 -0
  502. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-aws_extension_dependency.sql +0 -0
  503. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-aws_oracle_exists.sql +0 -0
  504. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-bg_writer_stats.sql +0 -0
  505. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-calculated_metrics.sql +0 -0
  506. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-data_types.sql +0 -0
  507. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-database_details.sql +0 -0
  508. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-extensions.sql +0 -0
  509. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-index_details.sql +0 -0
  510. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-pglogical-details.sql +0 -0
  511. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-privileges.sql +0 -0
  512. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-replication_slots.sql +0 -0
  513. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-replication_stats.sql +0 -0
  514. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-schema_details.sql +0 -0
  515. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-schema_objects.sql +0 -0
  516. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-settings.sql +0 -0
  517. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-source_details.sql +0 -0
  518. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-table_details.sql +0 -0
  519. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/extended-collection-all-databases.sql +0 -0
  520. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/init.sql +0 -0
  521. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/readiness-check.sql +0 -0
  522. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/__init__.py +0 -0
  523. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/__init__.py +0 -0
  524. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/__init__.py +0 -0
  525. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_arrow_features.py +0 -0
  526. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_backends.py +0 -0
  527. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_connection.py +0 -0
  528. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_driver.py +0 -0
  529. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_edge_cases.py +0 -0
  530. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_results.py +0 -0
  531. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_data_dictionary.py +0 -0
  532. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_parameter_styles.py +0 -0
  533. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/__init__.py +0 -0
  534. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_driver.py +0 -0
  535. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_parameter_styles.py +0 -0
  536. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_pooling.py +0 -0
  537. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/__init__.py +0 -0
  538. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/conftest.py +0 -0
  539. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/__init__.py +0 -0
  540. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/conftest.py +0 -0
  541. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_connection.py +0 -0
  542. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_data_dictionary.py +0 -0
  543. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_driver.py +0 -0
  544. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/__init__.py +0 -0
  545. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/test_bigquery_features.py +0 -0
  546. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/test_config.py +0 -0
  547. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/test_connection.py +0 -0
  548. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/test_driver.py +0 -0
  549. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/__init__.py +0 -0
  550. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_driver.py +0 -0
  551. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_execute_many.py +0 -0
  552. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_mixed_parameter_styles.py +0 -0
  553. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_parameter_styles.py +0 -0
  554. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_pooling.py +0 -0
  555. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/__init__.py +0 -0
  556. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/conftest.py +0 -0
  557. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_connection.py +0 -0
  558. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/__init__.py +0 -0
  559. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/conftest.py +0 -0
  560. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_parameter_styles.py +0 -0
  561. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_psqlpy_features.py +0 -0
  562. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/__init__.py +0 -0
  563. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/conftest.py +0 -0
  564. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_connection.py +0 -0
  565. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_driver.py +0 -0
  566. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_execute_many.py +0 -0
  567. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_parameter_styles.py +0 -0
  568. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/__init__.py +0 -0
  569. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/conftest.py +0 -0
  570. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_data_dictionary.py +0 -0
  571. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_driver.py +0 -0
  572. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_parameter_styles.py +0 -0
  573. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_async_migrations.py +0 -0
  574. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_dishka/__init__.py +0 -0
  575. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_dishka/conftest.py +0 -0
  576. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_dishka/test_dishka_integration.py +0 -0
  577. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_loader/__init__.py +0 -0
  578. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_loader/test_file_system_loading.py +0 -0
  579. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_migrations/__init__.py +0 -0
  580. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_storage/__init__.py +0 -0
  581. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/__init__.py +0 -0
  582. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/test_adapter_implementations.py +0 -0
  583. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_base/__init__.py +0 -0
  584. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_base/test_sql_integration.py +0 -0
  585. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_base/test_sqlspec_class.py +0 -0
  586. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/__init__.py +0 -0
  587. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/test_insert_builder.py +0 -0
  588. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/test_lateral_joins.py +0 -0
  589. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/test_parameter_naming.py +0 -0
  590. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/test_select_locking.py +0 -0
  591. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder_parameter_naming.py +0 -0
  592. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_config_resolver.py +0 -0
  593. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_cache.py +0 -0
  594. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_compiler.py +0 -0
  595. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_filters.py +0 -0
  596. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_hashing.py +0 -0
  597. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_statement.py +0 -0
  598. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_cte_parameter_collisions.py +0 -0
  599. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_driver/test_data_dictionary.py +0 -0
  600. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_extensions/__init__.py +0 -0
  601. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_extensions/test_litestar/__init__.py +0 -0
  602. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/__init__.py +0 -0
  603. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/test_cache_integration.py +0 -0
  604. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/test_fixtures_directory_loading.py +0 -0
  605. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/test_loading_patterns.py +0 -0
  606. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/test_sql_file_loader.py +0 -0
  607. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migration_context.py +0 -0
  608. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/__init__.py +0 -0
  609. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_extension_discovery.py +0 -0
  610. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration.py +0 -0
  611. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration_context.py +0 -0
  612. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_parsing_utils.py +0 -0
  613. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/__init__.py +0 -0
  614. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_type_conversion.py +0 -0
  615. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/__init__.py +0 -0
  616. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_data_transformation.py +0 -0
  617. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_deprecation.py +0 -0
  618. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_logging.py +0 -0
  619. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_module_loader.py +0 -0
  620. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_singleton.py +0 -0
  621. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_text.py +0 -0
  622. {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_where_or_operations.py +0 -0
  623. {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/local-infra.sh +0 -0
  624. {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/pypi_readme.py +0 -0
  625. {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/sphinx_ext/__init__.py +0 -0
@@ -0,0 +1 @@
1
+ ../AGENTS.md
@@ -0,0 +1,263 @@
1
+ # SQLSpec Agent System
2
+
3
+ Enhanced agent system for AI-assisted SQLSpec development, compatible with Claude, Gemini, Codex, and other AI coding assistants.
4
+
5
+ **Last updated:** 2025-10-09 (Enhancement)
6
+
7
+ ## Quick Start
8
+
9
+ ```bash
10
+ # 1. Create PRD for a feature
11
+ /prd implement vector search for Oracle
12
+
13
+ # 2. Implement it
14
+ /implement
15
+
16
+ # 3. Create tests
17
+ /test
18
+
19
+ # 4. Review, validate, and cleanup
20
+ /review
21
+ ```
22
+
23
+ ## Core Agents (Enhanced System)
24
+
25
+ ### 1. **PRD** - Product Requirements and Design
26
+
27
+ - Research-grounded planning (guides + Context7 + WebSearch)
28
+ - Structured multi-step plans via zen.planner
29
+ - Multi-model consensus via zen.consensus
30
+ - Creates workspace in `specs/active/{requirement}/`
31
+
32
+ **Invoke:** `/prd {feature description}`
33
+
34
+ ### 2. **Expert** - Implementation
35
+
36
+ - Implements features following AGENTS.md standards
37
+ - Uses zen.debug for systematic debugging
38
+ - Uses zen.thinkdeep for complex decisions
39
+ - Uses zen.analyze for code analysis
40
+ - Updates workspace continuously
41
+
42
+ **Invoke:** `/implement`
43
+
44
+ ### 3. **Testing** - Comprehensive Testing
45
+
46
+ - Creates function-based pytest tests (no classes)
47
+ - Unit tests (tests/unit/) + Integration tests (tests/integration/)
48
+ - Tests edge cases: empty, None, errors, concurrency
49
+ - Verifies coverage: 80%+ adapters, 90%+ core
50
+
51
+ **Invoke:** `/test`
52
+
53
+ ### 4. **Docs & Vision** - Documentation, Quality Gate, Cleanup
54
+
55
+ Three sequential phases:
56
+
57
+ 1. **Documentation** - Updates docs/guides/, API reference
58
+ 2. **Quality Gate** - Validates code quality (BLOCKS if fails)
59
+ 3. **Cleanup** - MANDATORY workspace cleanup and archiving
60
+
61
+ **Invoke:** `/review`
62
+
63
+ ## Workspace Structure
64
+
65
+ ```
66
+ specs/active/
67
+ ├── {requirement-slug}/ # Active requirement
68
+ │ ├── prd.md # Product Requirements Document
69
+ │ ├── tasks.md # Implementation checklist
70
+ │ ├── recovery.md # Session resume guide
71
+ │ ├── research/ # Research findings
72
+ │ │ └── plan.md
73
+ │ └── tmp/ # Temporary files (cleaned by Docs & Vision)
74
+ ├── archive/ # Completed requirements
75
+ └── README.md
76
+ ```
77
+
78
+ ## Guides (Shared Across All AIs)
79
+
80
+ All guides consolidated in `docs/guides/`:
81
+
82
+ ```
83
+ docs/guides/
84
+ ├── adapters/ # Database adapter patterns (10 adapters)
85
+ ├── performance/ # SQLglot and mypyc optimization
86
+ ├── testing/ # Pytest strategies
87
+ ├── architecture/ # Core design patterns
88
+ └── quick-reference/ # Common code patterns
89
+ ```
90
+
91
+ These guides are the **canonical source of truth** for SQLSpec patterns.
92
+
93
+ ## Workflow
94
+
95
+ ### Full Feature Development
96
+
97
+ 1. **PRD:** Research → Structured planning → Create workspace
98
+
99
+ ```bash
100
+ /prd add connection pooling for asyncpg
101
+ ```
102
+
103
+ 2. **Implement:** Read plan → Implement → Test → Update workspace
104
+
105
+ ```bash
106
+ /implement
107
+ ```
108
+
109
+ 3. **Test:** Create tests → Verify coverage → All tests pass
110
+
111
+ ```bash
112
+ /test
113
+ ```
114
+
115
+ 4. **Review:** Document → Quality gate → Cleanup
116
+
117
+ ```bash
118
+ /review
119
+ ```
120
+
121
+ ### Bug Fix
122
+
123
+ 1. **PRD (optional):** Quick PRD for complex bugs
124
+ 2. **Implement:** Use zen.debug for systematic investigation
125
+ 3. **Test:** Add regression test
126
+ 4. **Review:** Quality gate + cleanup
127
+
128
+ ### Session Continuity
129
+
130
+ Resume work across sessions/context resets:
131
+
132
+ ```python
133
+ # Find active work
134
+ Read("specs/active/{requirement}/recovery.md") # Shows status, next steps
135
+ Read("specs/active/{requirement}/tasks.md") # Shows what's done
136
+ Read("specs/active/{requirement}/prd.md") # Full context
137
+ ```
138
+
139
+ ## Code Quality Standards
140
+
141
+ All agents enforce [AGENTS.md](../AGENTS.md) standards:
142
+
143
+ ### ✅ ALWAYS
144
+
145
+ - Stringified type hints: `def foo(config: "SQLConfig"):`
146
+ - Type guards from `sqlspec.utils.type_guards`
147
+ - Clean names: `process_query()`, not `process_query_optimized()`
148
+ - Function-based tests: `def test_something():`
149
+
150
+ ### ❌ NEVER
151
+
152
+ - `from __future__ import annotations`
153
+ - Defensive patterns: `hasattr()`, `getattr()`
154
+ - Workaround naming: `_optimized`, `_with_cache`, `_fallback`
155
+ - Class-based tests: `class TestSomething:`
156
+
157
+ ## MCP Tools
158
+
159
+ ### zen.planner
160
+
161
+ Structured multi-step planning workflow
162
+
163
+ **Used by:** PRD
164
+
165
+ ### zen.consensus
166
+
167
+ Multi-model decision verification (gemini-2.5-pro, gpt-5)
168
+
169
+ **Used by:** PRD, Expert
170
+
171
+ ### zen.debug
172
+
173
+ Systematic debugging workflow
174
+
175
+ **Used by:** Expert
176
+
177
+ ### zen.thinkdeep
178
+
179
+ Deep analysis for complex decisions
180
+
181
+ **Used by:** Expert
182
+
183
+ ### zen.analyze
184
+
185
+ Code analysis (architecture, performance, security)
186
+
187
+ **Used by:** Expert
188
+
189
+ ### Context7
190
+
191
+ Up-to-date library documentation
192
+
193
+ **Used by:** All agents
194
+
195
+ ### WebSearch
196
+
197
+ Current best practices (2025+)
198
+
199
+ **Used by:** All agents
200
+
201
+ ## Quality Gate
202
+
203
+ **MANDATORY before work completion:**
204
+
205
+ ✅ `make lint` passes
206
+ ✅ No defensive patterns (hasattr/getattr)
207
+ ✅ No workaround naming (_optimized, etc.)
208
+ ✅ No class-based tests
209
+ ✅ All tests pass
210
+ ✅ Documentation complete
211
+ ✅ PRD acceptance criteria met
212
+
213
+ **If quality gate fails, work is NOT complete.**
214
+
215
+ ## Cleanup Protocol
216
+
217
+ **MANDATORY after every `/review`:**
218
+
219
+ 1. Remove all `tmp/` directories
220
+ 2. Archive completed requirement to `specs/active/archive/`
221
+ 3. Keep only last 3 active requirements
222
+ 4. Archive planning reports to `.claude/reports/archive/`
223
+
224
+ **Never skip cleanup.**
225
+
226
+ ## Documentation
227
+
228
+ - **[AGENTS.md](AGENTS.md)** - Comprehensive agent coordination guide
229
+ - **[../docs/guides/README.md](../docs/guides/README.md)** - Index of all development guides
230
+ - **[../specs/active/README.md](../specs/active/README.md)** - Workspace structure and usage
231
+ - **[../AGENTS.md](../AGENTS.md)** - Code quality standards (mandatory reading)
232
+
233
+ ## Archive
234
+
235
+ Old agent definitions and guides archived in:
236
+
237
+ - `.claude/archive/enhancement_20251009_231818/` - Previous system snapshot
238
+
239
+ ## Maintenance
240
+
241
+ Run enhancement bootstrap again when:
242
+
243
+ - Tech stack changes significantly
244
+ - Want to add new MCP tools
245
+ - Agents feel outdated
246
+ - Need better cleanup protocols
247
+
248
+ ## Enhancement History
249
+
250
+ - **2025-10-09:** Major enhancement
251
+ - Consolidated guides to `docs/guides/`
252
+ - Created 4 core agents (PRD, Expert, Testing, Docs & Vision)
253
+ - Added `specs/active/` workspace system
254
+ - Added mandatory cleanup protocols
255
+ - Created workflow commands (`/prd`, `/implement`, `/test`, `/review`)
256
+ - Archived old agents and guides
257
+
258
+ ## See Also
259
+
260
+ - [Agent Coordination Guide](AGENTS.md) - Detailed agent workflows
261
+ - [Code Quality Standards](../AGENTS.md) - MANDATORY coding standards
262
+ - [Development Guides](../docs/guides/) - Canonical pattern reference
263
+ - [Workspace Guide](../specs/active/README.md) - Workspace management