sqlspec 0.28.1__tar.gz → 0.29.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 (877) hide show
  1. sqlspec-0.29.0/.claude/agents/expert.md +560 -0
  2. sqlspec-0.29.0/.claude/agents/testing.md +465 -0
  3. sqlspec-0.29.0/.claude/bootstrap.md +1550 -0
  4. sqlspec-0.29.0/.gemini/bootstrap.md +2435 -0
  5. sqlspec-0.29.0/.gitignore +70 -0
  6. sqlspec-0.29.0/.pre-commit-config.yaml +52 -0
  7. sqlspec-0.29.0/AGENTS.md +3591 -0
  8. sqlspec-0.29.0/PKG-INFO +575 -0
  9. sqlspec-0.29.0/pyproject.toml +535 -0
  10. sqlspec-0.29.0/sqlspec/_serialization.py +312 -0
  11. sqlspec-0.29.0/sqlspec/_typing.py +815 -0
  12. sqlspec-0.29.0/sqlspec/adapters/adbc/config.py +430 -0
  13. sqlspec-0.29.0/sqlspec/adapters/adbc/driver.py +835 -0
  14. sqlspec-0.29.0/sqlspec/adapters/adbc/type_converter.py +153 -0
  15. sqlspec-0.29.0/sqlspec/adapters/aiosqlite/config.py +305 -0
  16. sqlspec-0.29.0/sqlspec/adapters/aiosqlite/driver.py +463 -0
  17. sqlspec-0.29.0/sqlspec/adapters/asyncmy/config.py +241 -0
  18. sqlspec-0.29.0/sqlspec/adapters/asyncmy/driver.py +632 -0
  19. sqlspec-0.29.0/sqlspec/adapters/asyncpg/config.py +458 -0
  20. sqlspec-0.29.0/sqlspec/adapters/asyncpg/driver.py +572 -0
  21. sqlspec-0.29.0/sqlspec/adapters/bigquery/config.py +283 -0
  22. sqlspec-0.29.0/sqlspec/adapters/bigquery/driver.py +921 -0
  23. sqlspec-0.29.0/sqlspec/adapters/bigquery/type_converter.py +125 -0
  24. sqlspec-0.29.0/sqlspec/adapters/duckdb/config.py +361 -0
  25. sqlspec-0.29.0/sqlspec/adapters/duckdb/driver.py +602 -0
  26. sqlspec-0.29.0/sqlspec/adapters/duckdb/type_converter.py +133 -0
  27. sqlspec-0.29.0/sqlspec/adapters/oracledb/_uuid_handlers.py +130 -0
  28. sqlspec-0.29.0/sqlspec/adapters/oracledb/adk/store.py +1632 -0
  29. sqlspec-0.29.0/sqlspec/adapters/oracledb/config.py +475 -0
  30. sqlspec-0.29.0/sqlspec/adapters/oracledb/driver.py +1071 -0
  31. sqlspec-0.29.0/sqlspec/adapters/oracledb/type_converter.py +207 -0
  32. sqlspec-0.29.0/sqlspec/adapters/psqlpy/config.py +270 -0
  33. sqlspec-0.29.0/sqlspec/adapters/psqlpy/driver.py +892 -0
  34. sqlspec-0.29.0/sqlspec/adapters/psqlpy/type_converter.py +102 -0
  35. sqlspec-0.29.0/sqlspec/adapters/psycopg/_type_handlers.py +82 -0
  36. sqlspec-0.29.0/sqlspec/adapters/psycopg/config.py +497 -0
  37. sqlspec-0.29.0/sqlspec/adapters/psycopg/driver.py +1067 -0
  38. sqlspec-0.29.0/sqlspec/adapters/sqlite/config.py +216 -0
  39. sqlspec-0.29.0/sqlspec/adapters/sqlite/driver.py +527 -0
  40. sqlspec-0.29.0/sqlspec/base.py +707 -0
  41. sqlspec-0.29.0/sqlspec/builder/__init__.py +146 -0
  42. sqlspec-0.29.0/sqlspec/builder/_base.py +719 -0
  43. sqlspec-0.29.0/sqlspec/builder/_column.py +364 -0
  44. sqlspec-0.29.0/sqlspec/builder/_ddl.py +1634 -0
  45. sqlspec-0.29.0/sqlspec/builder/_delete.py +82 -0
  46. sqlspec-0.29.0/sqlspec/builder/_factory.py +1537 -0
  47. sqlspec-0.29.0/sqlspec/builder/_insert.py +315 -0
  48. sqlspec-0.29.0/sqlspec/builder/_join.py +375 -0
  49. sqlspec-0.29.0/sqlspec/builder/_merge.py +800 -0
  50. sqlspec-0.29.0/sqlspec/builder/_parsing_utils.py +289 -0
  51. sqlspec-0.29.0/sqlspec/builder/_select.py +1606 -0
  52. sqlspec-0.29.0/sqlspec/builder/_update.py +161 -0
  53. sqlspec-0.29.0/sqlspec/config.py +1287 -0
  54. sqlspec-0.29.0/sqlspec/core/__init__.py +290 -0
  55. sqlspec-0.29.0/sqlspec/core/cache.py +785 -0
  56. sqlspec-0.29.0/sqlspec/core/compiler.py +597 -0
  57. sqlspec-0.29.0/sqlspec/core/parameters/__init__.py +64 -0
  58. sqlspec-0.29.0/sqlspec/core/parameters/_alignment.py +231 -0
  59. sqlspec-0.29.0/sqlspec/core/parameters/_converter.py +393 -0
  60. sqlspec-0.29.0/sqlspec/core/parameters/_processor.py +304 -0
  61. sqlspec-0.29.0/sqlspec/core/parameters/_registry.py +201 -0
  62. sqlspec-0.29.0/sqlspec/core/parameters/_transformers.py +226 -0
  63. sqlspec-0.29.0/sqlspec/core/parameters/_types.py +430 -0
  64. sqlspec-0.29.0/sqlspec/core/parameters/_validator.py +123 -0
  65. sqlspec-0.29.0/sqlspec/core/pipeline.py +187 -0
  66. sqlspec-0.29.0/sqlspec/core/result.py +943 -0
  67. sqlspec-0.29.0/sqlspec/core/statement.py +835 -0
  68. sqlspec-0.29.0/sqlspec/driver/_async.py +607 -0
  69. sqlspec-0.29.0/sqlspec/driver/_common.py +831 -0
  70. sqlspec-0.29.0/sqlspec/driver/_sync.py +609 -0
  71. sqlspec-0.29.0/sqlspec/driver/mixins/__init__.py +7 -0
  72. sqlspec-0.29.0/sqlspec/driver/mixins/_sql_translator.py +122 -0
  73. sqlspec-0.29.0/sqlspec/driver/mixins/storage.py +224 -0
  74. sqlspec-0.29.0/sqlspec/exceptions.py +281 -0
  75. sqlspec-0.29.0/sqlspec/extensions/aiosql/adapter.py +468 -0
  76. sqlspec-0.29.0/sqlspec/extensions/fastapi/__init__.py +19 -0
  77. sqlspec-0.29.0/sqlspec/extensions/fastapi/extension.py +341 -0
  78. sqlspec-0.29.0/sqlspec/extensions/fastapi/providers.py +543 -0
  79. sqlspec-0.29.0/sqlspec/extensions/flask/_state.py +72 -0
  80. sqlspec-0.29.0/sqlspec/extensions/flask/extension.py +402 -0
  81. sqlspec-0.29.0/sqlspec/extensions/litestar/plugin.py +514 -0
  82. sqlspec-0.29.0/sqlspec/extensions/litestar/providers.py +454 -0
  83. sqlspec-0.29.0/sqlspec/extensions/starlette/_state.py +26 -0
  84. sqlspec-0.29.0/sqlspec/extensions/starlette/extension.py +257 -0
  85. sqlspec-0.29.0/sqlspec/loader.py +656 -0
  86. sqlspec-0.29.0/sqlspec/migrations/fix.py +203 -0
  87. sqlspec-0.29.0/sqlspec/migrations/runner.py +855 -0
  88. sqlspec-0.29.0/sqlspec/migrations/validation.py +174 -0
  89. sqlspec-0.29.0/sqlspec/storage/__init__.py +46 -0
  90. sqlspec-0.29.0/sqlspec/storage/_utils.py +104 -0
  91. sqlspec-0.29.0/sqlspec/storage/backends/fsspec.py +398 -0
  92. sqlspec-0.29.0/sqlspec/storage/backends/local.py +377 -0
  93. sqlspec-0.29.0/sqlspec/storage/backends/obstore.py +580 -0
  94. sqlspec-0.29.0/sqlspec/storage/errors.py +104 -0
  95. sqlspec-0.29.0/sqlspec/storage/pipeline.py +574 -0
  96. sqlspec-0.29.0/sqlspec/storage/registry.py +289 -0
  97. sqlspec-0.29.0/sqlspec/typing.py +219 -0
  98. sqlspec-0.29.0/sqlspec/utils/arrow_helpers.py +95 -0
  99. sqlspec-0.29.0/sqlspec/utils/config_resolver.py +149 -0
  100. sqlspec-0.29.0/sqlspec/utils/data_transformation.py +114 -0
  101. sqlspec-0.29.0/sqlspec/utils/fixtures.py +250 -0
  102. sqlspec-0.29.0/sqlspec/utils/serializers.py +396 -0
  103. sqlspec-0.29.0/sqlspec/utils/type_converters.py +99 -0
  104. sqlspec-0.29.0/sqlspec/utils/type_guards.py +1324 -0
  105. sqlspec-0.29.0/sqlspec/utils/version.py +444 -0
  106. sqlspec-0.29.0/tests/integration/test_adapters/_storage_bridge_helpers.py +28 -0
  107. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/conftest.py +177 -0
  108. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_adbc_arrow_features.py +410 -0
  109. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_adbc_backends.py +269 -0
  110. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_adbc_driver.py +442 -0
  111. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_adbc_edge_cases.py +507 -0
  112. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_adbc_results.py +376 -0
  113. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_arrow_duckdb.py +214 -0
  114. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_data_dictionary.py +142 -0
  115. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/test_store.py +258 -0
  116. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_parameter_styles.py +650 -0
  117. sqlspec-0.29.0/tests/integration/test_adapters/test_adbc/test_storage_bridge.py +63 -0
  118. sqlspec-0.29.0/tests/integration/test_adapters/test_aiosqlite/test_arrow.py +233 -0
  119. sqlspec-0.29.0/tests/integration/test_adapters/test_aiosqlite/test_connection.py +246 -0
  120. sqlspec-0.29.0/tests/integration/test_adapters/test_aiosqlite/test_driver.py +518 -0
  121. sqlspec-0.29.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_numpy_serialization.py +254 -0
  122. sqlspec-0.29.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_store.py +234 -0
  123. sqlspec-0.29.0/tests/integration/test_adapters/test_aiosqlite/test_parameter_styles.py +379 -0
  124. sqlspec-0.29.0/tests/integration/test_adapters/test_aiosqlite/test_pooling.py +187 -0
  125. sqlspec-0.29.0/tests/integration/test_adapters/test_aiosqlite/test_storage_bridge.py +46 -0
  126. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncmy/test_arrow.py +202 -0
  127. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncmy/test_asyncmy_features.py +283 -0
  128. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncmy/test_config.py +220 -0
  129. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncmy/test_driver.py +464 -0
  130. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncmy/test_parameter_styles.py +696 -0
  131. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncmy/test_storage_bridge.py +63 -0
  132. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/conftest.py +40 -0
  133. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_arrow.py +204 -0
  134. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_cloud_connectors_integration.py +205 -0
  135. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_data_dictionary.py +107 -0
  136. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_driver.py +820 -0
  137. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_exceptions.py +118 -0
  138. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_execute_many.py +272 -0
  139. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/test_store.py +237 -0
  140. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_merge.py +244 -0
  141. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_merge_bulk.py +275 -0
  142. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_migrations.py +682 -0
  143. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_parameter_styles.py +622 -0
  144. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_schema_migration.py +323 -0
  145. sqlspec-0.29.0/tests/integration/test_adapters/test_asyncpg/test_storage_bridge.py +69 -0
  146. sqlspec-0.29.0/tests/integration/test_adapters/test_bigquery/test_arrow_bigquery.py +222 -0
  147. sqlspec-0.29.0/tests/integration/test_adapters/test_bigquery/test_bigquery_features.py +64 -0
  148. sqlspec-0.29.0/tests/integration/test_adapters/test_bigquery/test_config.py +147 -0
  149. sqlspec-0.29.0/tests/integration/test_adapters/test_bigquery/test_connection.py +18 -0
  150. sqlspec-0.29.0/tests/integration/test_adapters/test_bigquery/test_driver.py +414 -0
  151. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/conftest.py +26 -0
  152. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/test_arrow.py +193 -0
  153. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/test_connection.py +352 -0
  154. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/test_driver.py +605 -0
  155. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/test_driver_features.py +156 -0
  156. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/test_execute_many.py +295 -0
  157. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/test_mixed_parameter_styles.py +151 -0
  158. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/test_parameter_styles.py +888 -0
  159. sqlspec-0.29.0/tests/integration/test_adapters/test_duckdb/test_storage_bridge.py +69 -0
  160. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/conftest.py +59 -0
  161. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_arrow.py +258 -0
  162. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_driver_async.py +488 -0
  163. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_driver_sync.py +482 -0
  164. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_execute_many.py +323 -0
  165. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_merge.py +349 -0
  166. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_merge_bulk.py +306 -0
  167. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_oracle_features.py +361 -0
  168. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_parameter_styles.py +818 -0
  169. sqlspec-0.29.0/tests/integration/test_adapters/test_oracledb/test_uuid_binary.py +348 -0
  170. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/conftest.py +58 -0
  171. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_arrow.py +194 -0
  172. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_connection.py +119 -0
  173. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_driver.py +526 -0
  174. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_exceptions.py +118 -0
  175. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/test_owner_id_column.py +125 -0
  176. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/test_store.py +237 -0
  177. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_merge_bulk.py +275 -0
  178. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_parameter_styles.py +663 -0
  179. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_psqlpy_features.py +223 -0
  180. sqlspec-0.29.0/tests/integration/test_adapters/test_psqlpy/test_storage_bridge.py +65 -0
  181. sqlspec-0.29.0/tests/integration/test_adapters/test_psycopg/test_arrow.py +194 -0
  182. sqlspec-0.29.0/tests/integration/test_adapters/test_psycopg/test_async_copy.py +151 -0
  183. sqlspec-0.29.0/tests/integration/test_adapters/test_psycopg/test_driver.py +645 -0
  184. sqlspec-0.29.0/tests/integration/test_adapters/test_psycopg/test_execute_many.py +325 -0
  185. sqlspec-0.29.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_async.py +237 -0
  186. sqlspec-0.29.0/tests/integration/test_adapters/test_psycopg/test_merge_bulk.py +277 -0
  187. sqlspec-0.29.0/tests/integration/test_adapters/test_psycopg/test_parameter_styles.py +1033 -0
  188. sqlspec-0.29.0/tests/integration/test_adapters/test_psycopg/test_storage_bridge.py +153 -0
  189. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/conftest.py +128 -0
  190. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_arrow.py +156 -0
  191. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_data_dictionary.py +95 -0
  192. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_driver.py +531 -0
  193. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_driver_features.py +113 -0
  194. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_exceptions.py +112 -0
  195. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/test_store.py +253 -0
  196. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_migrations.py +513 -0
  197. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_parameter_styles.py +417 -0
  198. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_pooling.py +277 -0
  199. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_query_mixin.py +214 -0
  200. sqlspec-0.29.0/tests/integration/test_adapters/test_sqlite/test_storage_bridge.py +47 -0
  201. sqlspec-0.29.0/tests/integration/test_async_migrations.py +280 -0
  202. sqlspec-0.29.0/tests/integration/test_dishka/conftest.py +115 -0
  203. sqlspec-0.29.0/tests/integration/test_dishka/test_dishka_integration.py +538 -0
  204. sqlspec-0.29.0/tests/integration/test_extensions/test_fastapi/test_fastapi_filters_integration.py +395 -0
  205. sqlspec-0.29.0/tests/integration/test_extensions/test_fastapi/test_fastapi_integration.py +284 -0
  206. sqlspec-0.29.0/tests/integration/test_extensions/test_flask/test_flask_disable_di.py +76 -0
  207. sqlspec-0.29.0/tests/integration/test_extensions/test_flask/test_flask_integration.py +314 -0
  208. sqlspec-0.29.0/tests/integration/test_extensions/test_litestar/test_litestar_disable_di.py +69 -0
  209. sqlspec-0.29.0/tests/integration/test_extensions/test_starlette/test_starlette_disable_di.py +70 -0
  210. sqlspec-0.29.0/tests/integration/test_extensions/test_starlette/test_starlette_integration.py +225 -0
  211. sqlspec-0.29.0/tests/integration/test_loader/test_file_system_loading.py +766 -0
  212. sqlspec-0.29.0/tests/integration/test_migrations/test_upgrade_downgrade_versions.py +411 -0
  213. sqlspec-0.29.0/tests/integration/test_storage/test_storage_integration.py +867 -0
  214. sqlspec-0.29.0/tests/unit/adapters/test_oracledb_uuid_handlers.py +358 -0
  215. sqlspec-0.29.0/tests/unit/conftest.py +1007 -0
  216. sqlspec-0.29.0/tests/unit/test_adapters/conftest.py +506 -0
  217. sqlspec-0.29.0/tests/unit/test_adapters/test_adapter_implementations.py +427 -0
  218. sqlspec-0.29.0/tests/unit/test_adapters/test_async_adapters.py +554 -0
  219. sqlspec-0.29.0/tests/unit/test_adapters/test_asyncmy/test_config.py +36 -0
  220. sqlspec-0.29.0/tests/unit/test_adapters/test_asyncpg/test_cloud_connectors.py +544 -0
  221. sqlspec-0.29.0/tests/unit/test_adapters/test_asyncpg/test_config.py +36 -0
  222. sqlspec-0.29.0/tests/unit/test_adapters/test_bigquery/test_config.py +28 -0
  223. sqlspec-0.29.0/tests/unit/test_adapters/test_bigquery/test_parameters.py +13 -0
  224. sqlspec-0.29.0/tests/unit/test_adapters/test_duckdb/test_config.py +28 -0
  225. sqlspec-0.29.0/tests/unit/test_adapters/test_oracledb/test_adk_store.py +49 -0
  226. sqlspec-0.29.0/tests/unit/test_adapters/test_psqlpy/test_config.py +28 -0
  227. sqlspec-0.29.0/tests/unit/test_adapters/test_psycopg/test_config.py +58 -0
  228. sqlspec-0.29.0/tests/unit/test_adapters/test_sync_adapters.py +475 -0
  229. sqlspec-0.29.0/tests/unit/test_arrow_helpers.py +156 -0
  230. sqlspec-0.29.0/tests/unit/test_arrow_result.py +147 -0
  231. sqlspec-0.29.0/tests/unit/test_base/test_sql_integration.py +301 -0
  232. sqlspec-0.29.0/tests/unit/test_base/test_sqlspec_class.py +594 -0
  233. sqlspec-0.29.0/tests/unit/test_builder/test_copy_helpers.py +43 -0
  234. sqlspec-0.29.0/tests/unit/test_builder/test_dialect_override.py +154 -0
  235. sqlspec-0.29.0/tests/unit/test_builder/test_merge.py +649 -0
  236. sqlspec-0.29.0/tests/unit/test_builder/test_merge_dialect_validation.py +223 -0
  237. sqlspec-0.29.0/tests/unit/test_builder/test_merge_property_shorthand.py +176 -0
  238. sqlspec-0.29.0/tests/unit/test_builder/test_parameter_naming.py +455 -0
  239. sqlspec-0.29.0/tests/unit/test_builder/test_to_sql.py +98 -0
  240. sqlspec-0.29.0/tests/unit/test_builder/test_to_sql_edge_cases.py +273 -0
  241. sqlspec-0.29.0/tests/unit/test_builder/test_upsert_factory.py +87 -0
  242. sqlspec-0.29.0/tests/unit/test_builder/test_upsert_factory_edge_cases.py +193 -0
  243. sqlspec-0.29.0/tests/unit/test_builder_parameter_naming.py +203 -0
  244. sqlspec-0.29.0/tests/unit/test_cli/test_config_loading.py +175 -0
  245. sqlspec-0.29.0/tests/unit/test_cli/test_migration_commands.py +797 -0
  246. sqlspec-0.29.0/tests/unit/test_cli/test_shell_completion.py +71 -0
  247. sqlspec-0.29.0/tests/unit/test_config/test_migration_methods.py +524 -0
  248. sqlspec-0.29.0/tests/unit/test_config/test_storage_capabilities.py +101 -0
  249. sqlspec-0.29.0/tests/unit/test_core/test_cache.py +693 -0
  250. sqlspec-0.29.0/tests/unit/test_core/test_compiler.py +802 -0
  251. sqlspec-0.29.0/tests/unit/test_core/test_filters.py +337 -0
  252. sqlspec-0.29.0/tests/unit/test_core/test_hashing.py +569 -0
  253. sqlspec-0.29.0/tests/unit/test_core/test_parameter_regex_performance.py +205 -0
  254. sqlspec-0.29.0/tests/unit/test_core/test_parameters.py +1494 -0
  255. sqlspec-0.29.0/tests/unit/test_core/test_result.py +297 -0
  256. sqlspec-0.29.0/tests/unit/test_core/test_statement.py +1024 -0
  257. sqlspec-0.29.0/tests/unit/test_extensions/test_fastapi/test_providers.py +338 -0
  258. sqlspec-0.29.0/tests/unit/test_extensions/test_flask/test_state.py +169 -0
  259. sqlspec-0.29.0/tests/unit/test_extensions/test_starlette/test_config_state.py +68 -0
  260. sqlspec-0.29.0/tests/unit/test_extensions/test_starlette/test_utils.py +148 -0
  261. sqlspec-0.29.0/tests/unit/test_loader/test_fixtures_directory_loading.py +646 -0
  262. sqlspec-0.29.0/tests/unit/test_loader/test_loading_patterns.py +822 -0
  263. sqlspec-0.29.0/tests/unit/test_loader/test_sql_file_loader.py +1000 -0
  264. sqlspec-0.29.0/tests/unit/test_migrations/test_migration_runner.py +879 -0
  265. sqlspec-0.29.0/tests/unit/test_migrations/test_null_handling_fixes.py +111 -0
  266. sqlspec-0.29.0/tests/unit/test_migrations/test_version.py +225 -0
  267. sqlspec-0.29.0/tests/unit/test_sql_factory.py +1793 -0
  268. sqlspec-0.29.0/tests/unit/test_storage/test_errors.py +32 -0
  269. sqlspec-0.29.0/tests/unit/test_storage_bridge.py +365 -0
  270. sqlspec-0.29.0/tests/unit/test_type_conversion.py +305 -0
  271. sqlspec-0.29.0/tests/unit/test_utils/test_portal.py +312 -0
  272. sqlspec-0.29.0/tests/unit/test_utils/test_serializers.py +675 -0
  273. sqlspec-0.29.0/tests/unit/test_utils/test_type_guards.py +1126 -0
  274. sqlspec-0.29.0/tools/sphinx_ext/missing_references.py +331 -0
  275. sqlspec-0.29.0/uv.lock +7100 -0
  276. sqlspec-0.28.1/.claude/agents/expert.md +0 -560
  277. sqlspec-0.28.1/.claude/agents/testing.md +0 -465
  278. sqlspec-0.28.1/.gemini/bootstrap.md +0 -2165
  279. sqlspec-0.28.1/.gitignore +0 -67
  280. sqlspec-0.28.1/.pre-commit-config.yaml +0 -52
  281. sqlspec-0.28.1/AGENTS.md +0 -2899
  282. sqlspec-0.28.1/PKG-INFO +0 -570
  283. sqlspec-0.28.1/pyproject.toml +0 -531
  284. sqlspec-0.28.1/sqlspec/_serialization.py +0 -309
  285. sqlspec-0.28.1/sqlspec/_typing.py +0 -794
  286. sqlspec-0.28.1/sqlspec/adapters/adbc/config.py +0 -412
  287. sqlspec-0.28.1/sqlspec/adapters/adbc/driver.py +0 -934
  288. sqlspec-0.28.1/sqlspec/adapters/adbc/type_converter.py +0 -153
  289. sqlspec-0.28.1/sqlspec/adapters/aiosqlite/config.py +0 -293
  290. sqlspec-0.28.1/sqlspec/adapters/aiosqlite/driver.py +0 -346
  291. sqlspec-0.28.1/sqlspec/adapters/asyncmy/config.py +0 -228
  292. sqlspec-0.28.1/sqlspec/adapters/asyncmy/driver.py +0 -565
  293. sqlspec-0.28.1/sqlspec/adapters/asyncpg/config.py +0 -277
  294. sqlspec-0.28.1/sqlspec/adapters/asyncpg/driver.py +0 -458
  295. sqlspec-0.28.1/sqlspec/adapters/bigquery/config.py +0 -273
  296. sqlspec-0.28.1/sqlspec/adapters/bigquery/driver.py +0 -897
  297. sqlspec-0.28.1/sqlspec/adapters/bigquery/type_converter.py +0 -125
  298. sqlspec-0.28.1/sqlspec/adapters/duckdb/config.py +0 -336
  299. sqlspec-0.28.1/sqlspec/adapters/duckdb/driver.py +0 -535
  300. sqlspec-0.28.1/sqlspec/adapters/duckdb/type_converter.py +0 -133
  301. sqlspec-0.28.1/sqlspec/adapters/oracledb/adk/store.py +0 -1628
  302. sqlspec-0.28.1/sqlspec/adapters/oracledb/config.py +0 -424
  303. sqlspec-0.28.1/sqlspec/adapters/oracledb/driver.py +0 -976
  304. sqlspec-0.28.1/sqlspec/adapters/oracledb/type_converter.py +0 -207
  305. sqlspec-0.28.1/sqlspec/adapters/psqlpy/config.py +0 -247
  306. sqlspec-0.28.1/sqlspec/adapters/psqlpy/driver.py +0 -424
  307. sqlspec-0.28.1/sqlspec/adapters/psqlpy/type_converter.py +0 -102
  308. sqlspec-0.28.1/sqlspec/adapters/psycopg/_type_handlers.py +0 -80
  309. sqlspec-0.28.1/sqlspec/adapters/psycopg/config.py +0 -462
  310. sqlspec-0.28.1/sqlspec/adapters/psycopg/driver.py +0 -873
  311. sqlspec-0.28.1/sqlspec/adapters/sqlite/config.py +0 -203
  312. sqlspec-0.28.1/sqlspec/adapters/sqlite/driver.py +0 -410
  313. sqlspec-0.28.1/sqlspec/base.py +0 -707
  314. sqlspec-0.28.1/sqlspec/builder/__init__.py +0 -137
  315. sqlspec-0.28.1/sqlspec/builder/_base.py +0 -648
  316. sqlspec-0.28.1/sqlspec/builder/_column.py +0 -366
  317. sqlspec-0.28.1/sqlspec/builder/_ddl.py +0 -1634
  318. sqlspec-0.28.1/sqlspec/builder/_delete.py +0 -76
  319. sqlspec-0.28.1/sqlspec/builder/_factory.py +0 -1333
  320. sqlspec-0.28.1/sqlspec/builder/_insert.py +0 -315
  321. sqlspec-0.28.1/sqlspec/builder/_join.py +0 -375
  322. sqlspec-0.28.1/sqlspec/builder/_merge.py +0 -506
  323. sqlspec-0.28.1/sqlspec/builder/_parsing_utils.py +0 -302
  324. sqlspec-0.28.1/sqlspec/builder/_select.py +0 -1604
  325. sqlspec-0.28.1/sqlspec/builder/_update.py +0 -156
  326. sqlspec-0.28.1/sqlspec/config.py +0 -847
  327. sqlspec-0.28.1/sqlspec/core/__init__.py +0 -140
  328. sqlspec-0.28.1/sqlspec/core/cache.py +0 -770
  329. sqlspec-0.28.1/sqlspec/core/compiler.py +0 -427
  330. sqlspec-0.28.1/sqlspec/core/parameters.py +0 -1296
  331. sqlspec-0.28.1/sqlspec/core/result.py +0 -880
  332. sqlspec-0.28.1/sqlspec/core/statement.py +0 -809
  333. sqlspec-0.28.1/sqlspec/driver/_async.py +0 -615
  334. sqlspec-0.28.1/sqlspec/driver/_common.py +0 -826
  335. sqlspec-0.28.1/sqlspec/driver/_sync.py +0 -621
  336. sqlspec-0.28.1/sqlspec/driver/mixins/__init__.py +0 -6
  337. sqlspec-0.28.1/sqlspec/driver/mixins/_sql_translator.py +0 -122
  338. sqlspec-0.28.1/sqlspec/exceptions.py +0 -260
  339. sqlspec-0.28.1/sqlspec/extensions/aiosql/adapter.py +0 -469
  340. sqlspec-0.28.1/sqlspec/extensions/fastapi/__init__.py +0 -21
  341. sqlspec-0.28.1/sqlspec/extensions/fastapi/extension.py +0 -331
  342. sqlspec-0.28.1/sqlspec/extensions/fastapi/providers.py +0 -543
  343. sqlspec-0.28.1/sqlspec/extensions/flask/_state.py +0 -71
  344. sqlspec-0.28.1/sqlspec/extensions/flask/extension.py +0 -389
  345. sqlspec-0.28.1/sqlspec/extensions/litestar/plugin.py +0 -511
  346. sqlspec-0.28.1/sqlspec/extensions/litestar/providers.py +0 -454
  347. sqlspec-0.28.1/sqlspec/extensions/starlette/_state.py +0 -25
  348. sqlspec-0.28.1/sqlspec/extensions/starlette/extension.py +0 -254
  349. sqlspec-0.28.1/sqlspec/loader.py +0 -650
  350. sqlspec-0.28.1/sqlspec/migrations/fix.py +0 -199
  351. sqlspec-0.28.1/sqlspec/migrations/runner.py +0 -734
  352. sqlspec-0.28.1/sqlspec/migrations/validation.py +0 -177
  353. sqlspec-0.28.1/sqlspec/storage/__init__.py +0 -13
  354. sqlspec-0.28.1/sqlspec/storage/_utils.py +0 -85
  355. sqlspec-0.28.1/sqlspec/storage/backends/fsspec.py +0 -352
  356. sqlspec-0.28.1/sqlspec/storage/backends/local.py +0 -337
  357. sqlspec-0.28.1/sqlspec/storage/backends/obstore.py +0 -582
  358. sqlspec-0.28.1/sqlspec/storage/registry.py +0 -306
  359. sqlspec-0.28.1/sqlspec/typing.py +0 -203
  360. sqlspec-0.28.1/sqlspec/utils/arrow_helpers.py +0 -81
  361. sqlspec-0.28.1/sqlspec/utils/config_resolver.py +0 -153
  362. sqlspec-0.28.1/sqlspec/utils/data_transformation.py +0 -121
  363. sqlspec-0.28.1/sqlspec/utils/fixtures.py +0 -267
  364. sqlspec-0.28.1/sqlspec/utils/serializers.py +0 -167
  365. sqlspec-0.28.1/sqlspec/utils/type_guards.py +0 -1360
  366. sqlspec-0.28.1/sqlspec/utils/version.py +0 -433
  367. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/conftest.py +0 -55
  368. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_arrow_features.py +0 -410
  369. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_backends.py +0 -269
  370. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_driver.py +0 -515
  371. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_edge_cases.py +0 -507
  372. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_adbc_results.py +0 -376
  373. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_arrow.py +0 -219
  374. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_data_dictionary.py +0 -140
  375. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/test_store.py +0 -262
  376. sqlspec-0.28.1/tests/integration/test_adapters/test_adbc/test_parameter_styles.py +0 -650
  377. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_arrow.py +0 -235
  378. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_connection.py +0 -246
  379. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_driver.py +0 -519
  380. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_numpy_serialization.py +0 -254
  381. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_store.py +0 -234
  382. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_parameter_styles.py +0 -379
  383. sqlspec-0.28.1/tests/integration/test_adapters/test_aiosqlite/test_pooling.py +0 -187
  384. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_arrow.py +0 -246
  385. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_asyncmy_features.py +0 -284
  386. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_config.py +0 -220
  387. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_driver.py +0 -488
  388. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncmy/test_parameter_styles.py +0 -697
  389. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/conftest.py +0 -77
  390. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_arrow.py +0 -234
  391. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_data_dictionary.py +0 -105
  392. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_driver.py +0 -830
  393. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_exceptions.py +0 -130
  394. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_execute_many.py +0 -286
  395. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/test_store.py +0 -246
  396. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_migrations.py +0 -390
  397. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_parameter_styles.py +0 -635
  398. sqlspec-0.28.1/tests/integration/test_adapters/test_asyncpg/test_schema_migration.py +0 -321
  399. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_arrow.py +0 -266
  400. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_bigquery_features.py +0 -64
  401. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_config.py +0 -147
  402. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_connection.py +0 -18
  403. sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_driver.py +0 -414
  404. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_arrow.py +0 -193
  405. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_connection.py +0 -352
  406. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_driver.py +0 -610
  407. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_driver_features.py +0 -151
  408. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_execute_many.py +0 -295
  409. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_mixed_parameter_styles.py +0 -151
  410. sqlspec-0.28.1/tests/integration/test_adapters/test_duckdb/test_parameter_styles.py +0 -888
  411. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/conftest.py +0 -52
  412. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_arrow.py +0 -267
  413. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_driver_async.py +0 -488
  414. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_driver_sync.py +0 -482
  415. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_execute_many.py +0 -323
  416. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_oracle_features.py +0 -362
  417. sqlspec-0.28.1/tests/integration/test_adapters/test_oracledb/test_parameter_styles.py +0 -818
  418. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/conftest.py +0 -47
  419. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_arrow.py +0 -229
  420. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_connection.py +0 -119
  421. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_driver.py +0 -527
  422. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_exceptions.py +0 -131
  423. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/test_owner_id_column.py +0 -147
  424. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/test_store.py +0 -246
  425. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_parameter_styles.py +0 -664
  426. sqlspec-0.28.1/tests/integration/test_adapters/test_psqlpy/test_psqlpy_features.py +0 -224
  427. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_arrow.py +0 -236
  428. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_async_copy.py +0 -151
  429. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_driver.py +0 -655
  430. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_execute_many.py +0 -325
  431. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_async.py +0 -249
  432. sqlspec-0.28.1/tests/integration/test_adapters/test_psycopg/test_parameter_styles.py +0 -1033
  433. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/conftest.py +0 -115
  434. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_arrow.py +0 -223
  435. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_data_dictionary.py +0 -92
  436. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_driver.py +0 -531
  437. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_driver_features.py +0 -111
  438. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_exceptions.py +0 -120
  439. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/test_store.py +0 -253
  440. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_migrations.py +0 -292
  441. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_parameter_styles.py +0 -418
  442. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_pooling.py +0 -277
  443. sqlspec-0.28.1/tests/integration/test_adapters/test_sqlite/test_query_mixin.py +0 -214
  444. sqlspec-0.28.1/tests/integration/test_async_migrations.py +0 -278
  445. sqlspec-0.28.1/tests/integration/test_dishka/conftest.py +0 -113
  446. sqlspec-0.28.1/tests/integration/test_dishka/test_dishka_integration.py +0 -536
  447. sqlspec-0.28.1/tests/integration/test_extensions/test_fastapi_filters_integration.py +0 -390
  448. sqlspec-0.28.1/tests/integration/test_extensions/test_fastapi_integration.py +0 -281
  449. sqlspec-0.28.1/tests/integration/test_extensions/test_flask_integration.py +0 -315
  450. sqlspec-0.28.1/tests/integration/test_extensions/test_starlette_integration.py +0 -222
  451. sqlspec-0.28.1/tests/integration/test_loader/test_file_system_loading.py +0 -766
  452. sqlspec-0.28.1/tests/integration/test_migrations/test_upgrade_downgrade_versions.py +0 -409
  453. sqlspec-0.28.1/tests/integration/test_storage/test_storage_integration.py +0 -874
  454. sqlspec-0.28.1/tests/unit/conftest.py +0 -1011
  455. sqlspec-0.28.1/tests/unit/test_adapters/conftest.py +0 -507
  456. sqlspec-0.28.1/tests/unit/test_adapters/test_adapter_implementations.py +0 -429
  457. sqlspec-0.28.1/tests/unit/test_adapters/test_async_adapters.py +0 -556
  458. sqlspec-0.28.1/tests/unit/test_adapters/test_asyncpg/test_config.py +0 -0
  459. sqlspec-0.28.1/tests/unit/test_adapters/test_sync_adapters.py +0 -477
  460. sqlspec-0.28.1/tests/unit/test_arrow_helpers.py +0 -156
  461. sqlspec-0.28.1/tests/unit/test_arrow_result.py +0 -150
  462. sqlspec-0.28.1/tests/unit/test_base/test_sql_integration.py +0 -301
  463. sqlspec-0.28.1/tests/unit/test_base/test_sqlspec_class.py +0 -594
  464. sqlspec-0.28.1/tests/unit/test_builder/test_parameter_naming.py +0 -452
  465. sqlspec-0.28.1/tests/unit/test_builder_parameter_naming.py +0 -200
  466. sqlspec-0.28.1/tests/unit/test_cli/test_config_loading.py +0 -162
  467. sqlspec-0.28.1/tests/unit/test_cli/test_migration_commands.py +0 -778
  468. sqlspec-0.28.1/tests/unit/test_cli/test_shell_completion.py +0 -72
  469. sqlspec-0.28.1/tests/unit/test_core/test_cache.py +0 -693
  470. sqlspec-0.28.1/tests/unit/test_core/test_compiler.py +0 -775
  471. sqlspec-0.28.1/tests/unit/test_core/test_filters.py +0 -337
  472. sqlspec-0.28.1/tests/unit/test_core/test_hashing.py +0 -569
  473. sqlspec-0.28.1/tests/unit/test_core/test_parameters.py +0 -1224
  474. sqlspec-0.28.1/tests/unit/test_core/test_result.py +0 -298
  475. sqlspec-0.28.1/tests/unit/test_core/test_statement.py +0 -1020
  476. sqlspec-0.28.1/tests/unit/test_extensions/test_fastapi/test_providers.py +0 -338
  477. sqlspec-0.28.1/tests/unit/test_extensions/test_flask/test_state.py +0 -161
  478. sqlspec-0.28.1/tests/unit/test_extensions/test_starlette/test_config_state.py +0 -65
  479. sqlspec-0.28.1/tests/unit/test_extensions/test_starlette/test_utils.py +0 -143
  480. sqlspec-0.28.1/tests/unit/test_loader/test_fixtures_directory_loading.py +0 -641
  481. sqlspec-0.28.1/tests/unit/test_loader/test_loading_patterns.py +0 -822
  482. sqlspec-0.28.1/tests/unit/test_loader/test_sql_file_loader.py +0 -1000
  483. sqlspec-0.28.1/tests/unit/test_migrations/test_migration_runner.py +0 -816
  484. sqlspec-0.28.1/tests/unit/test_migrations/test_version.py +0 -225
  485. sqlspec-0.28.1/tests/unit/test_sql_factory.py +0 -1791
  486. sqlspec-0.28.1/tests/unit/test_type_conversion.py +0 -305
  487. sqlspec-0.28.1/tests/unit/test_utils/test_portal.py +0 -300
  488. sqlspec-0.28.1/tests/unit/test_utils/test_serializers.py +0 -666
  489. sqlspec-0.28.1/tests/unit/test_utils/test_type_guards.py +0 -1063
  490. sqlspec-0.28.1/tools/sphinx_ext/missing_references.py +0 -331
  491. sqlspec-0.28.1/uv.lock +0 -6999
  492. {sqlspec-0.28.1 → sqlspec-0.29.0}/.claude/AGENTS.md +0 -0
  493. {sqlspec-0.28.1 → sqlspec-0.29.0}/.claude/README.md +0 -0
  494. {sqlspec-0.28.1 → sqlspec-0.29.0}/.claude/agents/docs-vision.md +0 -0
  495. {sqlspec-0.28.1 → sqlspec-0.29.0}/.claude/agents/prd.md +0 -0
  496. {sqlspec-0.28.1 → sqlspec-0.29.0}/.claude/commands/implement.md +0 -0
  497. {sqlspec-0.28.1 → sqlspec-0.29.0}/.claude/commands/prd.md +0 -0
  498. {sqlspec-0.28.1 → sqlspec-0.29.0}/.claude/commands/review.md +0 -0
  499. {sqlspec-0.28.1 → sqlspec-0.29.0}/.claude/commands/test.md +0 -0
  500. {sqlspec-0.28.1 → sqlspec-0.29.0}/.gemini/GEMINI.md +0 -0
  501. {sqlspec-0.28.1 → sqlspec-0.29.0}/.gemini/commands/implement.toml +0 -0
  502. {sqlspec-0.28.1 → sqlspec-0.29.0}/.gemini/commands/prd.toml +0 -0
  503. {sqlspec-0.28.1 → sqlspec-0.29.0}/.gemini/commands/review.toml +0 -0
  504. {sqlspec-0.28.1 → sqlspec-0.29.0}/.gemini/commands/sync-guides.toml +0 -0
  505. {sqlspec-0.28.1 → sqlspec-0.29.0}/.gemini/commands/test.toml +0 -0
  506. {sqlspec-0.28.1 → sqlspec-0.29.0}/CLAUDE.md +0 -0
  507. {sqlspec-0.28.1 → sqlspec-0.29.0}/CONTRIBUTING.rst +0 -0
  508. {sqlspec-0.28.1 → sqlspec-0.29.0}/GEMINI.md +0 -0
  509. {sqlspec-0.28.1 → sqlspec-0.29.0}/LICENSE +0 -0
  510. {sqlspec-0.28.1 → sqlspec-0.29.0}/Makefile +0 -0
  511. {sqlspec-0.28.1 → sqlspec-0.29.0}/README.md +0 -0
  512. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/AGENTS.md +0 -0
  513. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/README.md +0 -0
  514. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/active/.gitkeep +0 -0
  515. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/agents/expert.md +0 -0
  516. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/agents/guides.md +0 -0
  517. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/agents/prd.md +0 -0
  518. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/agents/review.md +0 -0
  519. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/agents/testing.md +0 -0
  520. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/archive/.gitkeep +0 -0
  521. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/template-spec/README.md +0 -0
  522. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/template-spec/prd.md +0 -0
  523. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/template-spec/recovery.md +0 -0
  524. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/template-spec/research/.gitkeep +0 -0
  525. {sqlspec-0.28.1 → sqlspec-0.29.0}/specs/template-spec/tasks.md +0 -0
  526. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/__init__.py +0 -0
  527. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/__main__.py +0 -0
  528. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/__metadata__.py +0 -0
  529. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/__init__.py +0 -0
  530. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/adbc/__init__.py +0 -0
  531. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/adbc/_types.py +0 -0
  532. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/adbc/adk/__init__.py +0 -0
  533. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/adbc/adk/store.py +0 -0
  534. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/adbc/data_dictionary.py +0 -0
  535. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/adbc/litestar/__init__.py +0 -0
  536. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/adbc/litestar/store.py +0 -0
  537. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/aiosqlite/__init__.py +0 -0
  538. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/aiosqlite/_types.py +0 -0
  539. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/aiosqlite/adk/__init__.py +0 -0
  540. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/aiosqlite/adk/store.py +0 -0
  541. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/aiosqlite/data_dictionary.py +0 -0
  542. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/aiosqlite/litestar/__init__.py +0 -0
  543. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/aiosqlite/litestar/store.py +0 -0
  544. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/aiosqlite/pool.py +0 -0
  545. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncmy/__init__.py +0 -0
  546. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncmy/_types.py +0 -0
  547. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncmy/adk/__init__.py +0 -0
  548. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncmy/adk/store.py +0 -0
  549. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncmy/data_dictionary.py +0 -0
  550. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncmy/litestar/__init__.py +0 -0
  551. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncmy/litestar/store.py +0 -0
  552. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncpg/__init__.py +0 -0
  553. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncpg/_type_handlers.py +0 -0
  554. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncpg/_types.py +0 -0
  555. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncpg/adk/__init__.py +0 -0
  556. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncpg/adk/store.py +0 -0
  557. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncpg/data_dictionary.py +0 -0
  558. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncpg/litestar/__init__.py +0 -0
  559. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/asyncpg/litestar/store.py +0 -0
  560. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/bigquery/__init__.py +0 -0
  561. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/bigquery/_types.py +0 -0
  562. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/bigquery/adk/__init__.py +0 -0
  563. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/bigquery/adk/store.py +0 -0
  564. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/bigquery/data_dictionary.py +0 -0
  565. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/bigquery/litestar/__init__.py +0 -0
  566. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/bigquery/litestar/store.py +0 -0
  567. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/duckdb/__init__.py +0 -0
  568. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/duckdb/_types.py +0 -0
  569. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/duckdb/adk/__init__.py +0 -0
  570. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/duckdb/adk/store.py +0 -0
  571. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/duckdb/data_dictionary.py +0 -0
  572. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/duckdb/litestar/__init__.py +0 -0
  573. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/duckdb/litestar/store.py +0 -0
  574. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/duckdb/pool.py +0 -0
  575. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/oracledb/__init__.py +0 -0
  576. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/oracledb/_numpy_handlers.py +0 -0
  577. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/oracledb/_types.py +0 -0
  578. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/oracledb/adk/__init__.py +0 -0
  579. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/oracledb/data_dictionary.py +0 -0
  580. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/oracledb/litestar/__init__.py +0 -0
  581. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/oracledb/litestar/store.py +0 -0
  582. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/oracledb/migrations.py +0 -0
  583. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psqlpy/__init__.py +0 -0
  584. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psqlpy/_type_handlers.py +0 -0
  585. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psqlpy/_types.py +0 -0
  586. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psqlpy/adk/__init__.py +0 -0
  587. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psqlpy/adk/store.py +0 -0
  588. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psqlpy/data_dictionary.py +0 -0
  589. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psqlpy/litestar/__init__.py +0 -0
  590. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psqlpy/litestar/store.py +0 -0
  591. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psycopg/__init__.py +0 -0
  592. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psycopg/_types.py +0 -0
  593. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psycopg/adk/__init__.py +0 -0
  594. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psycopg/adk/store.py +0 -0
  595. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psycopg/data_dictionary.py +0 -0
  596. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psycopg/litestar/__init__.py +0 -0
  597. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/psycopg/litestar/store.py +0 -0
  598. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/__init__.py +0 -0
  599. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/_type_handlers.py +0 -0
  600. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/_types.py +0 -0
  601. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/adk/__init__.py +0 -0
  602. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/adk/store.py +0 -0
  603. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/data_dictionary.py +0 -0
  604. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/litestar/__init__.py +0 -0
  605. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/litestar/store.py +0 -0
  606. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/adapters/sqlite/pool.py +0 -0
  607. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/builder/_dml.py +0 -0
  608. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/builder/_expression_wrappers.py +0 -0
  609. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/cli.py +0 -0
  610. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/core/filters.py +0 -0
  611. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/core/hashing.py +0 -0
  612. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/core/splitter.py +0 -0
  613. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/core/type_conversion.py +0 -0
  614. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/driver/__init__.py +0 -0
  615. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/driver/mixins/_result_tools.py +0 -0
  616. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/__init__.py +0 -0
  617. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/adk/__init__.py +0 -0
  618. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/adk/_types.py +0 -0
  619. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/adk/converters.py +0 -0
  620. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +0 -0
  621. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/adk/migrations/__init__.py +0 -0
  622. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/adk/service.py +0 -0
  623. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/adk/store.py +0 -0
  624. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/aiosql/__init__.py +0 -0
  625. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/flask/__init__.py +0 -0
  626. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/flask/_utils.py +0 -0
  627. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/litestar/__init__.py +0 -0
  628. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/litestar/_utils.py +0 -0
  629. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/litestar/cli.py +0 -0
  630. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/litestar/config.py +0 -0
  631. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/litestar/handlers.py +0 -0
  632. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/litestar/migrations/0001_create_session_table.py +0 -0
  633. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/litestar/migrations/__init__.py +0 -0
  634. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/litestar/store.py +0 -0
  635. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/starlette/__init__.py +0 -0
  636. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/starlette/_utils.py +0 -0
  637. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/extensions/starlette/middleware.py +0 -0
  638. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/migrations/__init__.py +0 -0
  639. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/migrations/base.py +0 -0
  640. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/migrations/commands.py +0 -0
  641. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/migrations/context.py +0 -0
  642. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/migrations/loaders.py +0 -0
  643. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/migrations/tracker.py +0 -0
  644. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/migrations/utils.py +0 -0
  645. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/protocols.py +0 -0
  646. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/py.typed +0 -0
  647. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/storage/backends/__init__.py +0 -0
  648. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/storage/backends/base.py +0 -0
  649. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/__init__.py +0 -0
  650. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/correlation.py +0 -0
  651. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/deprecation.py +0 -0
  652. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/logging.py +0 -0
  653. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/module_loader.py +0 -0
  654. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/portal.py +0 -0
  655. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/schema.py +0 -0
  656. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/singleton.py +0 -0
  657. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/sync_tools.py +0 -0
  658. {sqlspec-0.28.1 → sqlspec-0.29.0}/sqlspec/utils/text.py +0 -0
  659. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/__init__.py +0 -0
  660. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/conftest.py +0 -0
  661. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/__init__.py +0 -0
  662. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/asset_maintenance.sql +0 -0
  663. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/ddls-mysql-collection.sql +0 -0
  664. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/ddls-postgres-collection.sql +0 -0
  665. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/example_usage.py +0 -0
  666. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/init.sql +0 -0
  667. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-config.sql +0 -0
  668. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-data_types.sql +0 -0
  669. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-database_details.sql +0 -0
  670. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-engines.sql +0 -0
  671. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-hostname.sql +0 -0
  672. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-plugins.sql +0 -0
  673. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-process_list.sql +0 -0
  674. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-resource-groups.sql +0 -0
  675. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-schema_objects.sql +0 -0
  676. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-table_details.sql +0 -0
  677. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/collection-users.sql +0 -0
  678. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/mysql/init.sql +0 -0
  679. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/oracle.ddl.sql +0 -0
  680. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-applications.sql +0 -0
  681. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-aws_extension_dependency.sql +0 -0
  682. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-aws_oracle_exists.sql +0 -0
  683. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-bg_writer_stats.sql +0 -0
  684. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-calculated_metrics.sql +0 -0
  685. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-data_types.sql +0 -0
  686. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-database_details.sql +0 -0
  687. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-extensions.sql +0 -0
  688. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-index_details.sql +0 -0
  689. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-pglogical-details.sql +0 -0
  690. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-privileges.sql +0 -0
  691. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-replication_slots.sql +0 -0
  692. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-replication_stats.sql +0 -0
  693. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-schema_details.sql +0 -0
  694. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-schema_objects.sql +0 -0
  695. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-settings.sql +0 -0
  696. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-source_details.sql +0 -0
  697. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/collection-table_details.sql +0 -0
  698. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/extended-collection-all-databases.sql +0 -0
  699. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/postgres/init.sql +0 -0
  700. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/readiness-check.sql +0 -0
  701. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/fixtures/sql_utils.py +0 -0
  702. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/__init__.py +0 -0
  703. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/conftest.py +0 -0
  704. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/__init__.py +0 -0
  705. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/__init__.py +0 -0
  706. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_adbc_connection.py +0 -0
  707. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_exceptions.py +0 -0
  708. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/__init__.py +0 -0
  709. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/__init__.py +0 -0
  710. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_dialect_integration.py +0 -0
  711. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_dialect_support.py +0 -0
  712. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_edge_cases.py +0 -0
  713. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_event_operations.py +0 -0
  714. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_owner_id_column.py +0 -0
  715. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_session_operations.py +0 -0
  716. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/__init__.py +0 -0
  717. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_adbc/test_migrations.py +0 -0
  718. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_aiosqlite/__init__.py +0 -0
  719. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_aiosqlite/conftest.py +0 -0
  720. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_aiosqlite/test_exceptions.py +0 -0
  721. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_aiosqlite/test_extensions/__init__.py +0 -0
  722. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/__init__.py +0 -0
  723. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_aiosqlite/test_migrations.py +0 -0
  724. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/__init__.py +0 -0
  725. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/conftest.py +0 -0
  726. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/test_exceptions.py +0 -0
  727. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/__init__.py +0 -0
  728. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/__init__.py +0 -0
  729. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/conftest.py +0 -0
  730. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/test_store.py +0 -0
  731. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_litestar/__init__.py +0 -0
  732. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/test_extensions/test_litestar/test_store.py +0 -0
  733. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncmy/test_migrations.py +0 -0
  734. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncpg/__init__.py +0 -0
  735. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncpg/test_connection.py +0 -0
  736. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/__init__.py +0 -0
  737. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/__init__.py +0 -0
  738. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/conftest.py +0 -0
  739. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_owner_id_column.py +0 -0
  740. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_session_operations.py +0 -0
  741. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/__init__.py +0 -0
  742. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_bigquery/__init__.py +0 -0
  743. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_bigquery/conftest.py +0 -0
  744. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_bigquery/test_exceptions.py +0 -0
  745. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/__init__.py +0 -0
  746. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/test_exceptions.py +0 -0
  747. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/test_extensions/__init__.py +0 -0
  748. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/test_extensions/test_adk/__init__.py +0 -0
  749. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/test_extensions/test_adk/test_store.py +0 -0
  750. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/test_extensions/test_litestar/__init__.py +0 -0
  751. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/test_extensions/test_litestar/test_store.py +0 -0
  752. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/test_migrations.py +0 -0
  753. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/test_pooling.py +0 -0
  754. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_duckdb/utils.py +0 -0
  755. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/__init__.py +0 -0
  756. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_connection.py +0 -0
  757. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_exceptions.py +0 -0
  758. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_extensions/__init__.py +0 -0
  759. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/__init__.py +0 -0
  760. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/test_inmemory.py +0 -0
  761. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/test_oracle_specific.py +0 -0
  762. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/__init__.py +0 -0
  763. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_inmemory.py +0 -0
  764. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_store_async.py +0 -0
  765. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_store_sync.py +0 -0
  766. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_migrations.py +0 -0
  767. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_msgspec_clob.py +0 -0
  768. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_oracledb/test_numpy_vectors.py +0 -0
  769. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psqlpy/__init__.py +0 -0
  770. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psqlpy/test_extensions/__init__.py +0 -0
  771. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/__init__.py +0 -0
  772. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/__init__.py +0 -0
  773. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psqlpy/test_migrations.py +0 -0
  774. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/__init__.py +0 -0
  775. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/conftest.py +0 -0
  776. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/test_connection.py +0 -0
  777. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/test_exceptions.py +0 -0
  778. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/test_extensions/__init__.py +0 -0
  779. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/test_extensions/test_adk/__init__.py +0 -0
  780. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/test_extensions/test_adk/test_owner_id_column.py +0 -0
  781. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/__init__.py +0 -0
  782. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_sync.py +0 -0
  783. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_psycopg/test_migrations.py +0 -0
  784. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_sqlite/__init__.py +0 -0
  785. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_sqlite/test_extensions/__init__.py +0 -0
  786. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_sqlite/test_extensions/test_adk/__init__.py +0 -0
  787. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_sqlite/test_extensions/test_adk/test_owner_id_column.py +0 -0
  788. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/__init__.py +0 -0
  789. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_dishka/__init__.py +0 -0
  790. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_extensions/__init__.py +0 -0
  791. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_loader/__init__.py +0 -0
  792. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_migrations/__init__.py +0 -0
  793. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_migrations/test_auto_sync.py +0 -0
  794. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_migrations/test_fix_checksum_stability.py +0 -0
  795. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_migrations/test_fix_file_operations.py +0 -0
  796. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_migrations/test_fix_idempotency_workflow.py +0 -0
  797. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_migrations/test_schema_migration.py +0 -0
  798. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/integration/test_storage/__init__.py +0 -0
  799. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/__init__.py +0 -0
  800. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_adbc/test_adbc_serialization.py +0 -0
  801. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_asyncmy/__init__.py +0 -0
  802. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_asyncpg/__init__.py +0 -0
  803. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_asyncpg/test_type_handlers.py +0 -0
  804. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_bigquery/__init__.py +0 -0
  805. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_duckdb/__init__.py +0 -0
  806. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_duckdb/test_type_converter.py +0 -0
  807. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_extension_config.py +0 -0
  808. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_oracledb/test_numpy_handlers.py +0 -0
  809. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_oracledb/test_type_converter_vectors.py +0 -0
  810. {sqlspec-0.28.1/tests/unit/test_adapters/test_sqlite → sqlspec-0.29.0/tests/unit/test_adapters/test_psqlpy}/__init__.py +0 -0
  811. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_psycopg/test_type_handlers.py +0 -0
  812. {sqlspec-0.28.1/tests/unit/test_cli → sqlspec-0.29.0/tests/unit/test_adapters/test_sqlite}/__init__.py +0 -0
  813. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_adapters/test_sqlite/test_type_handlers.py +0 -0
  814. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_base/__init__.py +0 -0
  815. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_builder/__init__.py +0 -0
  816. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_builder/test_insert_builder.py +0 -0
  817. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_builder/test_lateral_joins.py +0 -0
  818. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_builder/test_select_locking.py +0 -0
  819. {sqlspec-0.28.1/tests/unit/test_driver → sqlspec-0.29.0/tests/unit/test_cli}/__init__.py +0 -0
  820. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_config_resolver.py +0 -0
  821. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_cte_parameter_collisions.py +0 -0
  822. {sqlspec-0.28.1/tools → sqlspec-0.29.0/tests/unit/test_driver}/__init__.py +0 -0
  823. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_driver/test_data_dictionary.py +0 -0
  824. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_driver/test_result_tools.py +0 -0
  825. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_exceptions.py +0 -0
  826. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/__init__.py +0 -0
  827. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/test_fastapi/__init__.py +0 -0
  828. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/test_fastapi/test_extension.py +0 -0
  829. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/test_flask/__init__.py +0 -0
  830. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/test_flask/test_extension.py +0 -0
  831. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/test_litestar/__init__.py +0 -0
  832. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/test_litestar/test_handlers.py +0 -0
  833. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/test_starlette/__init__.py +0 -0
  834. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_extensions/test_starlette/test_extension.py +0 -0
  835. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_loader/__init__.py +0 -0
  836. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_loader/test_cache_integration.py +0 -0
  837. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migration_context.py +0 -0
  838. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/__init__.py +0 -0
  839. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_checksum_canonicalization.py +0 -0
  840. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_extension_discovery.py +0 -0
  841. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_fix_regex_precision.py +0 -0
  842. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_migration.py +0 -0
  843. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_migration_commands.py +0 -0
  844. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_migration_context.py +0 -0
  845. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_migration_execution.py +0 -0
  846. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_tracker_idempotency.py +0 -0
  847. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_utils.py +0 -0
  848. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_validation.py +0 -0
  849. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_version_conversion.py +0 -0
  850. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_migrations/test_version_parsing_edge_cases.py +0 -0
  851. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_parsing_utils.py +0 -0
  852. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_serialization.py +0 -0
  853. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_storage/__init__.py +0 -0
  854. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_storage/test_fsspec_backend.py +0 -0
  855. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_storage/test_local_store.py +0 -0
  856. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_storage/test_obstore_backend.py +0 -0
  857. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_storage/test_storage_registry.py +0 -0
  858. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_storage/test_storage_utils.py +0 -0
  859. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/__init__.py +0 -0
  860. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_correlation.py +0 -0
  861. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_data_transformation.py +0 -0
  862. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_dependencies.py +0 -0
  863. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_deprecation.py +0 -0
  864. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_fixtures.py +0 -0
  865. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_logging.py +0 -0
  866. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_module_loader.py +0 -0
  867. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_singleton.py +0 -0
  868. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_sync_tools.py +0 -0
  869. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_utils/test_text.py +0 -0
  870. {sqlspec-0.28.1 → sqlspec-0.29.0}/tests/unit/test_where_or_operations.py +0 -0
  871. /sqlspec-0.28.1/tests/integration/test_adapters/test_bigquery/test_type_handler_config.py → /sqlspec-0.29.0/tools/__init__.py +0 -0
  872. {sqlspec-0.28.1 → sqlspec-0.29.0}/tools/build_docs.py +0 -0
  873. {sqlspec-0.28.1 → sqlspec-0.29.0}/tools/fix_documentation.py +0 -0
  874. {sqlspec-0.28.1 → sqlspec-0.29.0}/tools/local-infra.sh +0 -0
  875. {sqlspec-0.28.1 → sqlspec-0.29.0}/tools/pypi_readme.py +0 -0
  876. {sqlspec-0.28.1 → sqlspec-0.29.0}/tools/sphinx_ext/__init__.py +0 -0
  877. {sqlspec-0.28.1 → sqlspec-0.29.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