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