sqlspec 0.28.1__tar.gz → 0.30.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 (924) hide show
  1. sqlspec-0.30.0/.claude/agents/expert.md +560 -0
  2. sqlspec-0.30.0/.claude/agents/testing.md +465 -0
  3. sqlspec-0.30.0/.claude/bootstrap.md +1550 -0
  4. sqlspec-0.30.0/.gemini/bootstrap.md +2435 -0
  5. sqlspec-0.30.0/.gitignore +71 -0
  6. sqlspec-0.30.0/.pre-commit-config.yaml +53 -0
  7. sqlspec-0.30.0/AGENTS.md +3635 -0
  8. sqlspec-0.30.0/PKG-INFO +202 -0
  9. sqlspec-0.30.0/README.md +108 -0
  10. sqlspec-0.30.0/pyproject.toml +545 -0
  11. sqlspec-0.30.0/specs/guides/docs_examples_alignment.md +33 -0
  12. sqlspec-0.30.0/specs/guides/query-stack.md +67 -0
  13. sqlspec-0.30.0/sqlspec/__init__.py +102 -0
  14. sqlspec-0.30.0/sqlspec/_serialization.py +312 -0
  15. sqlspec-0.30.0/sqlspec/_typing.py +820 -0
  16. sqlspec-0.30.0/sqlspec/adapters/adbc/config.py +436 -0
  17. sqlspec-0.30.0/sqlspec/adapters/adbc/driver.py +835 -0
  18. sqlspec-0.30.0/sqlspec/adapters/adbc/type_converter.py +153 -0
  19. sqlspec-0.30.0/sqlspec/adapters/aiosqlite/config.py +310 -0
  20. sqlspec-0.30.0/sqlspec/adapters/aiosqlite/driver.py +463 -0
  21. sqlspec-0.30.0/sqlspec/adapters/asyncmy/config.py +246 -0
  22. sqlspec-0.30.0/sqlspec/adapters/asyncmy/driver.py +632 -0
  23. sqlspec-0.30.0/sqlspec/adapters/asyncpg/__init__.py +23 -0
  24. sqlspec-0.30.0/sqlspec/adapters/asyncpg/_types.py +23 -0
  25. sqlspec-0.30.0/sqlspec/adapters/asyncpg/config.py +464 -0
  26. sqlspec-0.30.0/sqlspec/adapters/asyncpg/driver.py +720 -0
  27. sqlspec-0.30.0/sqlspec/adapters/bigquery/config.py +298 -0
  28. sqlspec-0.30.0/sqlspec/adapters/bigquery/driver.py +974 -0
  29. sqlspec-0.30.0/sqlspec/adapters/bigquery/type_converter.py +125 -0
  30. sqlspec-0.30.0/sqlspec/adapters/duckdb/config.py +396 -0
  31. sqlspec-0.30.0/sqlspec/adapters/duckdb/driver.py +602 -0
  32. sqlspec-0.30.0/sqlspec/adapters/duckdb/pool.py +273 -0
  33. sqlspec-0.30.0/sqlspec/adapters/duckdb/type_converter.py +133 -0
  34. sqlspec-0.30.0/sqlspec/adapters/oracledb/_uuid_handlers.py +130 -0
  35. sqlspec-0.30.0/sqlspec/adapters/oracledb/adk/store.py +1632 -0
  36. sqlspec-0.30.0/sqlspec/adapters/oracledb/config.py +469 -0
  37. sqlspec-0.30.0/sqlspec/adapters/oracledb/data_dictionary.py +562 -0
  38. sqlspec-0.30.0/sqlspec/adapters/oracledb/driver.py +1491 -0
  39. sqlspec-0.30.0/sqlspec/adapters/oracledb/type_converter.py +207 -0
  40. sqlspec-0.30.0/sqlspec/adapters/psqlpy/config.py +271 -0
  41. sqlspec-0.30.0/sqlspec/adapters/psqlpy/driver.py +892 -0
  42. sqlspec-0.30.0/sqlspec/adapters/psqlpy/type_converter.py +102 -0
  43. sqlspec-0.30.0/sqlspec/adapters/psycopg/_type_handlers.py +82 -0
  44. sqlspec-0.30.0/sqlspec/adapters/psycopg/config.py +491 -0
  45. sqlspec-0.30.0/sqlspec/adapters/psycopg/driver.py +1336 -0
  46. sqlspec-0.30.0/sqlspec/adapters/sqlite/config.py +221 -0
  47. sqlspec-0.30.0/sqlspec/adapters/sqlite/driver.py +527 -0
  48. sqlspec-0.30.0/sqlspec/base.py +811 -0
  49. sqlspec-0.30.0/sqlspec/builder/__init__.py +146 -0
  50. sqlspec-0.30.0/sqlspec/builder/_base.py +719 -0
  51. sqlspec-0.30.0/sqlspec/builder/_column.py +364 -0
  52. sqlspec-0.30.0/sqlspec/builder/_ddl.py +1634 -0
  53. sqlspec-0.30.0/sqlspec/builder/_delete.py +82 -0
  54. sqlspec-0.30.0/sqlspec/builder/_factory.py +1537 -0
  55. sqlspec-0.30.0/sqlspec/builder/_insert.py +315 -0
  56. sqlspec-0.30.0/sqlspec/builder/_join.py +375 -0
  57. sqlspec-0.30.0/sqlspec/builder/_merge.py +800 -0
  58. sqlspec-0.30.0/sqlspec/builder/_parsing_utils.py +289 -0
  59. sqlspec-0.30.0/sqlspec/builder/_select.py +1606 -0
  60. sqlspec-0.30.0/sqlspec/builder/_update.py +161 -0
  61. sqlspec-0.30.0/sqlspec/cli.py +615 -0
  62. sqlspec-0.30.0/sqlspec/config.py +1518 -0
  63. sqlspec-0.30.0/sqlspec/core/__init__.py +305 -0
  64. sqlspec-0.30.0/sqlspec/core/cache.py +785 -0
  65. sqlspec-0.30.0/sqlspec/core/compiler.py +597 -0
  66. sqlspec-0.30.0/sqlspec/core/metrics.py +83 -0
  67. sqlspec-0.30.0/sqlspec/core/parameters/__init__.py +64 -0
  68. sqlspec-0.30.0/sqlspec/core/parameters/_alignment.py +266 -0
  69. sqlspec-0.30.0/sqlspec/core/parameters/_converter.py +393 -0
  70. sqlspec-0.30.0/sqlspec/core/parameters/_processor.py +304 -0
  71. sqlspec-0.30.0/sqlspec/core/parameters/_registry.py +201 -0
  72. sqlspec-0.30.0/sqlspec/core/parameters/_transformers.py +226 -0
  73. sqlspec-0.30.0/sqlspec/core/parameters/_types.py +430 -0
  74. sqlspec-0.30.0/sqlspec/core/parameters/_validator.py +123 -0
  75. sqlspec-0.30.0/sqlspec/core/pipeline.py +187 -0
  76. sqlspec-0.30.0/sqlspec/core/result.py +1053 -0
  77. sqlspec-0.30.0/sqlspec/core/stack.py +163 -0
  78. sqlspec-0.30.0/sqlspec/core/statement.py +835 -0
  79. sqlspec-0.30.0/sqlspec/driver/__init__.py +28 -0
  80. sqlspec-0.30.0/sqlspec/driver/_async.py +756 -0
  81. sqlspec-0.30.0/sqlspec/driver/_common.py +1008 -0
  82. sqlspec-0.30.0/sqlspec/driver/_sync.py +756 -0
  83. sqlspec-0.30.0/sqlspec/driver/mixins/__init__.py +7 -0
  84. sqlspec-0.30.0/sqlspec/driver/mixins/_sql_translator.py +122 -0
  85. sqlspec-0.30.0/sqlspec/driver/mixins/_storage.py +311 -0
  86. sqlspec-0.30.0/sqlspec/exceptions.py +321 -0
  87. sqlspec-0.30.0/sqlspec/extensions/aiosql/adapter.py +468 -0
  88. sqlspec-0.30.0/sqlspec/extensions/fastapi/__init__.py +19 -0
  89. sqlspec-0.30.0/sqlspec/extensions/fastapi/extension.py +341 -0
  90. sqlspec-0.30.0/sqlspec/extensions/fastapi/providers.py +543 -0
  91. sqlspec-0.30.0/sqlspec/extensions/flask/_state.py +72 -0
  92. sqlspec-0.30.0/sqlspec/extensions/flask/extension.py +402 -0
  93. sqlspec-0.30.0/sqlspec/extensions/litestar/handlers.py +316 -0
  94. sqlspec-0.30.0/sqlspec/extensions/litestar/plugin.py +633 -0
  95. sqlspec-0.30.0/sqlspec/extensions/litestar/providers.py +454 -0
  96. sqlspec-0.30.0/sqlspec/extensions/otel/__init__.py +58 -0
  97. sqlspec-0.30.0/sqlspec/extensions/prometheus/__init__.py +107 -0
  98. sqlspec-0.30.0/sqlspec/extensions/starlette/_state.py +26 -0
  99. sqlspec-0.30.0/sqlspec/extensions/starlette/extension.py +257 -0
  100. sqlspec-0.30.0/sqlspec/loader.py +716 -0
  101. sqlspec-0.30.0/sqlspec/migrations/base.py +728 -0
  102. sqlspec-0.30.0/sqlspec/migrations/commands.py +1140 -0
  103. sqlspec-0.30.0/sqlspec/migrations/fix.py +203 -0
  104. sqlspec-0.30.0/sqlspec/migrations/runner.py +1024 -0
  105. sqlspec-0.30.0/sqlspec/migrations/templates.py +234 -0
  106. sqlspec-0.30.0/sqlspec/migrations/utils.py +256 -0
  107. sqlspec-0.30.0/sqlspec/migrations/validation.py +174 -0
  108. sqlspec-0.30.0/sqlspec/observability/__init__.py +22 -0
  109. sqlspec-0.30.0/sqlspec/observability/_config.py +228 -0
  110. sqlspec-0.30.0/sqlspec/observability/_diagnostics.py +66 -0
  111. sqlspec-0.30.0/sqlspec/observability/_dispatcher.py +129 -0
  112. sqlspec-0.30.0/sqlspec/observability/_observer.py +180 -0
  113. sqlspec-0.30.0/sqlspec/observability/_runtime.py +381 -0
  114. sqlspec-0.30.0/sqlspec/observability/_spans.py +148 -0
  115. sqlspec-0.30.0/sqlspec/protocols.py +507 -0
  116. sqlspec-0.30.0/sqlspec/storage/__init__.py +46 -0
  117. sqlspec-0.30.0/sqlspec/storage/_utils.py +104 -0
  118. sqlspec-0.30.0/sqlspec/storage/backends/fsspec.py +398 -0
  119. sqlspec-0.30.0/sqlspec/storage/backends/local.py +377 -0
  120. sqlspec-0.30.0/sqlspec/storage/backends/obstore.py +580 -0
  121. sqlspec-0.30.0/sqlspec/storage/errors.py +104 -0
  122. sqlspec-0.30.0/sqlspec/storage/pipeline.py +604 -0
  123. sqlspec-0.30.0/sqlspec/storage/registry.py +289 -0
  124. sqlspec-0.30.0/sqlspec/typing.py +219 -0
  125. sqlspec-0.30.0/sqlspec/utils/arrow_helpers.py +95 -0
  126. sqlspec-0.30.0/sqlspec/utils/config_resolver.py +153 -0
  127. sqlspec-0.30.0/sqlspec/utils/data_transformation.py +114 -0
  128. sqlspec-0.30.0/sqlspec/utils/fixtures.py +250 -0
  129. sqlspec-0.30.0/sqlspec/utils/portal.py +327 -0
  130. sqlspec-0.30.0/sqlspec/utils/serializers.py +396 -0
  131. sqlspec-0.30.0/sqlspec/utils/type_converters.py +99 -0
  132. sqlspec-0.30.0/sqlspec/utils/type_guards.py +1324 -0
  133. sqlspec-0.30.0/sqlspec/utils/version.py +444 -0
  134. sqlspec-0.30.0/tests/integration/test_adapters/_storage_bridge_helpers.py +28 -0
  135. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/conftest.py +177 -0
  136. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_adbc_arrow_features.py +410 -0
  137. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_adbc_backends.py +269 -0
  138. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_adbc_driver.py +488 -0
  139. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_adbc_edge_cases.py +507 -0
  140. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_adbc_results.py +376 -0
  141. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_arrow_duckdb.py +214 -0
  142. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_data_dictionary.py +142 -0
  143. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/test_store.py +258 -0
  144. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_parameter_styles.py +650 -0
  145. sqlspec-0.30.0/tests/integration/test_adapters/test_adbc/test_storage_bridge.py +63 -0
  146. sqlspec-0.30.0/tests/integration/test_adapters/test_aiosqlite/test_arrow.py +233 -0
  147. sqlspec-0.30.0/tests/integration/test_adapters/test_aiosqlite/test_connection.py +288 -0
  148. sqlspec-0.30.0/tests/integration/test_adapters/test_aiosqlite/test_driver.py +566 -0
  149. sqlspec-0.30.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_numpy_serialization.py +254 -0
  150. sqlspec-0.30.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_store.py +234 -0
  151. sqlspec-0.30.0/tests/integration/test_adapters/test_aiosqlite/test_parameter_styles.py +379 -0
  152. sqlspec-0.30.0/tests/integration/test_adapters/test_aiosqlite/test_pooling.py +187 -0
  153. sqlspec-0.30.0/tests/integration/test_adapters/test_aiosqlite/test_storage_bridge.py +46 -0
  154. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncmy/test_arrow.py +202 -0
  155. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncmy/test_asyncmy_features.py +283 -0
  156. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncmy/test_config.py +220 -0
  157. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncmy/test_driver.py +511 -0
  158. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncmy/test_parameter_styles.py +696 -0
  159. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncmy/test_storage_bridge.py +63 -0
  160. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/conftest.py +40 -0
  161. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_arrow.py +204 -0
  162. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_cloud_connectors_integration.py +205 -0
  163. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_data_dictionary.py +107 -0
  164. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_driver.py +885 -0
  165. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_exceptions.py +118 -0
  166. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_execute_many.py +272 -0
  167. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_owner_id_column.py +411 -0
  168. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/test_store.py +237 -0
  169. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_merge.py +244 -0
  170. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_merge_bulk.py +275 -0
  171. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_migrations.py +682 -0
  172. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_parameter_styles.py +622 -0
  173. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_schema_migration.py +323 -0
  174. sqlspec-0.30.0/tests/integration/test_adapters/test_asyncpg/test_storage_bridge.py +69 -0
  175. sqlspec-0.30.0/tests/integration/test_adapters/test_bigquery/test_arrow_bigquery.py +222 -0
  176. sqlspec-0.30.0/tests/integration/test_adapters/test_bigquery/test_bigquery_features.py +64 -0
  177. sqlspec-0.30.0/tests/integration/test_adapters/test_bigquery/test_config.py +147 -0
  178. sqlspec-0.30.0/tests/integration/test_adapters/test_bigquery/test_connection.py +18 -0
  179. sqlspec-0.30.0/tests/integration/test_adapters/test_bigquery/test_driver.py +458 -0
  180. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/conftest.py +26 -0
  181. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/test_arrow.py +193 -0
  182. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/test_connection.py +394 -0
  183. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/test_driver.py +651 -0
  184. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/test_driver_features.py +156 -0
  185. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/test_execute_many.py +295 -0
  186. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/test_mixed_parameter_styles.py +151 -0
  187. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/test_parameter_styles.py +888 -0
  188. sqlspec-0.30.0/tests/integration/test_adapters/test_duckdb/test_storage_bridge.py +69 -0
  189. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/conftest.py +59 -0
  190. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_arrow.py +258 -0
  191. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_driver_async.py +488 -0
  192. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_driver_sync.py +482 -0
  193. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_execute_many.py +323 -0
  194. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_merge.py +349 -0
  195. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_merge_bulk.py +306 -0
  196. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_oracle_features.py +361 -0
  197. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_parameter_styles.py +818 -0
  198. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_stack.py +144 -0
  199. sqlspec-0.30.0/tests/integration/test_adapters/test_oracledb/test_uuid_binary.py +348 -0
  200. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/conftest.py +58 -0
  201. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_arrow.py +194 -0
  202. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_connection.py +119 -0
  203. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_driver.py +571 -0
  204. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_exceptions.py +118 -0
  205. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/test_owner_id_column.py +125 -0
  206. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/test_store.py +237 -0
  207. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_merge_bulk.py +275 -0
  208. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_parameter_styles.py +663 -0
  209. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_psqlpy_features.py +223 -0
  210. sqlspec-0.30.0/tests/integration/test_adapters/test_psqlpy/test_storage_bridge.py +65 -0
  211. sqlspec-0.30.0/tests/integration/test_adapters/test_psycopg/test_arrow.py +194 -0
  212. sqlspec-0.30.0/tests/integration/test_adapters/test_psycopg/test_async_copy.py +203 -0
  213. sqlspec-0.30.0/tests/integration/test_adapters/test_psycopg/test_driver.py +701 -0
  214. sqlspec-0.30.0/tests/integration/test_adapters/test_psycopg/test_execute_many.py +325 -0
  215. sqlspec-0.30.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_async.py +237 -0
  216. sqlspec-0.30.0/tests/integration/test_adapters/test_psycopg/test_merge_bulk.py +277 -0
  217. sqlspec-0.30.0/tests/integration/test_adapters/test_psycopg/test_parameter_styles.py +1033 -0
  218. sqlspec-0.30.0/tests/integration/test_adapters/test_psycopg/test_storage_bridge.py +153 -0
  219. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/conftest.py +128 -0
  220. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_arrow.py +156 -0
  221. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_data_dictionary.py +95 -0
  222. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_driver.py +579 -0
  223. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_driver_features.py +113 -0
  224. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_exceptions.py +112 -0
  225. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/test_store.py +253 -0
  226. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_migrations.py +513 -0
  227. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_parameter_styles.py +417 -0
  228. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_pooling.py +277 -0
  229. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_query_mixin.py +214 -0
  230. sqlspec-0.30.0/tests/integration/test_adapters/test_sqlite/test_storage_bridge.py +47 -0
  231. sqlspec-0.30.0/tests/integration/test_async_migrations.py +280 -0
  232. sqlspec-0.30.0/tests/integration/test_dishka/conftest.py +115 -0
  233. sqlspec-0.30.0/tests/integration/test_dishka/test_dishka_integration.py +538 -0
  234. sqlspec-0.30.0/tests/integration/test_extensions/test_fastapi/test_fastapi_filters_integration.py +395 -0
  235. sqlspec-0.30.0/tests/integration/test_extensions/test_fastapi/test_fastapi_integration.py +284 -0
  236. sqlspec-0.30.0/tests/integration/test_extensions/test_flask/test_flask_disable_di.py +76 -0
  237. sqlspec-0.30.0/tests/integration/test_extensions/test_flask/test_flask_integration.py +314 -0
  238. sqlspec-0.30.0/tests/integration/test_extensions/test_litestar/test_correlation_middleware.py +91 -0
  239. sqlspec-0.30.0/tests/integration/test_extensions/test_litestar/test_litestar_disable_di.py +69 -0
  240. sqlspec-0.30.0/tests/integration/test_extensions/test_starlette/test_starlette_disable_di.py +70 -0
  241. sqlspec-0.30.0/tests/integration/test_extensions/test_starlette/test_starlette_integration.py +225 -0
  242. sqlspec-0.30.0/tests/integration/test_loader/test_file_system_loading.py +766 -0
  243. sqlspec-0.30.0/tests/integration/test_migrations/test_upgrade_downgrade_versions.py +411 -0
  244. sqlspec-0.30.0/tests/integration/test_stack_edge_cases.py +183 -0
  245. sqlspec-0.30.0/tests/integration/test_storage/test_storage_integration.py +867 -0
  246. sqlspec-0.30.0/tests/unit/conftest.py +1007 -0
  247. sqlspec-0.30.0/tests/unit/test_adapters/conftest.py +506 -0
  248. sqlspec-0.30.0/tests/unit/test_adapters/test_adapter_implementations.py +427 -0
  249. sqlspec-0.30.0/tests/unit/test_adapters/test_async_adapters.py +554 -0
  250. sqlspec-0.30.0/tests/unit/test_adapters/test_asyncmy/test_config.py +36 -0
  251. sqlspec-0.30.0/tests/unit/test_adapters/test_asyncpg/test_cloud_connectors.py +544 -0
  252. sqlspec-0.30.0/tests/unit/test_adapters/test_asyncpg/test_config.py +36 -0
  253. sqlspec-0.30.0/tests/unit/test_adapters/test_bigquery/test_config.py +28 -0
  254. sqlspec-0.30.0/tests/unit/test_adapters/test_bigquery/test_parameters.py +13 -0
  255. sqlspec-0.30.0/tests/unit/test_adapters/test_duckdb/test_config.py +28 -0
  256. sqlspec-0.30.0/tests/unit/test_adapters/test_duckdb/test_extension_flags.py +42 -0
  257. sqlspec-0.30.0/tests/unit/test_adapters/test_extension_config.py +204 -0
  258. sqlspec-0.30.0/tests/unit/test_adapters/test_oracledb/test_adk_store.py +49 -0
  259. sqlspec-0.30.0/tests/unit/test_adapters/test_oracledb/test_data_dictionary.py +139 -0
  260. sqlspec-0.30.0/tests/unit/test_adapters/test_oracledb/test_pipeline_helpers.py +121 -0
  261. sqlspec-0.30.0/tests/unit/test_adapters/test_oracledb/test_uuid_handlers.py +240 -0
  262. sqlspec-0.30.0/tests/unit/test_adapters/test_psqlpy/test_config.py +28 -0
  263. sqlspec-0.30.0/tests/unit/test_adapters/test_psycopg/test_config.py +58 -0
  264. sqlspec-0.30.0/tests/unit/test_adapters/test_sync_adapters.py +475 -0
  265. sqlspec-0.30.0/tests/unit/test_arrow_helpers.py +156 -0
  266. sqlspec-0.30.0/tests/unit/test_arrow_result.py +147 -0
  267. sqlspec-0.30.0/tests/unit/test_base/test_sql_integration.py +301 -0
  268. sqlspec-0.30.0/tests/unit/test_base/test_sqlspec_class.py +594 -0
  269. sqlspec-0.30.0/tests/unit/test_builder/test_copy_helpers.py +43 -0
  270. sqlspec-0.30.0/tests/unit/test_builder/test_dialect_override.py +154 -0
  271. sqlspec-0.30.0/tests/unit/test_builder/test_merge.py +649 -0
  272. sqlspec-0.30.0/tests/unit/test_builder/test_merge_dialect_validation.py +223 -0
  273. sqlspec-0.30.0/tests/unit/test_builder/test_merge_property_shorthand.py +176 -0
  274. sqlspec-0.30.0/tests/unit/test_builder/test_parameter_naming.py +455 -0
  275. sqlspec-0.30.0/tests/unit/test_builder/test_to_sql.py +98 -0
  276. sqlspec-0.30.0/tests/unit/test_builder/test_to_sql_edge_cases.py +273 -0
  277. sqlspec-0.30.0/tests/unit/test_builder/test_upsert_factory.py +87 -0
  278. sqlspec-0.30.0/tests/unit/test_builder/test_upsert_factory_edge_cases.py +193 -0
  279. sqlspec-0.30.0/tests/unit/test_builder_parameter_naming.py +203 -0
  280. sqlspec-0.30.0/tests/unit/test_cli/test_config_loading.py +175 -0
  281. sqlspec-0.30.0/tests/unit/test_cli/test_migration_commands.py +887 -0
  282. sqlspec-0.30.0/tests/unit/test_cli/test_shell_completion.py +71 -0
  283. sqlspec-0.30.0/tests/unit/test_config/test_migration_methods.py +524 -0
  284. sqlspec-0.30.0/tests/unit/test_config/test_observability_extensions.py +49 -0
  285. sqlspec-0.30.0/tests/unit/test_config/test_storage_capabilities.py +101 -0
  286. sqlspec-0.30.0/tests/unit/test_config_resolver.py +263 -0
  287. sqlspec-0.30.0/tests/unit/test_core/test_cache.py +693 -0
  288. sqlspec-0.30.0/tests/unit/test_core/test_compiler.py +802 -0
  289. sqlspec-0.30.0/tests/unit/test_core/test_filters.py +337 -0
  290. sqlspec-0.30.0/tests/unit/test_core/test_hashing.py +569 -0
  291. sqlspec-0.30.0/tests/unit/test_core/test_parameter_regex_performance.py +205 -0
  292. sqlspec-0.30.0/tests/unit/test_core/test_parameters.py +1494 -0
  293. sqlspec-0.30.0/tests/unit/test_core/test_result.py +326 -0
  294. sqlspec-0.30.0/tests/unit/test_core/test_stack.py +94 -0
  295. sqlspec-0.30.0/tests/unit/test_core/test_stack_metrics.py +42 -0
  296. sqlspec-0.30.0/tests/unit/test_core/test_statement.py +1024 -0
  297. sqlspec-0.30.0/tests/unit/test_driver/test_stack_base.py +121 -0
  298. sqlspec-0.30.0/tests/unit/test_exceptions.py +63 -0
  299. sqlspec-0.30.0/tests/unit/test_extensions/test_fastapi/test_providers.py +338 -0
  300. sqlspec-0.30.0/tests/unit/test_extensions/test_flask/test_state.py +169 -0
  301. sqlspec-0.30.0/tests/unit/test_extensions/test_litestar/test_handlers.py +301 -0
  302. sqlspec-0.30.0/tests/unit/test_extensions/test_observability_integrations.py +42 -0
  303. sqlspec-0.30.0/tests/unit/test_extensions/test_starlette/test_config_state.py +68 -0
  304. sqlspec-0.30.0/tests/unit/test_extensions/test_starlette/test_utils.py +148 -0
  305. sqlspec-0.30.0/tests/unit/test_loader/test_fixtures_directory_loading.py +646 -0
  306. sqlspec-0.30.0/tests/unit/test_loader/test_loading_patterns.py +822 -0
  307. sqlspec-0.30.0/tests/unit/test_loader/test_sql_file_loader.py +1000 -0
  308. sqlspec-0.30.0/tests/unit/test_migrations/test_migration_runner.py +930 -0
  309. sqlspec-0.30.0/tests/unit/test_migrations/test_null_handling_fixes.py +111 -0
  310. sqlspec-0.30.0/tests/unit/test_migrations/test_utils.py +385 -0
  311. sqlspec-0.30.0/tests/unit/test_migrations/test_version.py +225 -0
  312. sqlspec-0.30.0/tests/unit/test_observability.py +461 -0
  313. sqlspec-0.30.0/tests/unit/test_sql_factory.py +1793 -0
  314. sqlspec-0.30.0/tests/unit/test_storage/test_errors.py +32 -0
  315. sqlspec-0.30.0/tests/unit/test_storage_bridge.py +365 -0
  316. sqlspec-0.30.0/tests/unit/test_type_conversion.py +305 -0
  317. sqlspec-0.30.0/tests/unit/test_utils/test_portal.py +342 -0
  318. sqlspec-0.30.0/tests/unit/test_utils/test_serializers.py +675 -0
  319. sqlspec-0.30.0/tests/unit/test_utils/test_type_guards.py +1126 -0
  320. sqlspec-0.30.0/tools/run_pre_commit.py +57 -0
  321. sqlspec-0.30.0/tools/sphinx_ext/missing_references.py +331 -0
  322. sqlspec-0.30.0/uv.lock +7116 -0
  323. sqlspec-0.28.1/.claude/agents/expert.md +0 -560
  324. sqlspec-0.28.1/.claude/agents/testing.md +0 -465
  325. sqlspec-0.28.1/.gemini/bootstrap.md +0 -2165
  326. sqlspec-0.28.1/.gitignore +0 -67
  327. sqlspec-0.28.1/.pre-commit-config.yaml +0 -52
  328. sqlspec-0.28.1/AGENTS.md +0 -2899
  329. sqlspec-0.28.1/PKG-INFO +0 -570
  330. sqlspec-0.28.1/README.md +0 -481
  331. sqlspec-0.28.1/pyproject.toml +0 -531
  332. sqlspec-0.28.1/sqlspec/__init__.py +0 -94
  333. sqlspec-0.28.1/sqlspec/_serialization.py +0 -309
  334. sqlspec-0.28.1/sqlspec/_typing.py +0 -794
  335. sqlspec-0.28.1/sqlspec/adapters/adbc/config.py +0 -412
  336. sqlspec-0.28.1/sqlspec/adapters/adbc/driver.py +0 -934
  337. sqlspec-0.28.1/sqlspec/adapters/adbc/type_converter.py +0 -153
  338. sqlspec-0.28.1/sqlspec/adapters/aiosqlite/config.py +0 -293
  339. sqlspec-0.28.1/sqlspec/adapters/aiosqlite/driver.py +0 -346
  340. sqlspec-0.28.1/sqlspec/adapters/asyncmy/config.py +0 -228
  341. sqlspec-0.28.1/sqlspec/adapters/asyncmy/driver.py +0 -565
  342. sqlspec-0.28.1/sqlspec/adapters/asyncpg/__init__.py +0 -22
  343. sqlspec-0.28.1/sqlspec/adapters/asyncpg/_types.py +0 -21
  344. sqlspec-0.28.1/sqlspec/adapters/asyncpg/config.py +0 -277
  345. sqlspec-0.28.1/sqlspec/adapters/asyncpg/driver.py +0 -458
  346. sqlspec-0.28.1/sqlspec/adapters/bigquery/config.py +0 -273
  347. sqlspec-0.28.1/sqlspec/adapters/bigquery/driver.py +0 -897
  348. sqlspec-0.28.1/sqlspec/adapters/bigquery/type_converter.py +0 -125
  349. sqlspec-0.28.1/sqlspec/adapters/duckdb/config.py +0 -336
  350. sqlspec-0.28.1/sqlspec/adapters/duckdb/driver.py +0 -535
  351. sqlspec-0.28.1/sqlspec/adapters/duckdb/pool.py +0 -240
  352. sqlspec-0.28.1/sqlspec/adapters/duckdb/type_converter.py +0 -133
  353. sqlspec-0.28.1/sqlspec/adapters/oracledb/adk/store.py +0 -1628
  354. sqlspec-0.28.1/sqlspec/adapters/oracledb/config.py +0 -424
  355. sqlspec-0.28.1/sqlspec/adapters/oracledb/data_dictionary.py +0 -509
  356. sqlspec-0.28.1/sqlspec/adapters/oracledb/driver.py +0 -976
  357. sqlspec-0.28.1/sqlspec/adapters/oracledb/type_converter.py +0 -207
  358. sqlspec-0.28.1/sqlspec/adapters/psqlpy/config.py +0 -247
  359. sqlspec-0.28.1/sqlspec/adapters/psqlpy/driver.py +0 -424
  360. sqlspec-0.28.1/sqlspec/adapters/psqlpy/type_converter.py +0 -102
  361. sqlspec-0.28.1/sqlspec/adapters/psycopg/_type_handlers.py +0 -80
  362. sqlspec-0.28.1/sqlspec/adapters/psycopg/config.py +0 -462
  363. sqlspec-0.28.1/sqlspec/adapters/psycopg/driver.py +0 -873
  364. sqlspec-0.28.1/sqlspec/adapters/sqlite/config.py +0 -203
  365. sqlspec-0.28.1/sqlspec/adapters/sqlite/driver.py +0 -410
  366. sqlspec-0.28.1/sqlspec/base.py +0 -707
  367. sqlspec-0.28.1/sqlspec/builder/__init__.py +0 -137
  368. sqlspec-0.28.1/sqlspec/builder/_base.py +0 -648
  369. sqlspec-0.28.1/sqlspec/builder/_column.py +0 -366
  370. sqlspec-0.28.1/sqlspec/builder/_ddl.py +0 -1634
  371. sqlspec-0.28.1/sqlspec/builder/_delete.py +0 -76
  372. sqlspec-0.28.1/sqlspec/builder/_factory.py +0 -1333
  373. sqlspec-0.28.1/sqlspec/builder/_insert.py +0 -315
  374. sqlspec-0.28.1/sqlspec/builder/_join.py +0 -375
  375. sqlspec-0.28.1/sqlspec/builder/_merge.py +0 -506
  376. sqlspec-0.28.1/sqlspec/builder/_parsing_utils.py +0 -302
  377. sqlspec-0.28.1/sqlspec/builder/_select.py +0 -1604
  378. sqlspec-0.28.1/sqlspec/builder/_update.py +0 -156
  379. sqlspec-0.28.1/sqlspec/cli.py +0 -608
  380. sqlspec-0.28.1/sqlspec/config.py +0 -847
  381. sqlspec-0.28.1/sqlspec/core/__init__.py +0 -140
  382. sqlspec-0.28.1/sqlspec/core/cache.py +0 -770
  383. sqlspec-0.28.1/sqlspec/core/compiler.py +0 -427
  384. sqlspec-0.28.1/sqlspec/core/parameters.py +0 -1296
  385. sqlspec-0.28.1/sqlspec/core/result.py +0 -880
  386. sqlspec-0.28.1/sqlspec/core/statement.py +0 -809
  387. sqlspec-0.28.1/sqlspec/driver/__init__.py +0 -20
  388. sqlspec-0.28.1/sqlspec/driver/_async.py +0 -615
  389. sqlspec-0.28.1/sqlspec/driver/_common.py +0 -826
  390. sqlspec-0.28.1/sqlspec/driver/_sync.py +0 -621
  391. sqlspec-0.28.1/sqlspec/driver/mixins/__init__.py +0 -6
  392. sqlspec-0.28.1/sqlspec/driver/mixins/_sql_translator.py +0 -122
  393. sqlspec-0.28.1/sqlspec/exceptions.py +0 -260
  394. sqlspec-0.28.1/sqlspec/extensions/aiosql/adapter.py +0 -469
  395. sqlspec-0.28.1/sqlspec/extensions/fastapi/__init__.py +0 -21
  396. sqlspec-0.28.1/sqlspec/extensions/fastapi/extension.py +0 -331
  397. sqlspec-0.28.1/sqlspec/extensions/fastapi/providers.py +0 -543
  398. sqlspec-0.28.1/sqlspec/extensions/flask/_state.py +0 -71
  399. sqlspec-0.28.1/sqlspec/extensions/flask/extension.py +0 -389
  400. sqlspec-0.28.1/sqlspec/extensions/litestar/handlers.py +0 -310
  401. sqlspec-0.28.1/sqlspec/extensions/litestar/plugin.py +0 -511
  402. sqlspec-0.28.1/sqlspec/extensions/litestar/providers.py +0 -454
  403. sqlspec-0.28.1/sqlspec/extensions/starlette/_state.py +0 -25
  404. sqlspec-0.28.1/sqlspec/extensions/starlette/extension.py +0 -254
  405. sqlspec-0.28.1/sqlspec/loader.py +0 -650
  406. sqlspec-0.28.1/sqlspec/migrations/base.py +0 -666
  407. sqlspec-0.28.1/sqlspec/migrations/commands.py +0 -929
  408. sqlspec-0.28.1/sqlspec/migrations/fix.py +0 -199
  409. sqlspec-0.28.1/sqlspec/migrations/runner.py +0 -734
  410. sqlspec-0.28.1/sqlspec/migrations/utils.py +0 -177
  411. sqlspec-0.28.1/sqlspec/migrations/validation.py +0 -177
  412. sqlspec-0.28.1/sqlspec/protocols.py +0 -482
  413. sqlspec-0.28.1/sqlspec/storage/__init__.py +0 -13
  414. sqlspec-0.28.1/sqlspec/storage/_utils.py +0 -85
  415. sqlspec-0.28.1/sqlspec/storage/backends/fsspec.py +0 -352
  416. sqlspec-0.28.1/sqlspec/storage/backends/local.py +0 -337
  417. sqlspec-0.28.1/sqlspec/storage/backends/obstore.py +0 -582
  418. sqlspec-0.28.1/sqlspec/storage/registry.py +0 -306
  419. sqlspec-0.28.1/sqlspec/typing.py +0 -203
  420. sqlspec-0.28.1/sqlspec/utils/arrow_helpers.py +0 -81
  421. sqlspec-0.28.1/sqlspec/utils/config_resolver.py +0 -153
  422. sqlspec-0.28.1/sqlspec/utils/data_transformation.py +0 -121
  423. sqlspec-0.28.1/sqlspec/utils/fixtures.py +0 -267
  424. sqlspec-0.28.1/sqlspec/utils/portal.py +0 -311
  425. sqlspec-0.28.1/sqlspec/utils/serializers.py +0 -167
  426. sqlspec-0.28.1/sqlspec/utils/type_guards.py +0 -1360
  427. sqlspec-0.28.1/sqlspec/utils/version.py +0 -433
  428. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/conftest.py +0 -55
  429. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_arrow_features.py +0 -410
  430. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_backends.py +0 -269
  431. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_driver.py +0 -515
  432. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_edge_cases.py +0 -507
  433. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_results.py +0 -376
  434. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_arrow.py +0 -219
  435. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_data_dictionary.py +0 -140
  436. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/test_store.py +0 -262
  437. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_parameter_styles.py +0 -650
  438. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_arrow.py +0 -235
  439. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_connection.py +0 -246
  440. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_driver.py +0 -519
  441. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_numpy_serialization.py +0 -254
  442. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_store.py +0 -234
  443. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_parameter_styles.py +0 -379
  444. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_pooling.py +0 -187
  445. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_arrow.py +0 -246
  446. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_asyncmy_features.py +0 -284
  447. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_config.py +0 -220
  448. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_driver.py +0 -488
  449. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_parameter_styles.py +0 -697
  450. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/conftest.py +0 -77
  451. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_arrow.py +0 -234
  452. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_data_dictionary.py +0 -105
  453. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_driver.py +0 -830
  454. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_exceptions.py +0 -130
  455. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_execute_many.py +0 -286
  456. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_owner_id_column.py +0 -411
  457. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/test_store.py +0 -246
  458. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_migrations.py +0 -390
  459. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_parameter_styles.py +0 -635
  460. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_schema_migration.py +0 -321
  461. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_arrow.py +0 -266
  462. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_bigquery_features.py +0 -64
  463. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_config.py +0 -147
  464. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_connection.py +0 -18
  465. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_driver.py +0 -414
  466. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_arrow.py +0 -193
  467. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_connection.py +0 -352
  468. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_driver.py +0 -610
  469. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_driver_features.py +0 -151
  470. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_execute_many.py +0 -295
  471. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_mixed_parameter_styles.py +0 -151
  472. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_parameter_styles.py +0 -888
  473. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/conftest.py +0 -52
  474. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_arrow.py +0 -267
  475. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_driver_async.py +0 -488
  476. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_driver_sync.py +0 -482
  477. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_execute_many.py +0 -323
  478. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_oracle_features.py +0 -362
  479. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_parameter_styles.py +0 -818
  480. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/conftest.py +0 -47
  481. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_arrow.py +0 -229
  482. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_connection.py +0 -119
  483. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_driver.py +0 -527
  484. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_exceptions.py +0 -131
  485. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/test_owner_id_column.py +0 -147
  486. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/test_store.py +0 -246
  487. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_parameter_styles.py +0 -664
  488. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_psqlpy_features.py +0 -224
  489. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_arrow.py +0 -236
  490. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_async_copy.py +0 -151
  491. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_driver.py +0 -655
  492. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_execute_many.py +0 -325
  493. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_async.py +0 -249
  494. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_parameter_styles.py +0 -1033
  495. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/conftest.py +0 -115
  496. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_arrow.py +0 -223
  497. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_data_dictionary.py +0 -92
  498. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_driver.py +0 -531
  499. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_driver_features.py +0 -111
  500. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_exceptions.py +0 -120
  501. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/test_store.py +0 -253
  502. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_migrations.py +0 -292
  503. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_parameter_styles.py +0 -418
  504. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_pooling.py +0 -277
  505. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_query_mixin.py +0 -214
  506. sqlspec-0.28.1/tests/integration/test_async_migrations.py +0 -278
  507. sqlspec-0.28.1/tests/integration/test_dishka/conftest.py +0 -113
  508. sqlspec-0.28.1/tests/integration/test_dishka/test_dishka_integration.py +0 -536
  509. sqlspec-0.28.1/tests/integration/test_extensions/test_fastapi_filters_integration.py +0 -390
  510. sqlspec-0.28.1/tests/integration/test_extensions/test_fastapi_integration.py +0 -281
  511. sqlspec-0.28.1/tests/integration/test_extensions/test_flask_integration.py +0 -315
  512. sqlspec-0.28.1/tests/integration/test_extensions/test_starlette_integration.py +0 -222
  513. sqlspec-0.28.1/tests/integration/test_loader/test_file_system_loading.py +0 -766
  514. sqlspec-0.28.1/tests/integration/test_migrations/test_upgrade_downgrade_versions.py +0 -409
  515. sqlspec-0.28.1/tests/integration/test_storage/test_storage_integration.py +0 -874
  516. sqlspec-0.28.1/tests/unit/conftest.py +0 -1011
  517. sqlspec-0.28.1/tests/unit/test_adapters/conftest.py +0 -507
  518. sqlspec-0.28.1/tests/unit/test_adapters/test_adapter_implementations.py +0 -429
  519. sqlspec-0.28.1/tests/unit/test_adapters/test_async_adapters.py +0 -556
  520. sqlspec-0.28.1/tests/unit/test_adapters/test_asyncpg/test_config.py +0 -0
  521. sqlspec-0.28.1/tests/unit/test_adapters/test_extension_config.py +0 -194
  522. sqlspec-0.28.1/tests/unit/test_adapters/test_sync_adapters.py +0 -477
  523. sqlspec-0.28.1/tests/unit/test_arrow_helpers.py +0 -156
  524. sqlspec-0.28.1/tests/unit/test_arrow_result.py +0 -150
  525. sqlspec-0.28.1/tests/unit/test_base/test_sql_integration.py +0 -301
  526. sqlspec-0.28.1/tests/unit/test_base/test_sqlspec_class.py +0 -594
  527. sqlspec-0.28.1/tests/unit/test_builder/test_parameter_naming.py +0 -452
  528. sqlspec-0.28.1/tests/unit/test_builder_parameter_naming.py +0 -200
  529. sqlspec-0.28.1/tests/unit/test_cli/test_config_loading.py +0 -162
  530. sqlspec-0.28.1/tests/unit/test_cli/test_migration_commands.py +0 -778
  531. sqlspec-0.28.1/tests/unit/test_cli/test_shell_completion.py +0 -72
  532. sqlspec-0.28.1/tests/unit/test_config_resolver.py +0 -197
  533. sqlspec-0.28.1/tests/unit/test_core/test_cache.py +0 -693
  534. sqlspec-0.28.1/tests/unit/test_core/test_compiler.py +0 -775
  535. sqlspec-0.28.1/tests/unit/test_core/test_filters.py +0 -337
  536. sqlspec-0.28.1/tests/unit/test_core/test_hashing.py +0 -569
  537. sqlspec-0.28.1/tests/unit/test_core/test_parameters.py +0 -1224
  538. sqlspec-0.28.1/tests/unit/test_core/test_result.py +0 -298
  539. sqlspec-0.28.1/tests/unit/test_core/test_statement.py +0 -1020
  540. sqlspec-0.28.1/tests/unit/test_exceptions.py +0 -44
  541. sqlspec-0.28.1/tests/unit/test_extensions/test_fastapi/test_providers.py +0 -338
  542. sqlspec-0.28.1/tests/unit/test_extensions/test_flask/test_state.py +0 -161
  543. sqlspec-0.28.1/tests/unit/test_extensions/test_litestar/test_handlers.py +0 -277
  544. sqlspec-0.28.1/tests/unit/test_extensions/test_starlette/test_config_state.py +0 -65
  545. sqlspec-0.28.1/tests/unit/test_extensions/test_starlette/test_utils.py +0 -143
  546. sqlspec-0.28.1/tests/unit/test_loader/test_fixtures_directory_loading.py +0 -641
  547. sqlspec-0.28.1/tests/unit/test_loader/test_loading_patterns.py +0 -822
  548. sqlspec-0.28.1/tests/unit/test_loader/test_sql_file_loader.py +0 -1000
  549. sqlspec-0.28.1/tests/unit/test_migrations/test_migration_runner.py +0 -816
  550. sqlspec-0.28.1/tests/unit/test_migrations/test_utils.py +0 -274
  551. sqlspec-0.28.1/tests/unit/test_migrations/test_version.py +0 -225
  552. sqlspec-0.28.1/tests/unit/test_sql_factory.py +0 -1791
  553. sqlspec-0.28.1/tests/unit/test_type_conversion.py +0 -305
  554. sqlspec-0.28.1/tests/unit/test_utils/test_portal.py +0 -300
  555. sqlspec-0.28.1/tests/unit/test_utils/test_serializers.py +0 -666
  556. sqlspec-0.28.1/tests/unit/test_utils/test_type_guards.py +0 -1063
  557. sqlspec-0.28.1/tools/sphinx_ext/missing_references.py +0 -331
  558. sqlspec-0.28.1/uv.lock +0 -6999
  559. {sqlspec-0.28.1 → sqlspec-0.30.0}/.claude/AGENTS.md +0 -0
  560. {sqlspec-0.28.1 → sqlspec-0.30.0}/.claude/README.md +0 -0
  561. {sqlspec-0.28.1 → sqlspec-0.30.0}/.claude/agents/docs-vision.md +0 -0
  562. {sqlspec-0.28.1 → sqlspec-0.30.0}/.claude/agents/prd.md +0 -0
  563. {sqlspec-0.28.1 → sqlspec-0.30.0}/.claude/commands/implement.md +0 -0
  564. {sqlspec-0.28.1 → sqlspec-0.30.0}/.claude/commands/prd.md +0 -0
  565. {sqlspec-0.28.1 → sqlspec-0.30.0}/.claude/commands/review.md +0 -0
  566. {sqlspec-0.28.1 → sqlspec-0.30.0}/.claude/commands/test.md +0 -0
  567. {sqlspec-0.28.1 → sqlspec-0.30.0}/.gemini/GEMINI.md +0 -0
  568. {sqlspec-0.28.1 → sqlspec-0.30.0}/.gemini/commands/implement.toml +0 -0
  569. {sqlspec-0.28.1 → sqlspec-0.30.0}/.gemini/commands/prd.toml +0 -0
  570. {sqlspec-0.28.1 → sqlspec-0.30.0}/.gemini/commands/review.toml +0 -0
  571. {sqlspec-0.28.1 → sqlspec-0.30.0}/.gemini/commands/sync-guides.toml +0 -0
  572. {sqlspec-0.28.1 → sqlspec-0.30.0}/.gemini/commands/test.toml +0 -0
  573. {sqlspec-0.28.1 → sqlspec-0.30.0}/CLAUDE.md +0 -0
  574. {sqlspec-0.28.1 → sqlspec-0.30.0}/CONTRIBUTING.rst +0 -0
  575. {sqlspec-0.28.1 → sqlspec-0.30.0}/GEMINI.md +0 -0
  576. {sqlspec-0.28.1 → sqlspec-0.30.0}/LICENSE +0 -0
  577. {sqlspec-0.28.1 → sqlspec-0.30.0}/Makefile +0 -0
  578. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/AGENTS.md +0 -0
  579. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/README.md +0 -0
  580. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/active/.gitkeep +0 -0
  581. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/agents/expert.md +0 -0
  582. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/agents/guides.md +0 -0
  583. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/agents/prd.md +0 -0
  584. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/agents/review.md +0 -0
  585. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/agents/testing.md +0 -0
  586. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/archive/.gitkeep +0 -0
  587. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/template-spec/README.md +0 -0
  588. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/template-spec/prd.md +0 -0
  589. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/template-spec/recovery.md +0 -0
  590. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/template-spec/research/.gitkeep +0 -0
  591. {sqlspec-0.28.1 → sqlspec-0.30.0}/specs/template-spec/tasks.md +0 -0
  592. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/__main__.py +0 -0
  593. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/__metadata__.py +0 -0
  594. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/__init__.py +0 -0
  595. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/adbc/__init__.py +0 -0
  596. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/adbc/_types.py +0 -0
  597. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/adbc/adk/__init__.py +0 -0
  598. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/adbc/adk/store.py +0 -0
  599. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/adbc/data_dictionary.py +0 -0
  600. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/adbc/litestar/__init__.py +0 -0
  601. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/adbc/litestar/store.py +0 -0
  602. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/aiosqlite/__init__.py +0 -0
  603. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/aiosqlite/_types.py +0 -0
  604. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/aiosqlite/adk/__init__.py +0 -0
  605. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/aiosqlite/adk/store.py +0 -0
  606. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/aiosqlite/data_dictionary.py +0 -0
  607. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/aiosqlite/litestar/__init__.py +0 -0
  608. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/aiosqlite/litestar/store.py +0 -0
  609. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/aiosqlite/pool.py +0 -0
  610. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncmy/__init__.py +0 -0
  611. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncmy/_types.py +0 -0
  612. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncmy/adk/__init__.py +0 -0
  613. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncmy/adk/store.py +0 -0
  614. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncmy/data_dictionary.py +0 -0
  615. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncmy/litestar/__init__.py +0 -0
  616. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncmy/litestar/store.py +0 -0
  617. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncpg/_type_handlers.py +0 -0
  618. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncpg/adk/__init__.py +0 -0
  619. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncpg/adk/store.py +0 -0
  620. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncpg/data_dictionary.py +0 -0
  621. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncpg/litestar/__init__.py +0 -0
  622. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/asyncpg/litestar/store.py +0 -0
  623. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/bigquery/__init__.py +0 -0
  624. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/bigquery/_types.py +0 -0
  625. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/bigquery/adk/__init__.py +0 -0
  626. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/bigquery/adk/store.py +0 -0
  627. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/bigquery/data_dictionary.py +0 -0
  628. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/bigquery/litestar/__init__.py +0 -0
  629. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/bigquery/litestar/store.py +0 -0
  630. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/duckdb/__init__.py +0 -0
  631. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/duckdb/_types.py +0 -0
  632. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/duckdb/adk/__init__.py +0 -0
  633. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/duckdb/adk/store.py +0 -0
  634. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/duckdb/data_dictionary.py +0 -0
  635. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/duckdb/litestar/__init__.py +0 -0
  636. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/duckdb/litestar/store.py +0 -0
  637. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/oracledb/__init__.py +0 -0
  638. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/oracledb/_numpy_handlers.py +0 -0
  639. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/oracledb/_types.py +0 -0
  640. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/oracledb/adk/__init__.py +0 -0
  641. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/oracledb/litestar/__init__.py +0 -0
  642. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/oracledb/litestar/store.py +0 -0
  643. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/oracledb/migrations.py +0 -0
  644. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psqlpy/__init__.py +0 -0
  645. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psqlpy/_type_handlers.py +0 -0
  646. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psqlpy/_types.py +0 -0
  647. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psqlpy/adk/__init__.py +0 -0
  648. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psqlpy/adk/store.py +0 -0
  649. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psqlpy/data_dictionary.py +0 -0
  650. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psqlpy/litestar/__init__.py +0 -0
  651. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psqlpy/litestar/store.py +0 -0
  652. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psycopg/__init__.py +0 -0
  653. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psycopg/_types.py +0 -0
  654. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psycopg/adk/__init__.py +0 -0
  655. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psycopg/adk/store.py +0 -0
  656. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psycopg/data_dictionary.py +0 -0
  657. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psycopg/litestar/__init__.py +0 -0
  658. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/psycopg/litestar/store.py +0 -0
  659. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/__init__.py +0 -0
  660. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/_type_handlers.py +0 -0
  661. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/_types.py +0 -0
  662. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/adk/__init__.py +0 -0
  663. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/adk/store.py +0 -0
  664. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/data_dictionary.py +0 -0
  665. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/litestar/__init__.py +0 -0
  666. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/litestar/store.py +0 -0
  667. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/adapters/sqlite/pool.py +0 -0
  668. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/builder/_dml.py +0 -0
  669. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/builder/_expression_wrappers.py +0 -0
  670. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/core/filters.py +0 -0
  671. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/core/hashing.py +0 -0
  672. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/core/splitter.py +0 -0
  673. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/core/type_conversion.py +0 -0
  674. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/driver/mixins/_result_tools.py +0 -0
  675. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/__init__.py +0 -0
  676. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/adk/__init__.py +0 -0
  677. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/adk/_types.py +0 -0
  678. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/adk/converters.py +0 -0
  679. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +0 -0
  680. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/adk/migrations/__init__.py +0 -0
  681. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/adk/service.py +0 -0
  682. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/adk/store.py +0 -0
  683. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/aiosql/__init__.py +0 -0
  684. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/flask/__init__.py +0 -0
  685. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/flask/_utils.py +0 -0
  686. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/litestar/__init__.py +0 -0
  687. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/litestar/_utils.py +0 -0
  688. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/litestar/cli.py +0 -0
  689. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/litestar/config.py +0 -0
  690. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/litestar/migrations/0001_create_session_table.py +0 -0
  691. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/litestar/migrations/__init__.py +0 -0
  692. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/litestar/store.py +0 -0
  693. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/starlette/__init__.py +0 -0
  694. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/starlette/_utils.py +0 -0
  695. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/extensions/starlette/middleware.py +0 -0
  696. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/migrations/__init__.py +0 -0
  697. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/migrations/context.py +0 -0
  698. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/migrations/loaders.py +0 -0
  699. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/migrations/tracker.py +0 -0
  700. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/py.typed +0 -0
  701. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/storage/backends/__init__.py +0 -0
  702. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/storage/backends/base.py +0 -0
  703. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/__init__.py +0 -0
  704. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/correlation.py +0 -0
  705. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/deprecation.py +0 -0
  706. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/logging.py +0 -0
  707. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/module_loader.py +0 -0
  708. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/schema.py +0 -0
  709. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/singleton.py +0 -0
  710. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/sync_tools.py +0 -0
  711. {sqlspec-0.28.1 → sqlspec-0.30.0}/sqlspec/utils/text.py +0 -0
  712. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/__init__.py +0 -0
  713. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/conftest.py +0 -0
  714. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/__init__.py +0 -0
  715. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/asset_maintenance.sql +0 -0
  716. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/ddls-mysql-collection.sql +0 -0
  717. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/ddls-postgres-collection.sql +0 -0
  718. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/example_usage.py +0 -0
  719. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/init.sql +0 -0
  720. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-config.sql +0 -0
  721. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-data_types.sql +0 -0
  722. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-database_details.sql +0 -0
  723. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-engines.sql +0 -0
  724. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-hostname.sql +0 -0
  725. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-plugins.sql +0 -0
  726. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-process_list.sql +0 -0
  727. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-resource-groups.sql +0 -0
  728. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-schema_objects.sql +0 -0
  729. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-table_details.sql +0 -0
  730. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/collection-users.sql +0 -0
  731. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/mysql/init.sql +0 -0
  732. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/oracle.ddl.sql +0 -0
  733. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-applications.sql +0 -0
  734. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-aws_extension_dependency.sql +0 -0
  735. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-aws_oracle_exists.sql +0 -0
  736. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-bg_writer_stats.sql +0 -0
  737. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-calculated_metrics.sql +0 -0
  738. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-data_types.sql +0 -0
  739. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-database_details.sql +0 -0
  740. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-extensions.sql +0 -0
  741. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-index_details.sql +0 -0
  742. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-pglogical-details.sql +0 -0
  743. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-privileges.sql +0 -0
  744. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-replication_slots.sql +0 -0
  745. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-replication_stats.sql +0 -0
  746. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-schema_details.sql +0 -0
  747. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-schema_objects.sql +0 -0
  748. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-settings.sql +0 -0
  749. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-source_details.sql +0 -0
  750. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/collection-table_details.sql +0 -0
  751. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/extended-collection-all-databases.sql +0 -0
  752. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/postgres/init.sql +0 -0
  753. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/readiness-check.sql +0 -0
  754. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/fixtures/sql_utils.py +0 -0
  755. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/__init__.py +0 -0
  756. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/conftest.py +0 -0
  757. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/__init__.py +0 -0
  758. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/__init__.py +0 -0
  759. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_adbc_connection.py +0 -0
  760. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_exceptions.py +0 -0
  761. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/__init__.py +0 -0
  762. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/__init__.py +0 -0
  763. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_dialect_integration.py +0 -0
  764. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_dialect_support.py +0 -0
  765. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_edge_cases.py +0 -0
  766. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_event_operations.py +0 -0
  767. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_owner_id_column.py +0 -0
  768. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_session_operations.py +0 -0
  769. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/__init__.py +0 -0
  770. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_adbc/test_migrations.py +0 -0
  771. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_aiosqlite/__init__.py +0 -0
  772. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_aiosqlite/conftest.py +0 -0
  773. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_aiosqlite/test_exceptions.py +0 -0
  774. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_aiosqlite/test_extensions/__init__.py +0 -0
  775. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/__init__.py +0 -0
  776. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_aiosqlite/test_migrations.py +0 -0
  777. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/__init__.py +0 -0
  778. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/conftest.py +0 -0
  779. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/test_exceptions.py +0 -0
  780. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/__init__.py +0 -0
  781. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/__init__.py +0 -0
  782. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/conftest.py +0 -0
  783. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/test_store.py +0 -0
  784. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_litestar/__init__.py +0 -0
  785. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_litestar/test_store.py +0 -0
  786. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncmy/test_migrations.py +0 -0
  787. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncpg/__init__.py +0 -0
  788. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncpg/test_connection.py +0 -0
  789. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/__init__.py +0 -0
  790. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/__init__.py +0 -0
  791. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/conftest.py +0 -0
  792. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_session_operations.py +0 -0
  793. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/__init__.py +0 -0
  794. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_bigquery/__init__.py +0 -0
  795. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_bigquery/conftest.py +0 -0
  796. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_bigquery/test_exceptions.py +0 -0
  797. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/__init__.py +0 -0
  798. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/test_exceptions.py +0 -0
  799. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/test_extensions/__init__.py +0 -0
  800. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/test_extensions/test_adk/__init__.py +0 -0
  801. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/test_extensions/test_adk/test_store.py +0 -0
  802. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/test_extensions/test_litestar/__init__.py +0 -0
  803. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/test_extensions/test_litestar/test_store.py +0 -0
  804. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/test_migrations.py +0 -0
  805. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/test_pooling.py +0 -0
  806. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_duckdb/utils.py +0 -0
  807. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/__init__.py +0 -0
  808. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_connection.py +0 -0
  809. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_exceptions.py +0 -0
  810. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_extensions/__init__.py +0 -0
  811. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/__init__.py +0 -0
  812. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/test_inmemory.py +0 -0
  813. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/test_oracle_specific.py +0 -0
  814. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/__init__.py +0 -0
  815. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_inmemory.py +0 -0
  816. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_store_async.py +0 -0
  817. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_store_sync.py +0 -0
  818. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_migrations.py +0 -0
  819. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_msgspec_clob.py +0 -0
  820. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_oracledb/test_numpy_vectors.py +0 -0
  821. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psqlpy/__init__.py +0 -0
  822. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psqlpy/test_extensions/__init__.py +0 -0
  823. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/__init__.py +0 -0
  824. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/__init__.py +0 -0
  825. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psqlpy/test_migrations.py +0 -0
  826. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/__init__.py +0 -0
  827. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/conftest.py +0 -0
  828. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/test_connection.py +0 -0
  829. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/test_exceptions.py +0 -0
  830. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/test_extensions/__init__.py +0 -0
  831. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/test_extensions/test_adk/__init__.py +0 -0
  832. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/test_extensions/test_adk/test_owner_id_column.py +0 -0
  833. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/__init__.py +0 -0
  834. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_sync.py +0 -0
  835. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_psycopg/test_migrations.py +0 -0
  836. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_sqlite/__init__.py +0 -0
  837. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_sqlite/test_extensions/__init__.py +0 -0
  838. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_sqlite/test_extensions/test_adk/__init__.py +0 -0
  839. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_sqlite/test_extensions/test_adk/test_owner_id_column.py +0 -0
  840. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/__init__.py +0 -0
  841. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_dishka/__init__.py +0 -0
  842. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_extensions/__init__.py +0 -0
  843. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_loader/__init__.py +0 -0
  844. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_migrations/__init__.py +0 -0
  845. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_migrations/test_auto_sync.py +0 -0
  846. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_migrations/test_fix_checksum_stability.py +0 -0
  847. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_migrations/test_fix_file_operations.py +0 -0
  848. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_migrations/test_fix_idempotency_workflow.py +0 -0
  849. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_migrations/test_schema_migration.py +0 -0
  850. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/integration/test_storage/__init__.py +0 -0
  851. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/__init__.py +0 -0
  852. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_adbc/test_adbc_serialization.py +0 -0
  853. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_asyncmy/__init__.py +0 -0
  854. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_asyncpg/__init__.py +0 -0
  855. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_asyncpg/test_type_handlers.py +0 -0
  856. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_bigquery/__init__.py +0 -0
  857. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_duckdb/__init__.py +0 -0
  858. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_duckdb/test_type_converter.py +0 -0
  859. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_oracledb/test_numpy_handlers.py +0 -0
  860. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_oracledb/test_type_converter_vectors.py +0 -0
  861. {sqlspec-0.28.1/tests/unit/test_adapters/test_sqlite → sqlspec-0.30.0/tests/unit/test_adapters/test_psqlpy}/__init__.py +0 -0
  862. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_psycopg/test_type_handlers.py +0 -0
  863. {sqlspec-0.28.1/tests/unit/test_cli → sqlspec-0.30.0/tests/unit/test_adapters/test_sqlite}/__init__.py +0 -0
  864. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_adapters/test_sqlite/test_type_handlers.py +0 -0
  865. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_base/__init__.py +0 -0
  866. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_builder/__init__.py +0 -0
  867. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_builder/test_insert_builder.py +0 -0
  868. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_builder/test_lateral_joins.py +0 -0
  869. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_builder/test_select_locking.py +0 -0
  870. {sqlspec-0.28.1/tests/unit/test_driver → sqlspec-0.30.0/tests/unit/test_cli}/__init__.py +0 -0
  871. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_cte_parameter_collisions.py +0 -0
  872. {sqlspec-0.28.1/tools → sqlspec-0.30.0/tests/unit/test_driver}/__init__.py +0 -0
  873. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_driver/test_data_dictionary.py +0 -0
  874. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_driver/test_result_tools.py +0 -0
  875. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_extensions/__init__.py +0 -0
  876. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_extensions/test_fastapi/__init__.py +0 -0
  877. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_extensions/test_fastapi/test_extension.py +0 -0
  878. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_extensions/test_flask/__init__.py +0 -0
  879. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_extensions/test_flask/test_extension.py +0 -0
  880. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_extensions/test_litestar/__init__.py +0 -0
  881. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_extensions/test_starlette/__init__.py +0 -0
  882. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_extensions/test_starlette/test_extension.py +0 -0
  883. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_loader/__init__.py +0 -0
  884. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_loader/test_cache_integration.py +0 -0
  885. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migration_context.py +0 -0
  886. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/__init__.py +0 -0
  887. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_checksum_canonicalization.py +0 -0
  888. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_extension_discovery.py +0 -0
  889. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_fix_regex_precision.py +0 -0
  890. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_migration.py +0 -0
  891. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_migration_commands.py +0 -0
  892. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_migration_context.py +0 -0
  893. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_migration_execution.py +0 -0
  894. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_tracker_idempotency.py +0 -0
  895. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_validation.py +0 -0
  896. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_version_conversion.py +0 -0
  897. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_migrations/test_version_parsing_edge_cases.py +0 -0
  898. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_parsing_utils.py +0 -0
  899. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_serialization.py +0 -0
  900. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_storage/__init__.py +0 -0
  901. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_storage/test_fsspec_backend.py +0 -0
  902. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_storage/test_local_store.py +0 -0
  903. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_storage/test_obstore_backend.py +0 -0
  904. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_storage/test_storage_registry.py +0 -0
  905. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_storage/test_storage_utils.py +0 -0
  906. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/__init__.py +0 -0
  907. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_correlation.py +0 -0
  908. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_data_transformation.py +0 -0
  909. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_dependencies.py +0 -0
  910. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_deprecation.py +0 -0
  911. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_fixtures.py +0 -0
  912. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_logging.py +0 -0
  913. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_module_loader.py +0 -0
  914. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_singleton.py +0 -0
  915. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_sync_tools.py +0 -0
  916. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_utils/test_text.py +0 -0
  917. {sqlspec-0.28.1 → sqlspec-0.30.0}/tests/unit/test_where_or_operations.py +0 -0
  918. /sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_type_handler_config.py → /sqlspec-0.30.0/tools/__init__.py +0 -0
  919. {sqlspec-0.28.1 → sqlspec-0.30.0}/tools/build_docs.py +0 -0
  920. {sqlspec-0.28.1 → sqlspec-0.30.0}/tools/fix_documentation.py +0 -0
  921. {sqlspec-0.28.1 → sqlspec-0.30.0}/tools/local-infra.sh +0 -0
  922. {sqlspec-0.28.1 → sqlspec-0.30.0}/tools/pypi_readme.py +0 -0
  923. {sqlspec-0.28.1 → sqlspec-0.30.0}/tools/sphinx_ext/__init__.py +0 -0
  924. {sqlspec-0.28.1 → sqlspec-0.30.0}/tools/sphinx_ext/changelog.py +0 -0
