sqlspec 0.26.0__tar.gz → 0.28.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sqlspec might be problematic. Click here for more details.
- sqlspec-0.28.0/.claude/AGENTS.md +1 -0
- sqlspec-0.28.0/.claude/README.md +263 -0
- sqlspec-0.28.0/.claude/agents/docs-vision.md +822 -0
- sqlspec-0.28.0/.claude/agents/expert.md +560 -0
- sqlspec-0.28.0/.claude/agents/prd.md +300 -0
- sqlspec-0.28.0/.claude/agents/testing.md +465 -0
- sqlspec-0.28.0/.claude/commands/implement.md +35 -0
- sqlspec-0.28.0/.claude/commands/prd.md +26 -0
- sqlspec-0.28.0/.claude/commands/review.md +42 -0
- sqlspec-0.28.0/.claude/commands/test.md +25 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/.gitignore +19 -18
- {sqlspec-0.26.0 → sqlspec-0.28.0}/.pre-commit-config.yaml +3 -3
- sqlspec-0.28.0/AGENTS.md +2702 -0
- sqlspec-0.28.0/CLAUDE.md +1 -0
- sqlspec-0.28.0/GEMINI.md +1 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/Makefile +11 -11
- {sqlspec-0.26.0 → sqlspec-0.28.0}/PKG-INFO +41 -22
- {sqlspec-0.26.0 → sqlspec-0.28.0}/README.md +37 -18
- {sqlspec-0.26.0 → sqlspec-0.28.0}/pyproject.toml +34 -20
- sqlspec-0.28.0/specs/README.md +175 -0
- sqlspec-0.28.0/specs/template-spec/README.md +70 -0
- sqlspec-0.28.0/specs/template-spec/prd.md +158 -0
- sqlspec-0.28.0/specs/template-spec/recovery.md +144 -0
- sqlspec-0.28.0/specs/template-spec/tasks.md +73 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/__init__.py +7 -15
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/_serialization.py +55 -25
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/_typing.py +155 -52
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/_types.py +1 -1
- sqlspec-0.28.0/sqlspec/adapters/adbc/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/adbc/adk/store.py +880 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/config.py +62 -12
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/data_dictionary.py +74 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/driver.py +226 -58
- sqlspec-0.28.0/sqlspec/adapters/adbc/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/adbc/litestar/store.py +504 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/type_converter.py +44 -50
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/_types.py +1 -1
- sqlspec-0.28.0/sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/aiosqlite/adk/store.py +536 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/config.py +86 -16
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/data_dictionary.py +34 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/driver.py +127 -38
- sqlspec-0.28.0/sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/aiosqlite/litestar/store.py +281 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/pool.py +7 -7
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncmy/__init__.py +7 -1
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncmy/_types.py +1 -1
- sqlspec-0.28.0/sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/asyncmy/adk/store.py +503 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncmy/config.py +59 -17
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncmy/data_dictionary.py +41 -2
- sqlspec-0.28.0/sqlspec/adapters/asyncmy/driver.py +565 -0
- sqlspec-0.28.0/sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/asyncmy/litestar/store.py +296 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncpg/__init__.py +2 -1
- sqlspec-0.28.0/sqlspec/adapters/asyncpg/_type_handlers.py +71 -0
- sqlspec-0.28.0/sqlspec/adapters/asyncpg/_types.py +21 -0
- sqlspec-0.28.0/sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/asyncpg/adk/store.py +460 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncpg/config.py +57 -36
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncpg/data_dictionary.py +48 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/asyncpg/driver.py +153 -23
- sqlspec-0.28.0/sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/asyncpg/litestar/store.py +253 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/_types.py +1 -1
- sqlspec-0.28.0/sqlspec/adapters/bigquery/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/bigquery/adk/store.py +585 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/config.py +36 -11
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/data_dictionary.py +42 -2
- sqlspec-0.28.0/sqlspec/adapters/bigquery/driver.py +897 -0
- sqlspec-0.28.0/sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/bigquery/litestar/store.py +327 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/type_converter.py +55 -23
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/_types.py +2 -2
- sqlspec-0.28.0/sqlspec/adapters/duckdb/adk/__init__.py +14 -0
- sqlspec-0.28.0/sqlspec/adapters/duckdb/adk/store.py +563 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/config.py +79 -21
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/data_dictionary.py +41 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/driver.py +225 -44
- sqlspec-0.28.0/sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/duckdb/litestar/store.py +332 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/pool.py +5 -5
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/type_converter.py +51 -21
- sqlspec-0.28.0/sqlspec/adapters/oracledb/_numpy_handlers.py +133 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/_types.py +20 -2
- sqlspec-0.28.0/sqlspec/adapters/oracledb/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/oracledb/adk/store.py +1628 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/config.py +120 -36
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/data_dictionary.py +87 -20
- sqlspec-0.28.0/sqlspec/adapters/oracledb/driver.py +976 -0
- sqlspec-0.28.0/sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/oracledb/litestar/store.py +765 -0
- sqlspec-0.28.0/sqlspec/adapters/oracledb/migrations.py +532 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/type_converter.py +91 -16
- sqlspec-0.28.0/sqlspec/adapters/psqlpy/_type_handlers.py +44 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/_types.py +2 -1
- sqlspec-0.28.0/sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/psqlpy/adk/store.py +483 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/config.py +45 -19
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/data_dictionary.py +48 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/driver.py +108 -41
- sqlspec-0.28.0/sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/psqlpy/litestar/store.py +272 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/type_converter.py +40 -11
- sqlspec-0.28.0/sqlspec/adapters/psycopg/_type_handlers.py +80 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/_types.py +2 -1
- sqlspec-0.28.0/sqlspec/adapters/psycopg/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/psycopg/adk/store.py +962 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/config.py +65 -37
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/data_dictionary.py +91 -3
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/driver.py +200 -78
- sqlspec-0.28.0/sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/psycopg/litestar/store.py +554 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/__init__.py +2 -1
- sqlspec-0.28.0/sqlspec/adapters/sqlite/_type_handlers.py +86 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/_types.py +1 -1
- sqlspec-0.28.0/sqlspec/adapters/sqlite/adk/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/sqlite/adk/store.py +582 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/config.py +85 -16
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/data_dictionary.py +34 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/driver.py +120 -52
- sqlspec-0.28.0/sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
- sqlspec-0.28.0/sqlspec/adapters/sqlite/litestar/store.py +318 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/sqlite/pool.py +5 -5
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/base.py +45 -26
- sqlspec-0.28.0/sqlspec/builder/__init__.py +137 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_base.py +91 -58
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_column.py +5 -5
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_ddl.py +98 -89
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_delete.py +5 -4
- sqlspec-0.28.0/sqlspec/builder/_dml.py +388 -0
- sqlspec-0.26.0/sqlspec/_sql.py → sqlspec-0.28.0/sqlspec/builder/_factory.py +41 -44
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_insert.py +5 -82
- sqlspec-0.26.0/sqlspec/builder/mixins/_join_operations.py → sqlspec-0.28.0/sqlspec/builder/_join.py +145 -143
- sqlspec-0.28.0/sqlspec/builder/_merge.py +506 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_parsing_utils.py +9 -11
- sqlspec-0.28.0/sqlspec/builder/_select.py +1604 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_update.py +11 -42
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/cli.py +76 -69
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/config.py +331 -62
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/__init__.py +5 -4
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/cache.py +18 -18
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/compiler.py +6 -8
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/filters.py +55 -47
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/hashing.py +9 -9
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/parameters.py +76 -45
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/result.py +234 -47
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/splitter.py +16 -17
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/statement.py +32 -31
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/core/type_conversion.py +3 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/__init__.py +1 -3
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/_async.py +183 -160
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/_common.py +197 -109
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/_sync.py +189 -161
- sqlspec-0.28.0/sqlspec/driver/mixins/_result_tools.py +61 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/mixins/_sql_translator.py +4 -4
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/exceptions.py +70 -7
- sqlspec-0.28.0/sqlspec/extensions/adk/__init__.py +53 -0
- sqlspec-0.28.0/sqlspec/extensions/adk/_types.py +51 -0
- sqlspec-0.28.0/sqlspec/extensions/adk/converters.py +172 -0
- sqlspec-0.28.0/sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +144 -0
- sqlspec-0.28.0/sqlspec/extensions/adk/service.py +181 -0
- sqlspec-0.28.0/sqlspec/extensions/adk/store.py +536 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/aiosql/adapter.py +69 -61
- sqlspec-0.28.0/sqlspec/extensions/fastapi/__init__.py +21 -0
- sqlspec-0.28.0/sqlspec/extensions/fastapi/extension.py +331 -0
- sqlspec-0.28.0/sqlspec/extensions/fastapi/providers.py +543 -0
- sqlspec-0.28.0/sqlspec/extensions/flask/__init__.py +36 -0
- sqlspec-0.28.0/sqlspec/extensions/flask/_state.py +71 -0
- sqlspec-0.28.0/sqlspec/extensions/flask/_utils.py +40 -0
- sqlspec-0.28.0/sqlspec/extensions/flask/extension.py +389 -0
- sqlspec-0.28.0/sqlspec/extensions/litestar/__init__.py +23 -0
- sqlspec-0.28.0/sqlspec/extensions/litestar/cli.py +92 -0
- sqlspec-0.28.0/sqlspec/extensions/litestar/config.py +66 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/litestar/handlers.py +46 -17
- sqlspec-0.28.0/sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
- sqlspec-0.28.0/sqlspec/extensions/litestar/migrations/__init__.py +3 -0
- sqlspec-0.28.0/sqlspec/extensions/litestar/plugin.py +511 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/litestar/providers.py +25 -25
- sqlspec-0.28.0/sqlspec/extensions/litestar/store.py +265 -0
- sqlspec-0.28.0/sqlspec/extensions/starlette/__init__.py +10 -0
- sqlspec-0.28.0/sqlspec/extensions/starlette/_state.py +25 -0
- sqlspec-0.28.0/sqlspec/extensions/starlette/_utils.py +52 -0
- sqlspec-0.28.0/sqlspec/extensions/starlette/extension.py +254 -0
- sqlspec-0.28.0/sqlspec/extensions/starlette/middleware.py +154 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/loader.py +30 -49
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/base.py +200 -76
- sqlspec-0.28.0/sqlspec/migrations/commands.py +929 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/context.py +6 -9
- sqlspec-0.28.0/sqlspec/migrations/fix.py +199 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/loaders.py +47 -19
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/runner.py +241 -75
- sqlspec-0.28.0/sqlspec/migrations/tracker.py +403 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/utils.py +51 -3
- sqlspec-0.28.0/sqlspec/migrations/validation.py +177 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/protocols.py +106 -36
- sqlspec-0.28.0/sqlspec/py.typed +0 -0
- sqlspec-0.28.0/sqlspec/storage/_utils.py +85 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/backends/fsspec.py +133 -107
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/backends/local.py +78 -51
- sqlspec-0.28.0/sqlspec/storage/backends/obstore.py +582 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/registry.py +75 -39
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/typing.py +30 -84
- sqlspec-0.28.0/sqlspec/utils/__init__.py +31 -0
- sqlspec-0.28.0/sqlspec/utils/arrow_helpers.py +81 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/config_resolver.py +6 -6
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/correlation.py +4 -5
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/data_transformation.py +3 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/deprecation.py +9 -8
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/fixtures.py +4 -4
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/logging.py +46 -6
- sqlspec-0.28.0/sqlspec/utils/module_loader.py +293 -0
- sqlspec-0.28.0/sqlspec/utils/portal.py +311 -0
- sqlspec-0.28.0/sqlspec/utils/schema.py +288 -0
- sqlspec-0.28.0/sqlspec/utils/serializers.py +167 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/sync_tools.py +36 -22
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/text.py +1 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/type_guards.py +136 -20
- sqlspec-0.28.0/sqlspec/utils/version.py +433 -0
- sqlspec-0.28.0/tests/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/conftest.py +5 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/example_usage.py +3 -5
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/sql_utils.py +7 -7
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/conftest.py +0 -10
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/conftest.py +2 -2
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_arrow.py +219 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_exceptions.py +118 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_dialect_integration.py +229 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_dialect_support.py +198 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_edge_cases.py +269 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_event_operations.py +320 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_owner_id_column.py +145 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_adk/test_session_operations.py +184 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_adbc/test_extensions/test_litestar/test_store.py +262 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_migrations.py +16 -8
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/conftest.py +4 -8
- sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_arrow.py +235 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_connection.py +19 -28
- sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_exceptions.py +124 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_numpy_serialization.py +254 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_aiosqlite/test_extensions/test_litestar/test_store.py +234 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_migrations.py +9 -2
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_arrow.py +246 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_asyncmy_features.py +0 -7
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_config.py +82 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_driver.py +53 -17
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_exceptions.py +137 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/conftest.py +104 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_adk/test_store.py +332 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_litestar/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncmy/test_extensions/test_litestar/test_store.py +252 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_migrations.py +3 -7
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/test_parameter_styles.py +4 -23
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_arrow.py +234 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_exceptions.py +130 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_execute_many.py +0 -10
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/conftest.py +68 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_owner_id_column.py +411 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_adk/test_session_operations.py +134 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_extensions/test_litestar/test_store.py +246 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_migrations.py +6 -6
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_parameter_styles.py +0 -17
- sqlspec-0.28.0/tests/integration/test_adapters/test_asyncpg/test_schema_migration.py +321 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/conftest.py +3 -5
- sqlspec-0.28.0/tests/integration/test_adapters/test_bigquery/test_arrow.py +266 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_bigquery/test_exceptions.py +96 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_bigquery/test_type_handler_config.py +0 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_arrow.py +193 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_connection.py +14 -11
- sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_driver_features.py +151 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_exceptions.py +128 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/test_adk/__init__.py +0 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/test_adk/test_store.py +692 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/test_litestar/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_duckdb/test_extensions/test_litestar/test_store.py +272 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_migrations.py +12 -8
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/utils.py +1 -2
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_arrow.py +267 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_driver_async.py +84 -12
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_driver_sync.py +84 -12
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_exceptions.py +142 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_execute_many.py +27 -29
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/__init__.py +0 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/test_inmemory.py +412 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_adk/test_oracle_specific.py +530 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/__init__.py +0 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_inmemory.py +280 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_store_async.py +248 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_extensions/test_litestar/test_store_sync.py +248 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_migrations.py +164 -24
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_msgspec_clob.py +525 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_oracledb/test_numpy_vectors.py +376 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_oracle_features.py +29 -26
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_parameter_styles.py +104 -88
- sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_arrow.py +229 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_connection.py +0 -7
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_driver.py +0 -1
- sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_exceptions.py +131 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_adk/test_owner_id_column.py +147 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psqlpy/test_extensions/test_litestar/test_store.py +246 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_migrations.py +13 -13
- sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_arrow.py +236 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_async_copy.py +0 -4
- sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_exceptions.py +161 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/__init__.py +0 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_adk/__init__.py +0 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_adk/test_owner_id_column.py +180 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/__init__.py +0 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_async.py +249 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_psycopg/test_extensions/test_litestar/test_store_sync.py +267 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_migrations.py +19 -20
- sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_arrow.py +223 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_driver_features.py +111 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_exceptions.py +120 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_adk/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_adk/test_owner_id_column.py +386 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_adapters/test_sqlite/test_extensions/test_litestar/test_store.py +253 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_migrations.py +16 -8
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_pooling.py +6 -3
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_query_mixin.py +2 -2
- sqlspec-0.28.0/tests/integration/test_extensions/__init__.py +1 -0
- sqlspec-0.28.0/tests/integration/test_extensions/test_fastapi_filters_integration.py +390 -0
- sqlspec-0.28.0/tests/integration/test_extensions/test_fastapi_integration.py +281 -0
- sqlspec-0.28.0/tests/integration/test_extensions/test_flask_integration.py +315 -0
- sqlspec-0.28.0/tests/integration/test_extensions/test_starlette_integration.py +222 -0
- sqlspec-0.28.0/tests/integration/test_migrations/test_auto_sync.py +333 -0
- sqlspec-0.28.0/tests/integration/test_migrations/test_fix_checksum_stability.py +203 -0
- sqlspec-0.28.0/tests/integration/test_migrations/test_fix_file_operations.py +376 -0
- sqlspec-0.28.0/tests/integration/test_migrations/test_fix_idempotency_workflow.py +353 -0
- sqlspec-0.28.0/tests/integration/test_migrations/test_schema_migration.py +311 -0
- sqlspec-0.28.0/tests/integration/test_migrations/test_upgrade_downgrade_versions.py +409 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_storage/test_storage_integration.py +19 -11
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/conftest.py +22 -21
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/conftest.py +12 -12
- sqlspec-0.28.0/tests/unit/test_adapters/test_adbc/test_adbc_serialization.py +120 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/test_async_adapters.py +12 -51
- sqlspec-0.28.0/tests/unit/test_adapters/test_asyncmy/__init__.py +0 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_asyncpg/__init__.py +1 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_asyncpg/test_config.py +0 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_asyncpg/test_type_handlers.py +66 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_bigquery/__init__.py +1 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_duckdb/__init__.py +1 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_duckdb/test_type_converter.py +82 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_extension_config.py +194 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_oracledb/test_numpy_handlers.py +228 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_oracledb/test_type_converter_vectors.py +192 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_psycopg/test_type_handlers.py +83 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_sqlite/__init__.py +0 -0
- sqlspec-0.28.0/tests/unit/test_adapters/test_sqlite/test_type_handlers.py +44 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/test_sync_adapters.py +12 -12
- sqlspec-0.28.0/tests/unit/test_arrow_helpers.py +156 -0
- sqlspec-0.28.0/tests/unit/test_arrow_result.py +150 -0
- sqlspec-0.28.0/tests/unit/test_cli/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_cli/test_config_loading.py +33 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_cli/test_migration_commands.py +43 -7
- sqlspec-0.28.0/tests/unit/test_cli/test_shell_completion.py +72 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_parameters.py +3 -3
- sqlspec-0.28.0/tests/unit/test_core/test_result.py +298 -0
- sqlspec-0.28.0/tests/unit/test_driver/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_driver/test_result_tools.py +66 -6
- sqlspec-0.28.0/tests/unit/test_exceptions.py +44 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_fastapi/__init__.py +1 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_fastapi/test_extension.py +95 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_fastapi/test_providers.py +338 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_flask/__init__.py +1 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_flask/test_extension.py +98 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_flask/test_state.py +161 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_litestar/test_handlers.py +277 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_starlette/__init__.py +1 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_starlette/test_config_state.py +65 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_starlette/test_extension.py +69 -0
- sqlspec-0.28.0/tests/unit/test_extensions/test_starlette/test_utils.py +143 -0
- sqlspec-0.28.0/tests/unit/test_migrations/test_checksum_canonicalization.py +345 -0
- sqlspec-0.28.0/tests/unit/test_migrations/test_fix_regex_precision.py +368 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration_commands.py +98 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration_execution.py +8 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration_runner.py +276 -0
- sqlspec-0.28.0/tests/unit/test_migrations/test_tracker_idempotency.py +317 -0
- sqlspec-0.28.0/tests/unit/test_migrations/test_utils.py +274 -0
- sqlspec-0.28.0/tests/unit/test_migrations/test_validation.py +206 -0
- sqlspec-0.28.0/tests/unit/test_migrations/test_version.py +225 -0
- sqlspec-0.28.0/tests/unit/test_migrations/test_version_conversion.py +303 -0
- sqlspec-0.28.0/tests/unit/test_migrations/test_version_parsing_edge_cases.py +236 -0
- sqlspec-0.28.0/tests/unit/test_serialization.py +615 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_sql_factory.py +8 -7
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/test_fsspec_backend.py +9 -4
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/test_local_store.py +9 -4
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/test_obstore_backend.py +9 -4
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/test_storage_registry.py +61 -21
- sqlspec-0.28.0/tests/unit/test_storage/test_storage_utils.py +75 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_correlation.py +0 -1
- sqlspec-0.28.0/tests/unit/test_utils/test_dependencies.py +58 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_fixtures.py +0 -9
- sqlspec-0.28.0/tests/unit/test_utils/test_portal.py +300 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_serializers.py +201 -1
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_sync_tools.py +82 -19
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_type_guards.py +93 -14
- sqlspec-0.28.0/tools/__init__.py +0 -0
- sqlspec-0.28.0/tools/build_docs.py +35 -0
- sqlspec-0.28.0/tools/fix_documentation.py +227 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/sphinx_ext/changelog.py +2 -2
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/sphinx_ext/missing_references.py +12 -63
- sqlspec-0.28.0/uv.lock +6999 -0
- sqlspec-0.26.0/NOTICE +0 -29
- sqlspec-0.26.0/sqlspec/adapters/asyncmy/driver.py +0 -334
- sqlspec-0.26.0/sqlspec/adapters/asyncpg/_types.py +0 -17
- sqlspec-0.26.0/sqlspec/adapters/bigquery/driver.py +0 -552
- sqlspec-0.26.0/sqlspec/adapters/oracledb/driver.py +0 -587
- sqlspec-0.26.0/sqlspec/adapters/oracledb/migrations.py +0 -241
- sqlspec-0.26.0/sqlspec/builder/__init__.py +0 -68
- sqlspec-0.26.0/sqlspec/builder/_merge.py +0 -71
- sqlspec-0.26.0/sqlspec/builder/_select.py +0 -316
- sqlspec-0.26.0/sqlspec/builder/mixins/__init__.py +0 -55
- sqlspec-0.26.0/sqlspec/builder/mixins/_cte_and_set_ops.py +0 -253
- sqlspec-0.26.0/sqlspec/builder/mixins/_delete_operations.py +0 -50
- sqlspec-0.26.0/sqlspec/builder/mixins/_insert_operations.py +0 -282
- sqlspec-0.26.0/sqlspec/builder/mixins/_merge_operations.py +0 -698
- sqlspec-0.26.0/sqlspec/builder/mixins/_order_limit_operations.py +0 -145
- sqlspec-0.26.0/sqlspec/builder/mixins/_pivot_operations.py +0 -157
- sqlspec-0.26.0/sqlspec/builder/mixins/_select_operations.py +0 -930
- sqlspec-0.26.0/sqlspec/builder/mixins/_update_operations.py +0 -199
- sqlspec-0.26.0/sqlspec/builder/mixins/_where_clause.py +0 -1298
- sqlspec-0.26.0/sqlspec/driver/mixins/_result_tools.py +0 -277
- sqlspec-0.26.0/sqlspec/extensions/litestar/__init__.py +0 -6
- sqlspec-0.26.0/sqlspec/extensions/litestar/cli.py +0 -48
- sqlspec-0.26.0/sqlspec/extensions/litestar/config.py +0 -276
- sqlspec-0.26.0/sqlspec/extensions/litestar/plugin.py +0 -386
- sqlspec-0.26.0/sqlspec/migrations/commands.py +0 -400
- sqlspec-0.26.0/sqlspec/migrations/tracker.py +0 -187
- sqlspec-0.26.0/sqlspec/storage/backends/obstore.py +0 -474
- sqlspec-0.26.0/sqlspec/utils/__init__.py +0 -10
- sqlspec-0.26.0/sqlspec/utils/module_loader.py +0 -93
- sqlspec-0.26.0/sqlspec/utils/serializers.py +0 -58
- sqlspec-0.26.0/tests/unit/test_cli/__init__.py +0 -1
- sqlspec-0.26.0/tests/unit/test_core/test_result.py +0 -140
- sqlspec-0.26.0/tests/unit/test_extensions/test_litestar/test_config.py +0 -482
- sqlspec-0.26.0/tests/unit/test_serialization.py +0 -254
- sqlspec-0.26.0/tools/build_docs.py +0 -93
- sqlspec-0.26.0/uv.lock +0 -6325
- {sqlspec-0.26.0 → sqlspec-0.28.0}/CONTRIBUTING.rst +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/LICENSE +0 -0
- /sqlspec-0.26.0/sqlspec/adapters/__init__.py → /sqlspec-0.28.0/specs/active/.gitkeep +0 -0
- /sqlspec-0.26.0/sqlspec/extensions/__init__.py → /sqlspec-0.28.0/specs/archive/.gitkeep +0 -0
- /sqlspec-0.26.0/sqlspec/py.typed → /sqlspec-0.28.0/specs/template-spec/research/.gitkeep +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/__main__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/__metadata__.py +0 -0
- {sqlspec-0.26.0/tests → sqlspec-0.28.0/sqlspec/adapters}/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/adbc/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/aiosqlite/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/bigquery/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/duckdb/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/oracledb/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psqlpy/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/adapters/psycopg/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/builder/_expression_wrappers.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/driver/mixins/__init__.py +0 -0
- {sqlspec-0.26.0/tests/unit/test_driver → sqlspec-0.28.0/sqlspec/extensions}/__init__.py +0 -0
- {sqlspec-0.26.0/tools → sqlspec-0.28.0/sqlspec/extensions/adk/migrations}/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/aiosql/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/extensions/litestar/_utils.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/migrations/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/backends/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/storage/backends/base.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/sqlspec/utils/singleton.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/asset_maintenance.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/ddls-mysql-collection.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/ddls-postgres-collection.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/init.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-config.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-data_types.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-database_details.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-engines.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-hostname.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-plugins.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-process_list.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-resource-groups.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-schema_objects.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-table_details.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/collection-users.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/mysql/init.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/oracle.ddl.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-applications.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-aws_extension_dependency.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-aws_oracle_exists.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-bg_writer_stats.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-calculated_metrics.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-data_types.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-database_details.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-extensions.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-index_details.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-pglogical-details.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-privileges.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-replication_slots.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-replication_stats.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-schema_details.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-schema_objects.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-settings.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-source_details.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/collection-table_details.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/extended-collection-all-databases.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/postgres/init.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/fixtures/readiness-check.sql +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_arrow_features.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_backends.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_connection.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_driver.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_edge_cases.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_adbc_results.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_data_dictionary.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_adbc/test_parameter_styles.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_driver.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_parameter_styles.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_aiosqlite/test_pooling.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncmy/conftest.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/conftest.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_connection.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_data_dictionary.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_asyncpg/test_driver.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/test_bigquery_features.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/test_config.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/test_connection.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_bigquery/test_driver.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_driver.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_execute_many.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_mixed_parameter_styles.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_parameter_styles.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_duckdb/test_pooling.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/conftest.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_oracledb/test_connection.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/conftest.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_parameter_styles.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psqlpy/test_psqlpy_features.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/conftest.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_connection.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_driver.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_execute_many.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_psycopg/test_parameter_styles.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/conftest.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_data_dictionary.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_driver.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_adapters/test_sqlite/test_parameter_styles.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_async_migrations.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_dishka/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_dishka/conftest.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_dishka/test_dishka_integration.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_loader/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_loader/test_file_system_loading.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_migrations/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/integration/test_storage/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_adapters/test_adapter_implementations.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_base/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_base/test_sql_integration.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_base/test_sqlspec_class.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/test_insert_builder.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/test_lateral_joins.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/test_parameter_naming.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder/test_select_locking.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_builder_parameter_naming.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_config_resolver.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_cache.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_compiler.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_filters.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_hashing.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_core/test_statement.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_cte_parameter_collisions.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_driver/test_data_dictionary.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_extensions/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_extensions/test_litestar/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/test_cache_integration.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/test_fixtures_directory_loading.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/test_loading_patterns.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_loader/test_sql_file_loader.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migration_context.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_extension_discovery.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_migrations/test_migration_context.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_parsing_utils.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_storage/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_type_conversion.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/__init__.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_data_transformation.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_deprecation.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_logging.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_module_loader.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_singleton.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_utils/test_text.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tests/unit/test_where_or_operations.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/local-infra.sh +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/pypi_readme.py +0 -0
- {sqlspec-0.26.0 → sqlspec-0.28.0}/tools/sphinx_ext/__init__.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
../AGENTS.md
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
# SQLSpec Agent System
|
|
2
|
+
|
|
3
|
+
Enhanced agent system for AI-assisted SQLSpec development, compatible with Claude, Gemini, Codex, and other AI coding assistants.
|
|
4
|
+
|
|
5
|
+
**Last updated:** 2025-10-09 (Enhancement)
|
|
6
|
+
|
|
7
|
+
## Quick Start
|
|
8
|
+
|
|
9
|
+
```bash
|
|
10
|
+
# 1. Create PRD for a feature
|
|
11
|
+
/prd implement vector search for Oracle
|
|
12
|
+
|
|
13
|
+
# 2. Implement it
|
|
14
|
+
/implement
|
|
15
|
+
|
|
16
|
+
# 3. Create tests
|
|
17
|
+
/test
|
|
18
|
+
|
|
19
|
+
# 4. Review, validate, and cleanup
|
|
20
|
+
/review
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
## Core Agents (Enhanced System)
|
|
24
|
+
|
|
25
|
+
### 1. **PRD** - Product Requirements and Design
|
|
26
|
+
|
|
27
|
+
- Research-grounded planning (guides + Context7 + WebSearch)
|
|
28
|
+
- Structured multi-step plans via zen.planner
|
|
29
|
+
- Multi-model consensus via zen.consensus
|
|
30
|
+
- Creates workspace in `specs/active/{requirement}/`
|
|
31
|
+
|
|
32
|
+
**Invoke:** `/prd {feature description}`
|
|
33
|
+
|
|
34
|
+
### 2. **Expert** - Implementation
|
|
35
|
+
|
|
36
|
+
- Implements features following AGENTS.md standards
|
|
37
|
+
- Uses zen.debug for systematic debugging
|
|
38
|
+
- Uses zen.thinkdeep for complex decisions
|
|
39
|
+
- Uses zen.analyze for code analysis
|
|
40
|
+
- Updates workspace continuously
|
|
41
|
+
|
|
42
|
+
**Invoke:** `/implement`
|
|
43
|
+
|
|
44
|
+
### 3. **Testing** - Comprehensive Testing
|
|
45
|
+
|
|
46
|
+
- Creates function-based pytest tests (no classes)
|
|
47
|
+
- Unit tests (tests/unit/) + Integration tests (tests/integration/)
|
|
48
|
+
- Tests edge cases: empty, None, errors, concurrency
|
|
49
|
+
- Verifies coverage: 80%+ adapters, 90%+ core
|
|
50
|
+
|
|
51
|
+
**Invoke:** `/test`
|
|
52
|
+
|
|
53
|
+
### 4. **Docs & Vision** - Documentation, Quality Gate, Cleanup
|
|
54
|
+
|
|
55
|
+
Three sequential phases:
|
|
56
|
+
|
|
57
|
+
1. **Documentation** - Updates docs/guides/, API reference
|
|
58
|
+
2. **Quality Gate** - Validates code quality (BLOCKS if fails)
|
|
59
|
+
3. **Cleanup** - MANDATORY workspace cleanup and archiving
|
|
60
|
+
|
|
61
|
+
**Invoke:** `/review`
|
|
62
|
+
|
|
63
|
+
## Workspace Structure
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
specs/active/
|
|
67
|
+
├── {requirement-slug}/ # Active requirement
|
|
68
|
+
│ ├── prd.md # Product Requirements Document
|
|
69
|
+
│ ├── tasks.md # Implementation checklist
|
|
70
|
+
│ ├── recovery.md # Session resume guide
|
|
71
|
+
│ ├── research/ # Research findings
|
|
72
|
+
│ │ └── plan.md
|
|
73
|
+
│ └── tmp/ # Temporary files (cleaned by Docs & Vision)
|
|
74
|
+
├── archive/ # Completed requirements
|
|
75
|
+
└── README.md
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Guides (Shared Across All AIs)
|
|
79
|
+
|
|
80
|
+
All guides consolidated in `docs/guides/`:
|
|
81
|
+
|
|
82
|
+
```
|
|
83
|
+
docs/guides/
|
|
84
|
+
├── adapters/ # Database adapter patterns (10 adapters)
|
|
85
|
+
├── performance/ # SQLglot and mypyc optimization
|
|
86
|
+
├── testing/ # Pytest strategies
|
|
87
|
+
├── architecture/ # Core design patterns
|
|
88
|
+
└── quick-reference/ # Common code patterns
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
These guides are the **canonical source of truth** for SQLSpec patterns.
|
|
92
|
+
|
|
93
|
+
## Workflow
|
|
94
|
+
|
|
95
|
+
### Full Feature Development
|
|
96
|
+
|
|
97
|
+
1. **PRD:** Research → Structured planning → Create workspace
|
|
98
|
+
|
|
99
|
+
```bash
|
|
100
|
+
/prd add connection pooling for asyncpg
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
2. **Implement:** Read plan → Implement → Test → Update workspace
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
/implement
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
3. **Test:** Create tests → Verify coverage → All tests pass
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
/test
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
4. **Review:** Document → Quality gate → Cleanup
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
/review
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### Bug Fix
|
|
122
|
+
|
|
123
|
+
1. **PRD (optional):** Quick PRD for complex bugs
|
|
124
|
+
2. **Implement:** Use zen.debug for systematic investigation
|
|
125
|
+
3. **Test:** Add regression test
|
|
126
|
+
4. **Review:** Quality gate + cleanup
|
|
127
|
+
|
|
128
|
+
### Session Continuity
|
|
129
|
+
|
|
130
|
+
Resume work across sessions/context resets:
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
# Find active work
|
|
134
|
+
Read("specs/active/{requirement}/recovery.md") # Shows status, next steps
|
|
135
|
+
Read("specs/active/{requirement}/tasks.md") # Shows what's done
|
|
136
|
+
Read("specs/active/{requirement}/prd.md") # Full context
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
## Code Quality Standards
|
|
140
|
+
|
|
141
|
+
All agents enforce [AGENTS.md](../AGENTS.md) standards:
|
|
142
|
+
|
|
143
|
+
### ✅ ALWAYS
|
|
144
|
+
|
|
145
|
+
- Stringified type hints: `def foo(config: "SQLConfig"):`
|
|
146
|
+
- Type guards from `sqlspec.utils.type_guards`
|
|
147
|
+
- Clean names: `process_query()`, not `process_query_optimized()`
|
|
148
|
+
- Function-based tests: `def test_something():`
|
|
149
|
+
|
|
150
|
+
### ❌ NEVER
|
|
151
|
+
|
|
152
|
+
- `from __future__ import annotations`
|
|
153
|
+
- Defensive patterns: `hasattr()`, `getattr()`
|
|
154
|
+
- Workaround naming: `_optimized`, `_with_cache`, `_fallback`
|
|
155
|
+
- Class-based tests: `class TestSomething:`
|
|
156
|
+
|
|
157
|
+
## MCP Tools
|
|
158
|
+
|
|
159
|
+
### zen.planner
|
|
160
|
+
|
|
161
|
+
Structured multi-step planning workflow
|
|
162
|
+
|
|
163
|
+
**Used by:** PRD
|
|
164
|
+
|
|
165
|
+
### zen.consensus
|
|
166
|
+
|
|
167
|
+
Multi-model decision verification (gemini-2.5-pro, gpt-5)
|
|
168
|
+
|
|
169
|
+
**Used by:** PRD, Expert
|
|
170
|
+
|
|
171
|
+
### zen.debug
|
|
172
|
+
|
|
173
|
+
Systematic debugging workflow
|
|
174
|
+
|
|
175
|
+
**Used by:** Expert
|
|
176
|
+
|
|
177
|
+
### zen.thinkdeep
|
|
178
|
+
|
|
179
|
+
Deep analysis for complex decisions
|
|
180
|
+
|
|
181
|
+
**Used by:** Expert
|
|
182
|
+
|
|
183
|
+
### zen.analyze
|
|
184
|
+
|
|
185
|
+
Code analysis (architecture, performance, security)
|
|
186
|
+
|
|
187
|
+
**Used by:** Expert
|
|
188
|
+
|
|
189
|
+
### Context7
|
|
190
|
+
|
|
191
|
+
Up-to-date library documentation
|
|
192
|
+
|
|
193
|
+
**Used by:** All agents
|
|
194
|
+
|
|
195
|
+
### WebSearch
|
|
196
|
+
|
|
197
|
+
Current best practices (2025+)
|
|
198
|
+
|
|
199
|
+
**Used by:** All agents
|
|
200
|
+
|
|
201
|
+
## Quality Gate
|
|
202
|
+
|
|
203
|
+
**MANDATORY before work completion:**
|
|
204
|
+
|
|
205
|
+
✅ `make lint` passes
|
|
206
|
+
✅ No defensive patterns (hasattr/getattr)
|
|
207
|
+
✅ No workaround naming (_optimized, etc.)
|
|
208
|
+
✅ No class-based tests
|
|
209
|
+
✅ All tests pass
|
|
210
|
+
✅ Documentation complete
|
|
211
|
+
✅ PRD acceptance criteria met
|
|
212
|
+
|
|
213
|
+
**If quality gate fails, work is NOT complete.**
|
|
214
|
+
|
|
215
|
+
## Cleanup Protocol
|
|
216
|
+
|
|
217
|
+
**MANDATORY after every `/review`:**
|
|
218
|
+
|
|
219
|
+
1. Remove all `tmp/` directories
|
|
220
|
+
2. Archive completed requirement to `specs/active/archive/`
|
|
221
|
+
3. Keep only last 3 active requirements
|
|
222
|
+
4. Archive planning reports to `.claude/reports/archive/`
|
|
223
|
+
|
|
224
|
+
**Never skip cleanup.**
|
|
225
|
+
|
|
226
|
+
## Documentation
|
|
227
|
+
|
|
228
|
+
- **[AGENTS.md](AGENTS.md)** - Comprehensive agent coordination guide
|
|
229
|
+
- **[../docs/guides/README.md](../docs/guides/README.md)** - Index of all development guides
|
|
230
|
+
- **[../specs/active/README.md](../specs/active/README.md)** - Workspace structure and usage
|
|
231
|
+
- **[../AGENTS.md](../AGENTS.md)** - Code quality standards (mandatory reading)
|
|
232
|
+
|
|
233
|
+
## Archive
|
|
234
|
+
|
|
235
|
+
Old agent definitions and guides archived in:
|
|
236
|
+
|
|
237
|
+
- `.claude/archive/enhancement_20251009_231818/` - Previous system snapshot
|
|
238
|
+
|
|
239
|
+
## Maintenance
|
|
240
|
+
|
|
241
|
+
Run enhancement bootstrap again when:
|
|
242
|
+
|
|
243
|
+
- Tech stack changes significantly
|
|
244
|
+
- Want to add new MCP tools
|
|
245
|
+
- Agents feel outdated
|
|
246
|
+
- Need better cleanup protocols
|
|
247
|
+
|
|
248
|
+
## Enhancement History
|
|
249
|
+
|
|
250
|
+
- **2025-10-09:** Major enhancement
|
|
251
|
+
- Consolidated guides to `docs/guides/`
|
|
252
|
+
- Created 4 core agents (PRD, Expert, Testing, Docs & Vision)
|
|
253
|
+
- Added `specs/active/` workspace system
|
|
254
|
+
- Added mandatory cleanup protocols
|
|
255
|
+
- Created workflow commands (`/prd`, `/implement`, `/test`, `/review`)
|
|
256
|
+
- Archived old agents and guides
|
|
257
|
+
|
|
258
|
+
## See Also
|
|
259
|
+
|
|
260
|
+
- [Agent Coordination Guide](AGENTS.md) - Detailed agent workflows
|
|
261
|
+
- [Code Quality Standards](../AGENTS.md) - MANDATORY coding standards
|
|
262
|
+
- [Development Guides](../docs/guides/) - Canonical pattern reference
|
|
263
|
+
- [Workspace Guide](../specs/active/README.md) - Workspace management
|