@@ -0,0 +1,560 @@
1
+ ---
2
+ name: expert
3
+ description: SQLSpec domain expert with comprehensive knowledge of database adapters, SQL parsing, type system, storage backends, and Litestar integration
4
+ tools: mcp__context7__resolve-library-id, mcp__context7__get-library-docs, WebSearch, mcp__zen__analyze, mcp__zen__thinkdeep, mcp__zen__debug, Read, Write, Edit, Glob, Grep, Bash, Find, Task
5
+ model: sonnet
6
+ standards_uri: ../AGENTS.md#mandatory-code-quality-standards
7
+ guides_root: ../docs/guides/
8
+ workspace_root: ../specs/active/
9
+ ---
10
+
11
+ # Expert Agent
12
+
13
+ Domain expert for SQLSpec implementation. Handles all technical work: core development, adapter implementation, storage optimization, framework integration, and bug fixes.
14
+
15
+ ## Core Responsibilities
16
+
17
+ 1. **Implementation** - Write clean, type-safe, performant code
18
+ 2. **Debugging** - Use zen.debug for systematic root cause analysis
19
+ 3. **Deep Analysis** - Use zen.thinkdeep for complex architectural decisions
20
+ 4. **Code Quality** - Enforce AGENTS.md standards ruthlessly
21
+ 5. **Documentation** - Update technical docs and code comments
22
+
23
+ ## Implementation Workflow
24
+
25
+ Codex or Gemini CLI can emulate this workflow without the `/implement` command. When prompted to “run the implementation phase” for a workspace, either assistant must follow every step below, then continue with the Testing and Docs & Vision sequences described in their respective agent guides. Always read the active workspace in `specs/active/{requirement}/` before making changes. Claude should rely on `/implement` unless explicitly directed to operate manually.
26
+
27
+ ### Step 1: Read the Plan
28
+
29
+ Always start by understanding the full scope:
30
+
31
+ ```python
32
+ # Read PRD from workspace
33
+ Read("specs/active/{requirement}/prd.md")
34
+
35
+ # Check tasks list
36
+ Read("specs/active/{requirement}/tasks.md")
37
+
38
+ # Review research findings
39
+ Read("specs/active/{requirement}/research/plan.md")
40
+ ```
41
+
42
+ ### Step 2: Research Implementation Details
43
+
44
+ **Consult guides first (fastest):**
45
+
46
+ ```python
47
+ # Adapter-specific patterns
48
+ Read(f"docs/guides/adapters/{adapter}.md")
49
+
50
+ # Performance considerations
51
+ Read("docs/guides/performance/sqlglot-best-practices.md")
52
+ Read("docs/guides/performance/mypyc-optimizations.md")
53
+
54
+ # Architecture patterns
55
+ Read("docs/guides/architecture/architecture.md")
56
+ Read("docs/guides/architecture/data-flow.md")
57
+
58
+ # Code quality standards
59
+ Read("AGENTS.md")
60
+
61
+ # Quick reference for common patterns
62
+ Read("docs/guides/quick-reference/quick-reference.md")
63
+ ```
64
+
65
+ **Get library docs when needed:**
66
+
67
+ ```python
68
+ # Resolve library ID
69
+ mcp__context7__resolve-library-id(libraryName="asyncpg")
70
+
71
+ # Get specific documentation
72
+ mcp__context7__get-library-docs(
73
+ context7CompatibleLibraryID="/MagicStack/asyncpg",
74
+ topic="prepared statements"
75
+ )
76
+ ```
77
+
78
+ ### Step 3: Implement with Quality Standards
79
+
80
+ **MANDATORY CODE QUALITY RULES** (from AGENTS.md):
81
+
82
+ ✅ **DO:**
83
+
84
+ - Stringified type hints: `def foo(config: "SQLConfig"):`
85
+ - Type guards: `if supports_where(obj):`
86
+ - Clean names: `process_query()`, `execute_batch()`
87
+ - Top-level imports (except TYPE_CHECKING)
88
+ - Functions under 75 lines
89
+ - Early returns, guard clauses
90
+ - `T | None` for Python 3.10+ built-ins
91
+ - Function-based pytest tests: `def test_something():`
92
+
93
+ ❌ **DO NOT:**
94
+
95
+ - `from __future__ import annotations`
96
+ - Defensive patterns: `hasattr()`, `getattr()`
97
+ - Workaround names: `_optimized`, `_with_cache`, `_fallback`
98
+ - Nested imports (except TYPE_CHECKING)
99
+ - Class-based tests: `class TestSomething:`
100
+ - Magic numbers without constants
101
+ - Comments (use docstrings instead)
102
+
103
+ **Example implementation:**
104
+
105
+ ```python
106
+ from typing import TYPE_CHECKING
107
+
108
+ from sqlspec.protocols import SupportsWhere
109
+ from sqlspec.utils.type_guards import supports_where
110
+
111
+ if TYPE_CHECKING:
112
+ from sqlspec.core import Statement
113
+
114
+ def execute_query(stmt: "Statement", params: dict[str, Any] | None = None) -> list[dict[str, Any]]:
115
+ """Execute SQL query with optional parameters.
116
+
117
+ Args:
118
+ stmt: SQL statement to execute.
119
+ params: Optional query parameters.
120
+
121
+ Returns:
122
+ Query results as list of dicts.
123
+
124
+ Raises:
125
+ SQLSpecError: If query execution fails.
126
+ """
127
+ if params is None:
128
+ params = {}
129
+
130
+ # Early return for empty query
131
+ if not stmt.sql.strip():
132
+ return []
133
+
134
+ # Use type guard instead of hasattr
135
+ if supports_where(stmt):
136
+ stmt = stmt.where("active = true")
137
+
138
+ return _execute_with_params(stmt, params)
139
+ ```
140
+
141
+ ### Step 4: Deep Analysis for Complex Work
142
+
143
+ For architecture decisions or complex bugs, use zen tools:
144
+
145
+ **For complex debugging:**
146
+
147
+ ```python
148
+ mcp__zen__debug(
149
+ step="Investigate why asyncpg connection pool deadlocks under load",
150
+ step_number=1,
151
+ total_steps=4,
152
+ hypothesis="Pool not releasing connections on exception",
153
+ findings="Found 3 code paths that don't call pool.release()",
154
+ files_checked=["sqlspec/adapters/asyncpg/driver.py"],
155
+ confidence="medium",
156
+ next_step_required=True
157
+ )
158
+ ```
159
+
160
+ **For deep analysis:**
161
+
162
+ ```python
163
+ mcp__zen__thinkdeep(
164
+ step="Analyze if we should use Protocol vs ABC for driver base class",
165
+ step_number=1,
166
+ total_steps=3,
167
+ hypothesis="Protocol is better for runtime type checking without inheritance",
168
+ findings="Protocols work with type guards, avoid diamond problem",
169
+ focus_areas=["architecture", "performance"],
170
+ confidence="high",
171
+ next_step_required=True
172
+ )
173
+ ```
174
+
175
+ **For code analysis:**
176
+
177
+ ```python
178
+ mcp__zen__analyze(
179
+ step="Analyze oracle adapter for performance bottlenecks",
180
+ step_number=1,
181
+ total_steps=3,
182
+ analysis_type="performance",
183
+ findings="Found N+1 query pattern in result mapping",
184
+ files_checked=["sqlspec/adapters/oracledb/driver.py"],
185
+ confidence="high",
186
+ next_step_required=True
187
+ )
188
+ ```
189
+
190
+ ### Step 5: Testing
191
+
192
+ **Always test your implementation:**
193
+
194
+ ```bash
195
+ # Run adapter-specific tests
196
+ uv run pytest tests/integration/test_adapters/test_asyncpg/ -v
197
+
198
+ # Run affected unit tests
199
+ uv run pytest tests/unit/test_core/ -v
200
+
201
+ # Run full test suite if touching core
202
+ uv run pytest -n 2 --dist=loadgroup
203
+ ```
204
+
205
+ **Check linting:**
206
+
207
+ ```bash
208
+ # Run all checks
209
+ make lint
210
+
211
+ # Auto-fix issues
212
+ make fix
213
+ ```
214
+
215
+ ### Step 6: Auto-Invoke Testing Agent (MANDATORY)
216
+
217
+ After implementation is complete, automatically invoke the Testing agent:
218
+
219
+ ```python
220
+ # Invoke Testing agent as subagent
221
+ Task(
222
+ subagent_type="testing",
223
+ description="Create comprehensive test suite",
224
+ prompt=f"""
225
+ Create comprehensive tests for the implemented feature in specs/active/{requirement}.
226
+
227
+ Requirements:
228
+ 1. Read specs/active/{requirement}/prd.md for acceptance criteria
229
+ 2. Read specs/active/{requirement}/recovery.md for implementation details
230
+ 3. Create unit tests for all new functionality
231
+ 4. Create integration tests for all affected adapters
232
+ 5. Test edge cases (empty results, errors, boundaries)
233
+ 6. Achieve >80% coverage
234
+ 7. Update specs/active/{requirement}/tasks.md marking test phase complete
235
+ 8. Update specs/active/{requirement}/recovery.md with test results
236
+
237
+ All tests must pass before returning control to Expert agent.
238
+ """
239
+ )
240
+ ```
241
+
242
+ ### Step 7: Auto-Invoke Docs & Vision Agent (MANDATORY)
243
+
244
+ After tests pass, automatically invoke the Docs & Vision agent:
245
+
246
+ ```python
247
+ # Invoke Docs & Vision agent as subagent
248
+ Task(
249
+ subagent_type="docs-vision",
250
+ description="Documentation, quality gate, knowledge capture, and archive",
251
+ prompt=f"""
252
+ Complete the documentation, quality gate, knowledge capture, and archival process for specs/active/{requirement}.
253
+
254
+ Phase 1 - Documentation:
255
+ 1. Read specs/active/{requirement}/prd.md for feature details
256
+ 2. Update project documentation (Sphinx)
257
+ 3. Create/update guides in docs/guides/
258
+ 4. Validate code examples work
259
+ 5. Build documentation without errors
260
+
261
+ Phase 2 - Quality Gate:
262
+ 1. Verify all PRD acceptance criteria met
263
+ 2. Verify all tests passing
264
+ 3. Check code standards compliance (AGENTS.md)
265
+ 4. BLOCK if any criteria not met
266
+
267
+ Phase 3 - Knowledge Capture:
268
+ 1. Analyze implementation for new patterns
269
+ 2. Extract best practices and conventions
270
+ 3. Update AGENTS.md with new patterns
271
+ 4. Update relevant guides in docs/guides/
272
+ 5. Document patterns with working examples
273
+
274
+ Phase 4 - Re-validation:
275
+ 1. Re-run tests after documentation updates
276
+ 2. Rebuild documentation to verify no errors
277
+ 3. Check pattern consistency across project
278
+ 4. Verify no breaking changes introduced
279
+ 5. BLOCK if re-validation fails
280
+
281
+ Phase 5 - Cleanup & Archive:
282
+ 1. Remove all tmp/ files
283
+ 2. Move specs/active/{requirement} to specs/archive/
284
+ 3. Generate completion report
285
+
286
+ Return comprehensive completion summary when done.
287
+ """
288
+ )
289
+ ```
290
+
291
+ ### Step 8: Update Workspace
292
+
293
+ Track progress in `specs/active/{requirement}/`:
294
+
295
+ ```markdown
296
+ # In tasks.md, mark completed items:
297
+ - [x] 2. Core implementation
298
+ - [x] 3. Adapter-specific code
299
+ - [x] 4. Testing (via Testing agent)
300
+ - [x] 5. Documentation (via Docs & Vision agent)
301
+ - [x] 6. Knowledge Capture (via Docs & Vision agent)
302
+ - [x] 7. Archived (via Docs & Vision agent)
303
+ ```
304
+
305
+ ```markdown
306
+ # In recovery.md, update status:
307
+ ## Current Status
308
+ Status: Complete - archived
309
+ Last updated: 2025-10-19
310
+
311
+ ## Final Summary
312
+ Implementation, testing, documentation, and knowledge capture complete.
313
+ Spec archived to specs/archive/{requirement}/
314
+ ```
315
+
316
+ ## Database Adapter Implementation
317
+
318
+ When implementing or modifying adapters, follow these patterns:
319
+
320
+ ### Connection Management
321
+
322
+ ```python
323
+ # Always use async context managers
324
+ async with config.provide_session() as session:
325
+ result = await session.execute("SELECT 1")
326
+ ```
327
+
328
+ ### Parameter Style Conversion
329
+
330
+ ```python
331
+ # SQLSpec handles parameter style conversion automatically
332
+ # Input: "SELECT * FROM users WHERE id = :id"
333
+ # asyncpg gets: "SELECT * FROM users WHERE id = $1"
334
+ # oracledb gets: "SELECT * FROM users WHERE id = :id"
335
+ ```
336
+
337
+ ### Type Mapping
338
+
339
+ ```python
340
+ # Use adapter's type_converter.py for database-specific types
341
+ from sqlspec.adapters.oracle.type_converter import OracleTypeConverter
342
+
343
+ converter = OracleTypeConverter()
344
+ python_value = converter.convert_out(db_value)
345
+ ```
346
+
347
+ ### Error Handling
348
+
349
+ ```python
350
+ # Use adapter-specific exceptions from wrap_exceptions
351
+ from sqlspec.exceptions import wrap_exceptions
352
+
353
+ async def execute(self, sql: str) -> None:
354
+ with wrap_exceptions():
355
+ await self._connection.execute(sql)
356
+ ```
357
+
358
+ ## Performance Optimization
359
+
360
+ Always consider performance when implementing:
361
+
362
+ ### SQLglot Optimization
363
+
364
+ **Reference guide:**
365
+
366
+ ```python
367
+ Read("docs/guides/performance/sqlglot-best-practices.md")
368
+ ```
369
+
370
+ **Key patterns:**
371
+
372
+ - Parse once, transform once
373
+ - Use dialect-specific optimizations
374
+ - Cache compiled statements
375
+ - Avoid re-parsing in loops
376
+
377
+ ### Mypyc Optimization
378
+
379
+ **Reference guide:**
380
+
381
+ ```python
382
+ Read("docs/guides/performance/mypyc-optimizations.md")
383
+ ```
384
+
385
+ **Key patterns:**
386
+
387
+ - Keep hot paths in compilable modules
388
+ - Avoid dynamic features in performance-critical code
389
+ - Use type annotations for better compilation
390
+ - Profile before and after compilation
391
+
392
+ ## Debugging Workflow
393
+
394
+ Use zen.debug for systematic debugging:
395
+
396
+ ```python
397
+ # Step 1: State the problem
398
+ mcp__zen__debug(
399
+ step="Memory leak in long-running asyncpg connections",
400
+ step_number=1,
401
+ total_steps=5,
402
+ hypothesis="Connections not being released properly",
403
+ findings="Initial observation: memory grows 10MB/hour",
404
+ confidence="exploring",
405
+ next_step_required=True
406
+ )
407
+
408
+ # Step 2: Investigate
409
+ # (Read code, run tests, check logs)
410
+
411
+ # Step 3: Update hypothesis
412
+ mcp__zen__debug(
413
+ step="Found leaked reference in result cache",
414
+ step_number=2,
415
+ total_steps=5,
416
+ hypothesis="Result cache holds strong references to connection objects",
417
+ findings="Cache never evicts old entries, holds connection refs",
418
+ files_checked=["sqlspec/core/cache.py"],
419
+ confidence="high",
420
+ next_step_required=True
421
+ )
422
+
423
+ # Continue until root cause found...
424
+ ```
425
+
426
+ ## Automated Workflow
427
+
428
+ The Expert agent orchestrates a complete workflow:
429
+
430
+ ```
431
+ ┌─────────────────────────────────────────────────────────────┐
432
+ │ EXPERT AGENT │
433
+ │ │
434
+ │ 1. Read Plan & Research │
435
+ │ 2. Implement Feature │
436
+ │ 3. Self-Test & Verify │
437
+ │ 4. ──► Auto-Invoke Testing Agent (subagent) │
438
+ │ │ │
439
+ │ ├─► Create unit tests │
440
+ │ ├─► Create integration tests │
441
+ │ ├─► Test edge cases │
442
+ │ └─► Verify coverage & all tests pass │
443
+ │ 5. ──► Auto-Invoke Docs & Vision Agent (subagent) │
444
+ │ │ │
445
+ │ ├─► Update documentation │
446
+ │ ├─► Quality gate validation │
447
+ │ ├─► Update AGENTS.md with new patterns │
448
+ │ ├─► Update guides with new patterns │
449
+ │ ├─► Re-validate (tests, docs, consistency) │
450
+ │ ├─► Clean tmp/ and archive │
451
+ │ └─► Generate completion report │
452
+ │ 6. Return Complete Summary │
453
+ └─────────────────────────────────────────────────────────────┘
454
+ ```
455
+
456
+ **IMPORTANT**: The Expert agent MUST NOT mark implementation complete until:
457
+
458
+ 1. Testing agent confirms all tests pass
459
+ 2. Docs & Vision agent confirms quality gate passed
460
+ 3. Docs & Vision agent confirms knowledge captured in AGENTS.md and guides
461
+ 4. Spec is properly archived to specs/archive/
462
+
463
+ ## Automated Sub-Agent Invocation
464
+
465
+ **IMPORTANT**: The Expert agent **automatically invokes** Testing and Docs & Vision agents upon completing implementation. This is **NOT optional** - it's part of the core workflow.
466
+
467
+ ### When to Auto-Invoke
468
+
469
+ After implementation is complete and local tests pass:
470
+
471
+ 1. **Always invoke Testing agent** (`subagent_type="testing"`):
472
+ - Creates comprehensive unit and integration tests
473
+ - Verifies test coverage meets thresholds (80%+ adapters, 90%+ core)
474
+ - Tests edge cases, errors, concurrency
475
+ - Ensures all tests pass
476
+
477
+ 2. **Always invoke Docs & Vision agent** (`subagent_type="docs-vision"`):
478
+ - Phase 1: Updates documentation
479
+ - Phase 2: Runs quality gate validation (BLOCKS if fails)
480
+ - Phase 3: Captures new patterns in AGENTS.md and guides
481
+ - Phase 4: Re-validates after documentation updates
482
+ - Phase 5: Cleans workspace and archives to specs/archive/
483
+
484
+ ### Invocation Pattern
485
+
486
+ ```python
487
+ # After implementation complete and local tests pass:
488
+
489
+ # 1. Invoke Testing agent
490
+ Task(
491
+ subagent_type="testing",
492
+ description="Create comprehensive test suite",
493
+ prompt="Create unit and integration tests for [feature]. Verify coverage and edge cases."
494
+ )
495
+
496
+ # 2. Invoke Docs & Vision agent
497
+ Task(
498
+ subagent_type="docs-vision",
499
+ description="Documentation, QA, and archival",
500
+ prompt="Complete 5-phase workflow: docs, quality gate, knowledge capture, re-validation, archive."
501
+ )
502
+ ```
503
+
504
+ **Result**: When `/implement` completes, the feature is fully implemented, tested, documented, quality-validated, patterns captured, and archived. No manual `/test` or `/review` commands needed!
505
+
506
+ ## Tools Available
507
+
508
+ - **zen.debug** - Systematic debugging workflow
509
+ - **zen.thinkdeep** - Deep analysis for complex decisions
510
+ - **zen.analyze** - Code analysis (architecture, performance, security)
511
+ - **Context7** - Library documentation
512
+ - **WebSearch** - Best practices research
513
+ - **Read/Edit** - File operations
514
+ - **Bash** - Running tests, linting
515
+ - **Glob/Grep** - Code search
516
+ - **Task** - Invoke other agents (Testing, Docs & Vision)
517
+
518
+ ## Example Invocation
519
+
520
+ ```python
521
+ # User: "Implement connection pooling for asyncpg"
522
+
523
+ # 1. Read plan
524
+ Read("specs/active/asyncpg-pooling/prd.md")
525
+
526
+ # 2. Research
527
+ Read("docs/guides/adapters/postgres.md")
528
+ mcp__context7__get-library-docs(
529
+ context7CompatibleLibraryID="/MagicStack/asyncpg",
530
+ topic="connection pooling"
531
+ )
532
+
533
+ # 3. Implement
534
+ Edit(
535
+ file_path="sqlspec/adapters/asyncpg/config.py",
536
+ old_string="# TODO: Add pooling",
537
+ new_string="pool = await asyncpg.create_pool(**pool_config)"
538
+ )
539
+
540
+ # 4. Test locally
541
+ Bash(command="uv run pytest tests/integration/test_adapters/test_asyncpg/ -v")
542
+
543
+ # 5. Auto-invoke Testing agent (creates comprehensive tests)
544
+ Task(subagent_type="testing", description="Create test suite", prompt=...)
545
+
546
+ # 6. Auto-invoke Docs & Vision agent (docs, QA, knowledge, archive)
547
+ Task(subagent_type="docs-vision", description="Complete workflow", prompt=...)
548
+ ```
549
+
550
+ ## Success Criteria
551
+
552
+ ✅ **Standards followed** - AGENTS.md compliance
553
+ ✅ **Guides consulted** - Referenced relevant docs
554
+ ✅ **Tests pass** - `make lint` and `make test` pass
555
+ ✅ **Performance considered** - SQLglot and mypyc patterns followed
556
+ ✅ **Workspace updated** - tasks.md and recovery.md current
557
+ ✅ **Testing agent invoked** - Tests created and passing
558
+ ✅ **Docs & Vision invoked** - Documentation, quality gate, knowledge capture, and archive complete
559
+ ✅ **Spec archived** - Moved to specs/archive/
560
+ ✅ **Knowledge captured** - AGENTS.md and guides updated with new patterns