sqlspec 0.36.0__cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl
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.
- ac8f31065839703b4e70__mypyc.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/__init__.py +140 -0
- sqlspec/__main__.py +12 -0
- sqlspec/__metadata__.py +14 -0
- sqlspec/_serialization.py +315 -0
- sqlspec/_typing.py +700 -0
- sqlspec/adapters/__init__.py +0 -0
- sqlspec/adapters/adbc/__init__.py +5 -0
- sqlspec/adapters/adbc/_typing.py +82 -0
- sqlspec/adapters/adbc/adk/__init__.py +5 -0
- sqlspec/adapters/adbc/adk/store.py +1273 -0
- sqlspec/adapters/adbc/config.py +295 -0
- sqlspec/adapters/adbc/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/adbc/core.py +735 -0
- sqlspec/adapters/adbc/data_dictionary.py +334 -0
- sqlspec/adapters/adbc/driver.py +529 -0
- sqlspec/adapters/adbc/events/__init__.py +5 -0
- sqlspec/adapters/adbc/events/store.py +285 -0
- sqlspec/adapters/adbc/litestar/__init__.py +5 -0
- sqlspec/adapters/adbc/litestar/store.py +502 -0
- sqlspec/adapters/adbc/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/adbc/type_converter.py +140 -0
- sqlspec/adapters/aiosqlite/__init__.py +25 -0
- sqlspec/adapters/aiosqlite/_typing.py +82 -0
- sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/adk/store.py +818 -0
- sqlspec/adapters/aiosqlite/config.py +334 -0
- sqlspec/adapters/aiosqlite/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/aiosqlite/core.py +315 -0
- sqlspec/adapters/aiosqlite/data_dictionary.py +208 -0
- sqlspec/adapters/aiosqlite/driver.py +313 -0
- sqlspec/adapters/aiosqlite/events/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/events/store.py +20 -0
- sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/litestar/store.py +279 -0
- sqlspec/adapters/aiosqlite/pool.py +533 -0
- sqlspec/adapters/asyncmy/__init__.py +21 -0
- sqlspec/adapters/asyncmy/_typing.py +87 -0
- sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
- sqlspec/adapters/asyncmy/adk/store.py +703 -0
- sqlspec/adapters/asyncmy/config.py +302 -0
- sqlspec/adapters/asyncmy/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/asyncmy/core.py +360 -0
- sqlspec/adapters/asyncmy/data_dictionary.py +124 -0
- sqlspec/adapters/asyncmy/driver.py +383 -0
- sqlspec/adapters/asyncmy/events/__init__.py +5 -0
- sqlspec/adapters/asyncmy/events/store.py +104 -0
- sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
- sqlspec/adapters/asyncmy/litestar/store.py +296 -0
- sqlspec/adapters/asyncpg/__init__.py +19 -0
- sqlspec/adapters/asyncpg/_typing.py +88 -0
- sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
- sqlspec/adapters/asyncpg/adk/store.py +748 -0
- sqlspec/adapters/asyncpg/config.py +569 -0
- sqlspec/adapters/asyncpg/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/asyncpg/core.py +367 -0
- sqlspec/adapters/asyncpg/data_dictionary.py +162 -0
- sqlspec/adapters/asyncpg/driver.py +487 -0
- sqlspec/adapters/asyncpg/events/__init__.py +6 -0
- sqlspec/adapters/asyncpg/events/backend.py +286 -0
- sqlspec/adapters/asyncpg/events/store.py +40 -0
- sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
- sqlspec/adapters/asyncpg/litestar/store.py +251 -0
- sqlspec/adapters/bigquery/__init__.py +14 -0
- sqlspec/adapters/bigquery/_typing.py +86 -0
- sqlspec/adapters/bigquery/adk/__init__.py +5 -0
- sqlspec/adapters/bigquery/adk/store.py +827 -0
- sqlspec/adapters/bigquery/config.py +353 -0
- sqlspec/adapters/bigquery/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/bigquery/core.py +715 -0
- sqlspec/adapters/bigquery/data_dictionary.py +128 -0
- sqlspec/adapters/bigquery/driver.py +548 -0
- sqlspec/adapters/bigquery/events/__init__.py +5 -0
- sqlspec/adapters/bigquery/events/store.py +139 -0
- sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
- sqlspec/adapters/bigquery/litestar/store.py +325 -0
- sqlspec/adapters/bigquery/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/bigquery/type_converter.py +107 -0
- sqlspec/adapters/cockroach_asyncpg/__init__.py +24 -0
- sqlspec/adapters/cockroach_asyncpg/_typing.py +72 -0
- sqlspec/adapters/cockroach_asyncpg/adk/__init__.py +3 -0
- sqlspec/adapters/cockroach_asyncpg/adk/store.py +410 -0
- sqlspec/adapters/cockroach_asyncpg/config.py +238 -0
- sqlspec/adapters/cockroach_asyncpg/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/cockroach_asyncpg/core.py +55 -0
- sqlspec/adapters/cockroach_asyncpg/data_dictionary.py +107 -0
- sqlspec/adapters/cockroach_asyncpg/driver.py +144 -0
- sqlspec/adapters/cockroach_asyncpg/events/__init__.py +3 -0
- sqlspec/adapters/cockroach_asyncpg/events/store.py +20 -0
- sqlspec/adapters/cockroach_asyncpg/litestar/__init__.py +3 -0
- sqlspec/adapters/cockroach_asyncpg/litestar/store.py +142 -0
- sqlspec/adapters/cockroach_psycopg/__init__.py +38 -0
- sqlspec/adapters/cockroach_psycopg/_typing.py +129 -0
- sqlspec/adapters/cockroach_psycopg/adk/__init__.py +13 -0
- sqlspec/adapters/cockroach_psycopg/adk/store.py +868 -0
- sqlspec/adapters/cockroach_psycopg/config.py +484 -0
- sqlspec/adapters/cockroach_psycopg/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/cockroach_psycopg/core.py +63 -0
- sqlspec/adapters/cockroach_psycopg/data_dictionary.py +215 -0
- sqlspec/adapters/cockroach_psycopg/driver.py +284 -0
- sqlspec/adapters/cockroach_psycopg/events/__init__.py +6 -0
- sqlspec/adapters/cockroach_psycopg/events/store.py +34 -0
- sqlspec/adapters/cockroach_psycopg/litestar/__init__.py +3 -0
- sqlspec/adapters/cockroach_psycopg/litestar/store.py +325 -0
- sqlspec/adapters/duckdb/__init__.py +25 -0
- sqlspec/adapters/duckdb/_typing.py +81 -0
- sqlspec/adapters/duckdb/adk/__init__.py +14 -0
- sqlspec/adapters/duckdb/adk/store.py +850 -0
- sqlspec/adapters/duckdb/config.py +463 -0
- sqlspec/adapters/duckdb/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/duckdb/core.py +257 -0
- sqlspec/adapters/duckdb/data_dictionary.py +140 -0
- sqlspec/adapters/duckdb/driver.py +430 -0
- sqlspec/adapters/duckdb/events/__init__.py +5 -0
- sqlspec/adapters/duckdb/events/store.py +57 -0
- sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
- sqlspec/adapters/duckdb/litestar/store.py +330 -0
- sqlspec/adapters/duckdb/pool.py +293 -0
- sqlspec/adapters/duckdb/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/duckdb/type_converter.py +118 -0
- sqlspec/adapters/mock/__init__.py +72 -0
- sqlspec/adapters/mock/_typing.py +147 -0
- sqlspec/adapters/mock/config.py +483 -0
- sqlspec/adapters/mock/core.py +319 -0
- sqlspec/adapters/mock/data_dictionary.py +366 -0
- sqlspec/adapters/mock/driver.py +721 -0
- sqlspec/adapters/mysqlconnector/__init__.py +36 -0
- sqlspec/adapters/mysqlconnector/_typing.py +141 -0
- sqlspec/adapters/mysqlconnector/adk/__init__.py +15 -0
- sqlspec/adapters/mysqlconnector/adk/store.py +1060 -0
- sqlspec/adapters/mysqlconnector/config.py +394 -0
- sqlspec/adapters/mysqlconnector/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/mysqlconnector/core.py +303 -0
- sqlspec/adapters/mysqlconnector/data_dictionary.py +235 -0
- sqlspec/adapters/mysqlconnector/driver.py +483 -0
- sqlspec/adapters/mysqlconnector/events/__init__.py +8 -0
- sqlspec/adapters/mysqlconnector/events/store.py +98 -0
- sqlspec/adapters/mysqlconnector/litestar/__init__.py +5 -0
- sqlspec/adapters/mysqlconnector/litestar/store.py +426 -0
- sqlspec/adapters/oracledb/__init__.py +60 -0
- sqlspec/adapters/oracledb/_numpy_handlers.py +141 -0
- sqlspec/adapters/oracledb/_typing.py +182 -0
- sqlspec/adapters/oracledb/_uuid_handlers.py +166 -0
- sqlspec/adapters/oracledb/adk/__init__.py +10 -0
- sqlspec/adapters/oracledb/adk/store.py +2369 -0
- sqlspec/adapters/oracledb/config.py +550 -0
- sqlspec/adapters/oracledb/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/oracledb/core.py +543 -0
- sqlspec/adapters/oracledb/data_dictionary.py +536 -0
- sqlspec/adapters/oracledb/driver.py +1229 -0
- sqlspec/adapters/oracledb/events/__init__.py +16 -0
- sqlspec/adapters/oracledb/events/backend.py +347 -0
- sqlspec/adapters/oracledb/events/store.py +420 -0
- sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
- sqlspec/adapters/oracledb/litestar/store.py +781 -0
- sqlspec/adapters/oracledb/migrations.py +535 -0
- sqlspec/adapters/oracledb/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/oracledb/type_converter.py +211 -0
- sqlspec/adapters/psqlpy/__init__.py +17 -0
- sqlspec/adapters/psqlpy/_typing.py +79 -0
- sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
- sqlspec/adapters/psqlpy/adk/store.py +766 -0
- sqlspec/adapters/psqlpy/config.py +304 -0
- sqlspec/adapters/psqlpy/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/psqlpy/core.py +480 -0
- sqlspec/adapters/psqlpy/data_dictionary.py +126 -0
- sqlspec/adapters/psqlpy/driver.py +438 -0
- sqlspec/adapters/psqlpy/events/__init__.py +6 -0
- sqlspec/adapters/psqlpy/events/backend.py +310 -0
- sqlspec/adapters/psqlpy/events/store.py +20 -0
- sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
- sqlspec/adapters/psqlpy/litestar/store.py +270 -0
- sqlspec/adapters/psqlpy/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/psqlpy/type_converter.py +113 -0
- sqlspec/adapters/psycopg/__init__.py +32 -0
- sqlspec/adapters/psycopg/_typing.py +164 -0
- sqlspec/adapters/psycopg/adk/__init__.py +10 -0
- sqlspec/adapters/psycopg/adk/store.py +1387 -0
- sqlspec/adapters/psycopg/config.py +576 -0
- sqlspec/adapters/psycopg/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/psycopg/core.py +450 -0
- sqlspec/adapters/psycopg/data_dictionary.py +289 -0
- sqlspec/adapters/psycopg/driver.py +975 -0
- sqlspec/adapters/psycopg/events/__init__.py +20 -0
- sqlspec/adapters/psycopg/events/backend.py +458 -0
- sqlspec/adapters/psycopg/events/store.py +42 -0
- sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
- sqlspec/adapters/psycopg/litestar/store.py +552 -0
- sqlspec/adapters/psycopg/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/psycopg/type_converter.py +93 -0
- sqlspec/adapters/pymysql/__init__.py +21 -0
- sqlspec/adapters/pymysql/_typing.py +71 -0
- sqlspec/adapters/pymysql/adk/__init__.py +5 -0
- sqlspec/adapters/pymysql/adk/store.py +540 -0
- sqlspec/adapters/pymysql/config.py +195 -0
- sqlspec/adapters/pymysql/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/pymysql/core.py +299 -0
- sqlspec/adapters/pymysql/data_dictionary.py +122 -0
- sqlspec/adapters/pymysql/driver.py +259 -0
- sqlspec/adapters/pymysql/events/__init__.py +5 -0
- sqlspec/adapters/pymysql/events/store.py +50 -0
- sqlspec/adapters/pymysql/litestar/__init__.py +5 -0
- sqlspec/adapters/pymysql/litestar/store.py +232 -0
- sqlspec/adapters/pymysql/pool.py +137 -0
- sqlspec/adapters/spanner/__init__.py +40 -0
- sqlspec/adapters/spanner/_typing.py +86 -0
- sqlspec/adapters/spanner/adk/__init__.py +5 -0
- sqlspec/adapters/spanner/adk/store.py +732 -0
- sqlspec/adapters/spanner/config.py +352 -0
- sqlspec/adapters/spanner/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/spanner/core.py +188 -0
- sqlspec/adapters/spanner/data_dictionary.py +120 -0
- sqlspec/adapters/spanner/dialect/__init__.py +6 -0
- sqlspec/adapters/spanner/dialect/_spangres.py +57 -0
- sqlspec/adapters/spanner/dialect/_spanner.py +130 -0
- sqlspec/adapters/spanner/driver.py +373 -0
- sqlspec/adapters/spanner/events/__init__.py +5 -0
- sqlspec/adapters/spanner/events/store.py +187 -0
- sqlspec/adapters/spanner/litestar/__init__.py +5 -0
- sqlspec/adapters/spanner/litestar/store.py +291 -0
- sqlspec/adapters/spanner/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/spanner/type_converter.py +331 -0
- sqlspec/adapters/sqlite/__init__.py +19 -0
- sqlspec/adapters/sqlite/_typing.py +80 -0
- sqlspec/adapters/sqlite/adk/__init__.py +5 -0
- sqlspec/adapters/sqlite/adk/store.py +958 -0
- sqlspec/adapters/sqlite/config.py +280 -0
- sqlspec/adapters/sqlite/core.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/sqlite/core.py +312 -0
- sqlspec/adapters/sqlite/data_dictionary.py +202 -0
- sqlspec/adapters/sqlite/driver.py +359 -0
- sqlspec/adapters/sqlite/events/__init__.py +5 -0
- sqlspec/adapters/sqlite/events/store.py +20 -0
- sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
- sqlspec/adapters/sqlite/litestar/store.py +316 -0
- sqlspec/adapters/sqlite/pool.py +198 -0
- sqlspec/adapters/sqlite/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/adapters/sqlite/type_converter.py +114 -0
- sqlspec/base.py +747 -0
- sqlspec/builder/__init__.py +179 -0
- sqlspec/builder/_base.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_base.py +1022 -0
- sqlspec/builder/_column.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_column.py +521 -0
- sqlspec/builder/_ddl.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_ddl.py +1642 -0
- sqlspec/builder/_delete.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_delete.py +95 -0
- sqlspec/builder/_dml.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_dml.py +365 -0
- sqlspec/builder/_explain.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_explain.py +579 -0
- sqlspec/builder/_expression_wrappers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_expression_wrappers.py +46 -0
- sqlspec/builder/_factory.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_factory.py +1697 -0
- sqlspec/builder/_insert.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_insert.py +328 -0
- sqlspec/builder/_join.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_join.py +499 -0
- sqlspec/builder/_merge.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_merge.py +821 -0
- sqlspec/builder/_parsing_utils.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_parsing_utils.py +297 -0
- sqlspec/builder/_select.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_select.py +1660 -0
- sqlspec/builder/_temporal.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_temporal.py +139 -0
- sqlspec/builder/_update.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/builder/_update.py +173 -0
- sqlspec/builder/_vector_expressions.py +267 -0
- sqlspec/cli.py +911 -0
- sqlspec/config.py +1755 -0
- sqlspec/core/__init__.py +374 -0
- sqlspec/core/_correlation.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/_correlation.py +176 -0
- sqlspec/core/cache.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/cache.py +1069 -0
- sqlspec/core/compiler.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/compiler.py +954 -0
- sqlspec/core/explain.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/explain.py +275 -0
- sqlspec/core/filters.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/filters.py +952 -0
- sqlspec/core/hashing.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/hashing.py +262 -0
- sqlspec/core/metrics.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/metrics.py +83 -0
- sqlspec/core/parameters/__init__.py +71 -0
- sqlspec/core/parameters/_alignment.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_alignment.py +270 -0
- sqlspec/core/parameters/_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_converter.py +543 -0
- sqlspec/core/parameters/_processor.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_processor.py +505 -0
- sqlspec/core/parameters/_registry.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_registry.py +206 -0
- sqlspec/core/parameters/_transformers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_transformers.py +292 -0
- sqlspec/core/parameters/_types.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_types.py +499 -0
- sqlspec/core/parameters/_validator.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/parameters/_validator.py +180 -0
- sqlspec/core/pipeline.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/pipeline.py +319 -0
- sqlspec/core/query_modifiers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/query_modifiers.py +437 -0
- sqlspec/core/result/__init__.py +23 -0
- sqlspec/core/result/_base.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/result/_base.py +1121 -0
- sqlspec/core/result/_io.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/result/_io.py +28 -0
- sqlspec/core/splitter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/splitter.py +966 -0
- sqlspec/core/stack.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/stack.py +163 -0
- sqlspec/core/statement.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/statement.py +1503 -0
- sqlspec/core/type_converter.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/core/type_converter.py +339 -0
- sqlspec/data_dictionary/__init__.py +22 -0
- sqlspec/data_dictionary/_loader.py +123 -0
- sqlspec/data_dictionary/_registry.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/_registry.py +74 -0
- sqlspec/data_dictionary/_types.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/_types.py +121 -0
- sqlspec/data_dictionary/dialects/__init__.py +21 -0
- sqlspec/data_dictionary/dialects/bigquery.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/bigquery.py +49 -0
- sqlspec/data_dictionary/dialects/cockroachdb.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/cockroachdb.py +43 -0
- sqlspec/data_dictionary/dialects/duckdb.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/duckdb.py +47 -0
- sqlspec/data_dictionary/dialects/mysql.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/mysql.py +42 -0
- sqlspec/data_dictionary/dialects/oracle.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/oracle.py +34 -0
- sqlspec/data_dictionary/dialects/postgres.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/postgres.py +46 -0
- sqlspec/data_dictionary/dialects/spanner.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/spanner.py +37 -0
- sqlspec/data_dictionary/dialects/sqlite.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/data_dictionary/dialects/sqlite.py +42 -0
- sqlspec/data_dictionary/sql/.gitkeep +0 -0
- sqlspec/data_dictionary/sql/bigquery/columns.sql +23 -0
- sqlspec/data_dictionary/sql/bigquery/foreign_keys.sql +34 -0
- sqlspec/data_dictionary/sql/bigquery/indexes.sql +19 -0
- sqlspec/data_dictionary/sql/bigquery/tables.sql +33 -0
- sqlspec/data_dictionary/sql/bigquery/version.sql +3 -0
- sqlspec/data_dictionary/sql/cockroachdb/columns.sql +34 -0
- sqlspec/data_dictionary/sql/cockroachdb/foreign_keys.sql +40 -0
- sqlspec/data_dictionary/sql/cockroachdb/indexes.sql +32 -0
- sqlspec/data_dictionary/sql/cockroachdb/tables.sql +44 -0
- sqlspec/data_dictionary/sql/cockroachdb/version.sql +3 -0
- sqlspec/data_dictionary/sql/duckdb/columns.sql +23 -0
- sqlspec/data_dictionary/sql/duckdb/foreign_keys.sql +36 -0
- sqlspec/data_dictionary/sql/duckdb/indexes.sql +19 -0
- sqlspec/data_dictionary/sql/duckdb/tables.sql +38 -0
- sqlspec/data_dictionary/sql/duckdb/version.sql +3 -0
- sqlspec/data_dictionary/sql/mysql/columns.sql +23 -0
- sqlspec/data_dictionary/sql/mysql/foreign_keys.sql +28 -0
- sqlspec/data_dictionary/sql/mysql/indexes.sql +26 -0
- sqlspec/data_dictionary/sql/mysql/tables.sql +33 -0
- sqlspec/data_dictionary/sql/mysql/version.sql +3 -0
- sqlspec/data_dictionary/sql/oracle/columns.sql +23 -0
- sqlspec/data_dictionary/sql/oracle/foreign_keys.sql +48 -0
- sqlspec/data_dictionary/sql/oracle/indexes.sql +44 -0
- sqlspec/data_dictionary/sql/oracle/tables.sql +25 -0
- sqlspec/data_dictionary/sql/oracle/version.sql +20 -0
- sqlspec/data_dictionary/sql/postgres/columns.sql +34 -0
- sqlspec/data_dictionary/sql/postgres/foreign_keys.sql +40 -0
- sqlspec/data_dictionary/sql/postgres/indexes.sql +56 -0
- sqlspec/data_dictionary/sql/postgres/tables.sql +44 -0
- sqlspec/data_dictionary/sql/postgres/version.sql +3 -0
- sqlspec/data_dictionary/sql/spanner/columns.sql +23 -0
- sqlspec/data_dictionary/sql/spanner/foreign_keys.sql +70 -0
- sqlspec/data_dictionary/sql/spanner/indexes.sql +30 -0
- sqlspec/data_dictionary/sql/spanner/tables.sql +9 -0
- sqlspec/data_dictionary/sql/spanner/version.sql +3 -0
- sqlspec/data_dictionary/sql/sqlite/columns.sql +23 -0
- sqlspec/data_dictionary/sql/sqlite/foreign_keys.sql +22 -0
- sqlspec/data_dictionary/sql/sqlite/indexes.sql +7 -0
- sqlspec/data_dictionary/sql/sqlite/tables.sql +28 -0
- sqlspec/data_dictionary/sql/sqlite/version.sql +3 -0
- sqlspec/driver/__init__.py +32 -0
- sqlspec/driver/_async.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_async.py +1737 -0
- sqlspec/driver/_common.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_common.py +1478 -0
- sqlspec/driver/_sql_helpers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_sql_helpers.py +148 -0
- sqlspec/driver/_storage_helpers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_storage_helpers.py +144 -0
- sqlspec/driver/_sync.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/driver/_sync.py +1710 -0
- sqlspec/exceptions.py +338 -0
- sqlspec/extensions/__init__.py +0 -0
- sqlspec/extensions/adk/__init__.py +70 -0
- sqlspec/extensions/adk/_types.py +51 -0
- sqlspec/extensions/adk/converters.py +172 -0
- sqlspec/extensions/adk/memory/__init__.py +69 -0
- sqlspec/extensions/adk/memory/_types.py +30 -0
- sqlspec/extensions/adk/memory/converters.py +149 -0
- sqlspec/extensions/adk/memory/service.py +217 -0
- sqlspec/extensions/adk/memory/store.py +569 -0
- sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +246 -0
- sqlspec/extensions/adk/migrations/__init__.py +0 -0
- sqlspec/extensions/adk/service.py +225 -0
- sqlspec/extensions/adk/store.py +567 -0
- sqlspec/extensions/events/__init__.py +51 -0
- sqlspec/extensions/events/_channel.py +703 -0
- sqlspec/extensions/events/_hints.py +45 -0
- sqlspec/extensions/events/_models.py +23 -0
- sqlspec/extensions/events/_payload.py +69 -0
- sqlspec/extensions/events/_protocols.py +134 -0
- sqlspec/extensions/events/_queue.py +461 -0
- sqlspec/extensions/events/_store.py +209 -0
- sqlspec/extensions/events/migrations/0001_create_event_queue.py +59 -0
- sqlspec/extensions/events/migrations/__init__.py +3 -0
- sqlspec/extensions/fastapi/__init__.py +19 -0
- sqlspec/extensions/fastapi/extension.py +351 -0
- sqlspec/extensions/fastapi/providers.py +607 -0
- sqlspec/extensions/flask/__init__.py +37 -0
- sqlspec/extensions/flask/_state.py +76 -0
- sqlspec/extensions/flask/_utils.py +71 -0
- sqlspec/extensions/flask/extension.py +519 -0
- sqlspec/extensions/litestar/__init__.py +28 -0
- sqlspec/extensions/litestar/_utils.py +52 -0
- sqlspec/extensions/litestar/channels.py +165 -0
- sqlspec/extensions/litestar/cli.py +102 -0
- sqlspec/extensions/litestar/config.py +90 -0
- sqlspec/extensions/litestar/handlers.py +316 -0
- sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
- sqlspec/extensions/litestar/migrations/__init__.py +3 -0
- sqlspec/extensions/litestar/plugin.py +671 -0
- sqlspec/extensions/litestar/providers.py +526 -0
- sqlspec/extensions/litestar/store.py +296 -0
- sqlspec/extensions/otel/__init__.py +58 -0
- sqlspec/extensions/prometheus/__init__.py +113 -0
- sqlspec/extensions/starlette/__init__.py +19 -0
- sqlspec/extensions/starlette/_state.py +30 -0
- sqlspec/extensions/starlette/_utils.py +96 -0
- sqlspec/extensions/starlette/extension.py +346 -0
- sqlspec/extensions/starlette/middleware.py +235 -0
- sqlspec/loader.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/loader.py +702 -0
- sqlspec/migrations/__init__.py +36 -0
- sqlspec/migrations/base.py +731 -0
- sqlspec/migrations/commands.py +1232 -0
- sqlspec/migrations/context.py +157 -0
- sqlspec/migrations/fix.py +204 -0
- sqlspec/migrations/loaders.py +443 -0
- sqlspec/migrations/runner.py +1172 -0
- sqlspec/migrations/templates.py +234 -0
- sqlspec/migrations/tracker.py +611 -0
- sqlspec/migrations/utils.py +256 -0
- sqlspec/migrations/validation.py +207 -0
- sqlspec/migrations/version.py +446 -0
- sqlspec/observability/__init__.py +55 -0
- sqlspec/observability/_common.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_common.py +77 -0
- sqlspec/observability/_config.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_config.py +348 -0
- sqlspec/observability/_diagnostics.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_diagnostics.py +74 -0
- sqlspec/observability/_dispatcher.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_dispatcher.py +152 -0
- sqlspec/observability/_formatters/__init__.py +13 -0
- sqlspec/observability/_formatters/_aws.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_formatters/_aws.py +102 -0
- sqlspec/observability/_formatters/_azure.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_formatters/_azure.py +96 -0
- sqlspec/observability/_formatters/_base.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_formatters/_base.py +57 -0
- sqlspec/observability/_formatters/_gcp.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_formatters/_gcp.py +131 -0
- sqlspec/observability/_formatting.py +58 -0
- sqlspec/observability/_observer.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_observer.py +357 -0
- sqlspec/observability/_runtime.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_runtime.py +420 -0
- sqlspec/observability/_sampling.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_sampling.py +188 -0
- sqlspec/observability/_spans.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/observability/_spans.py +161 -0
- sqlspec/protocols.py +916 -0
- sqlspec/py.typed +0 -0
- sqlspec/storage/__init__.py +48 -0
- sqlspec/storage/_utils.py +104 -0
- sqlspec/storage/backends/__init__.py +1 -0
- sqlspec/storage/backends/base.py +253 -0
- sqlspec/storage/backends/fsspec.py +529 -0
- sqlspec/storage/backends/local.py +441 -0
- sqlspec/storage/backends/obstore.py +916 -0
- sqlspec/storage/errors.py +104 -0
- sqlspec/storage/pipeline.py +582 -0
- sqlspec/storage/registry.py +301 -0
- sqlspec/typing.py +395 -0
- sqlspec/utils/__init__.py +7 -0
- sqlspec/utils/arrow_helpers.py +318 -0
- sqlspec/utils/config_tools.py +332 -0
- sqlspec/utils/correlation.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/correlation.py +134 -0
- sqlspec/utils/deprecation.py +190 -0
- sqlspec/utils/fixtures.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/fixtures.py +258 -0
- sqlspec/utils/logging.py +222 -0
- sqlspec/utils/module_loader.py +306 -0
- sqlspec/utils/portal.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/portal.py +375 -0
- sqlspec/utils/schema.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/schema.py +485 -0
- sqlspec/utils/serializers.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/serializers.py +408 -0
- sqlspec/utils/singleton.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/singleton.py +41 -0
- sqlspec/utils/sync_tools.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/sync_tools.py +311 -0
- sqlspec/utils/text.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/text.py +108 -0
- sqlspec/utils/type_converters.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/type_converters.py +128 -0
- sqlspec/utils/type_guards.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/type_guards.py +1360 -0
- sqlspec/utils/uuids.cpython-310-aarch64-linux-gnu.so +0 -0
- sqlspec/utils/uuids.py +225 -0
- sqlspec-0.36.0.dist-info/METADATA +205 -0
- sqlspec-0.36.0.dist-info/RECORD +531 -0
- sqlspec-0.36.0.dist-info/WHEEL +7 -0
- sqlspec-0.36.0.dist-info/entry_points.txt +2 -0
- sqlspec-0.36.0.dist-info/licenses/LICENSE +21 -0
|
@@ -0,0 +1,483 @@
|
|
|
1
|
+
"""Mock database configuration for testing with dialect transpilation.
|
|
2
|
+
|
|
3
|
+
This module provides configuration classes for the mock adapter that use
|
|
4
|
+
SQLite :memory: as the execution backend while accepting SQL written in
|
|
5
|
+
other dialects (Postgres, MySQL, Oracle, etc.).
|
|
6
|
+
"""
|
|
7
|
+
|
|
8
|
+
import sqlite3
|
|
9
|
+
from typing import TYPE_CHECKING, Any, ClassVar, TypedDict
|
|
10
|
+
|
|
11
|
+
from typing_extensions import NotRequired
|
|
12
|
+
|
|
13
|
+
from sqlspec.adapters.mock._typing import MockAsyncSessionContext, MockConnection, MockSyncSessionContext
|
|
14
|
+
from sqlspec.adapters.mock.core import apply_driver_features, default_statement_config
|
|
15
|
+
from sqlspec.adapters.mock.driver import MockAsyncDriver, MockCursor, MockExceptionHandler, MockSyncDriver
|
|
16
|
+
from sqlspec.config import ExtensionConfigs, NoPoolAsyncConfig, NoPoolSyncConfig
|
|
17
|
+
from sqlspec.driver import convert_to_dialect
|
|
18
|
+
from sqlspec.utils.sync_tools import async_
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from collections.abc import Callable
|
|
22
|
+
|
|
23
|
+
from sqlspec.core import StatementConfig
|
|
24
|
+
from sqlspec.observability import ObservabilityConfig
|
|
25
|
+
|
|
26
|
+
__all__ = ("MockAsyncConfig", "MockConnectionParams", "MockDriverFeatures", "MockSyncConfig")
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class MockConnectionParams(TypedDict):
|
|
30
|
+
"""Mock connection parameters.
|
|
31
|
+
|
|
32
|
+
These parameters control the SQLite :memory: backend behavior.
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
target_dialect: NotRequired[str]
|
|
36
|
+
initial_sql: NotRequired["str | list[str]"]
|
|
37
|
+
timeout: NotRequired[float]
|
|
38
|
+
detect_types: NotRequired[int]
|
|
39
|
+
isolation_level: "NotRequired[str | None]"
|
|
40
|
+
check_same_thread: NotRequired[bool]
|
|
41
|
+
cached_statements: NotRequired[int]
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
class MockDriverFeatures(TypedDict):
|
|
45
|
+
"""Mock driver feature configuration.
|
|
46
|
+
|
|
47
|
+
Controls optional type handling and serialization features for Mock connections.
|
|
48
|
+
|
|
49
|
+
json_serializer: Custom JSON serializer function.
|
|
50
|
+
Defaults to sqlspec.utils.serializers.to_json.
|
|
51
|
+
json_deserializer: Custom JSON deserializer function.
|
|
52
|
+
Defaults to sqlspec.utils.serializers.from_json.
|
|
53
|
+
"""
|
|
54
|
+
|
|
55
|
+
json_serializer: "NotRequired[Callable[[Any], str]]"
|
|
56
|
+
json_deserializer: "NotRequired[Callable[[str], Any]]"
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
class MockSyncConnectionContext:
|
|
60
|
+
"""Context manager for Mock sync connections."""
|
|
61
|
+
|
|
62
|
+
__slots__ = ("_config", "_connection")
|
|
63
|
+
|
|
64
|
+
def __init__(self, config: "MockSyncConfig") -> None:
|
|
65
|
+
self._config = config
|
|
66
|
+
self._connection: MockConnection | None = None
|
|
67
|
+
|
|
68
|
+
def __enter__(self) -> MockConnection:
|
|
69
|
+
self._connection = self._config.create_connection()
|
|
70
|
+
return self._connection
|
|
71
|
+
|
|
72
|
+
def __exit__(
|
|
73
|
+
self, exc_type: "type[BaseException] | None", exc_val: "BaseException | None", exc_tb: Any
|
|
74
|
+
) -> "bool | None":
|
|
75
|
+
if self._connection is not None:
|
|
76
|
+
self._connection.close()
|
|
77
|
+
self._connection = None
|
|
78
|
+
return None
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
class MockAsyncConnectionContext:
|
|
82
|
+
"""Async context manager for Mock async connections."""
|
|
83
|
+
|
|
84
|
+
__slots__ = ("_config", "_connection")
|
|
85
|
+
|
|
86
|
+
def __init__(self, config: "MockAsyncConfig") -> None:
|
|
87
|
+
self._config = config
|
|
88
|
+
self._connection: MockConnection | None = None
|
|
89
|
+
|
|
90
|
+
async def __aenter__(self) -> MockConnection:
|
|
91
|
+
self._connection = await self._config.create_connection()
|
|
92
|
+
return self._connection
|
|
93
|
+
|
|
94
|
+
async def __aexit__(
|
|
95
|
+
self, exc_type: "type[BaseException] | None", exc_val: "BaseException | None", exc_tb: Any
|
|
96
|
+
) -> "bool | None":
|
|
97
|
+
if self._connection is not None:
|
|
98
|
+
self._connection.close()
|
|
99
|
+
self._connection = None
|
|
100
|
+
return None
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
class _MockSyncSessionFactory:
|
|
104
|
+
"""Factory for creating mock sync sessions."""
|
|
105
|
+
|
|
106
|
+
__slots__ = ("_config", "_connection")
|
|
107
|
+
|
|
108
|
+
def __init__(self, config: "MockSyncConfig") -> None:
|
|
109
|
+
self._config = config
|
|
110
|
+
self._connection: MockConnection | None = None
|
|
111
|
+
|
|
112
|
+
def acquire_connection(self) -> MockConnection:
|
|
113
|
+
self._connection = self._config.create_connection()
|
|
114
|
+
return self._connection
|
|
115
|
+
|
|
116
|
+
def release_connection(self, conn: MockConnection) -> None:
|
|
117
|
+
if self._connection is not None:
|
|
118
|
+
self._connection.close()
|
|
119
|
+
self._connection = None
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
class _MockAsyncSessionFactory:
|
|
123
|
+
"""Factory for creating mock async sessions."""
|
|
124
|
+
|
|
125
|
+
__slots__ = ("_config", "_connection")
|
|
126
|
+
|
|
127
|
+
def __init__(self, config: "MockAsyncConfig") -> None:
|
|
128
|
+
self._config = config
|
|
129
|
+
self._connection: MockConnection | None = None
|
|
130
|
+
|
|
131
|
+
async def acquire_connection(self) -> MockConnection:
|
|
132
|
+
self._connection = await self._config.create_connection()
|
|
133
|
+
return self._connection
|
|
134
|
+
|
|
135
|
+
async def release_connection(self, conn: MockConnection) -> None:
|
|
136
|
+
if self._connection is not None:
|
|
137
|
+
self._connection.close()
|
|
138
|
+
self._connection = None
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
class MockSyncConfig(NoPoolSyncConfig["MockConnection", "MockSyncDriver"]):
|
|
142
|
+
"""Sync mock database configuration.
|
|
143
|
+
|
|
144
|
+
Uses SQLite :memory: as the execution backend with dialect transpilation.
|
|
145
|
+
Write SQL in your target dialect (Postgres, MySQL, Oracle) and it will
|
|
146
|
+
be transpiled to SQLite before execution.
|
|
147
|
+
|
|
148
|
+
Example:
|
|
149
|
+
config = MockSyncConfig(target_dialect="postgres")
|
|
150
|
+
|
|
151
|
+
with config.provide_session() as session:
|
|
152
|
+
session.execute(\"\"\"
|
|
153
|
+
CREATE TABLE users (
|
|
154
|
+
id SERIAL PRIMARY KEY,
|
|
155
|
+
name VARCHAR(100)
|
|
156
|
+
)
|
|
157
|
+
\"\"\")
|
|
158
|
+
session.execute(
|
|
159
|
+
"INSERT INTO users (name) VALUES ($1)",
|
|
160
|
+
"Alice"
|
|
161
|
+
)
|
|
162
|
+
user = session.select_one("SELECT * FROM users WHERE name = $1", "Alice")
|
|
163
|
+
assert user["name"] == "Alice"
|
|
164
|
+
"""
|
|
165
|
+
|
|
166
|
+
driver_type: "ClassVar[type[MockSyncDriver]]" = MockSyncDriver
|
|
167
|
+
connection_type: "ClassVar[type[MockConnection]]" = MockConnection
|
|
168
|
+
supports_transactional_ddl: "ClassVar[bool]" = True
|
|
169
|
+
supports_native_arrow_export: "ClassVar[bool]" = True
|
|
170
|
+
supports_native_arrow_import: "ClassVar[bool]" = True
|
|
171
|
+
supports_native_parquet_export: "ClassVar[bool]" = True
|
|
172
|
+
supports_native_parquet_import: "ClassVar[bool]" = True
|
|
173
|
+
|
|
174
|
+
def __init__(
|
|
175
|
+
self,
|
|
176
|
+
*,
|
|
177
|
+
target_dialect: str = "sqlite",
|
|
178
|
+
initial_sql: "str | list[str] | None" = None,
|
|
179
|
+
connection_config: "MockConnectionParams | dict[str, Any] | None" = None,
|
|
180
|
+
connection_instance: "Any" = None,
|
|
181
|
+
migration_config: "dict[str, Any] | None" = None,
|
|
182
|
+
statement_config: "StatementConfig | None" = None,
|
|
183
|
+
driver_features: "MockDriverFeatures | dict[str, Any] | None" = None,
|
|
184
|
+
bind_key: "str | None" = None,
|
|
185
|
+
extension_config: "ExtensionConfigs | None" = None,
|
|
186
|
+
observability_config: "ObservabilityConfig | None" = None,
|
|
187
|
+
) -> None:
|
|
188
|
+
"""Initialize Mock sync configuration.
|
|
189
|
+
|
|
190
|
+
Args:
|
|
191
|
+
target_dialect: SQL dialect for input SQL (postgres, mysql, oracle, sqlite).
|
|
192
|
+
SQL will be transpiled to SQLite before execution, unless 'sqlite'.
|
|
193
|
+
initial_sql: SQL statements to execute when creating connection.
|
|
194
|
+
Can be a single string or list of strings. Useful for setting up
|
|
195
|
+
test fixtures.
|
|
196
|
+
connection_config: Additional connection parameters.
|
|
197
|
+
connection_instance: Pre-existing connection (not used for mock).
|
|
198
|
+
migration_config: Migration configuration.
|
|
199
|
+
statement_config: Statement configuration settings.
|
|
200
|
+
driver_features: Driver feature configuration.
|
|
201
|
+
bind_key: Optional unique identifier for this configuration.
|
|
202
|
+
extension_config: Extension-specific configuration.
|
|
203
|
+
observability_config: Observability configuration.
|
|
204
|
+
"""
|
|
205
|
+
config_dict: dict[str, Any] = dict(connection_config) if connection_config else {}
|
|
206
|
+
config_dict["target_dialect"] = target_dialect
|
|
207
|
+
config_dict["initial_sql"] = initial_sql
|
|
208
|
+
|
|
209
|
+
statement_config = statement_config or default_statement_config
|
|
210
|
+
statement_config, driver_features = apply_driver_features(statement_config, driver_features)
|
|
211
|
+
|
|
212
|
+
super().__init__(
|
|
213
|
+
connection_config=config_dict,
|
|
214
|
+
connection_instance=connection_instance,
|
|
215
|
+
migration_config=migration_config,
|
|
216
|
+
statement_config=statement_config,
|
|
217
|
+
driver_features=driver_features,
|
|
218
|
+
bind_key=bind_key,
|
|
219
|
+
extension_config=extension_config,
|
|
220
|
+
observability_config=observability_config,
|
|
221
|
+
)
|
|
222
|
+
|
|
223
|
+
@property
|
|
224
|
+
def target_dialect(self) -> str:
|
|
225
|
+
"""Get the target dialect for SQL transpilation."""
|
|
226
|
+
return str(self.connection_config.get("target_dialect", "sqlite"))
|
|
227
|
+
|
|
228
|
+
@property
|
|
229
|
+
def initial_sql(self) -> "str | list[str] | None":
|
|
230
|
+
"""Get the initial SQL to execute on connection creation."""
|
|
231
|
+
return self.connection_config.get("initial_sql")
|
|
232
|
+
|
|
233
|
+
def create_connection(self) -> MockConnection:
|
|
234
|
+
"""Create a new SQLite :memory: connection.
|
|
235
|
+
|
|
236
|
+
Returns:
|
|
237
|
+
SQLite connection with row factory set.
|
|
238
|
+
"""
|
|
239
|
+
conn = sqlite3.connect(":memory:", check_same_thread=False)
|
|
240
|
+
conn.row_factory = sqlite3.Row
|
|
241
|
+
|
|
242
|
+
if self.initial_sql:
|
|
243
|
+
self._execute_initial_sql(conn)
|
|
244
|
+
|
|
245
|
+
return conn
|
|
246
|
+
|
|
247
|
+
def _execute_initial_sql(self, conn: MockConnection) -> None:
|
|
248
|
+
"""Execute initial SQL statements on a new connection.
|
|
249
|
+
|
|
250
|
+
Args:
|
|
251
|
+
conn: SQLite connection to execute SQL on.
|
|
252
|
+
"""
|
|
253
|
+
initial_sql = self.initial_sql
|
|
254
|
+
if initial_sql is None:
|
|
255
|
+
return
|
|
256
|
+
|
|
257
|
+
statements = initial_sql if isinstance(initial_sql, list) else [initial_sql]
|
|
258
|
+
target_dialect = self.target_dialect
|
|
259
|
+
|
|
260
|
+
for sql in statements:
|
|
261
|
+
if target_dialect != "sqlite":
|
|
262
|
+
transpiled = convert_to_dialect(sql, target_dialect, "sqlite", pretty=False)
|
|
263
|
+
else:
|
|
264
|
+
transpiled = sql
|
|
265
|
+
conn.executescript(transpiled)
|
|
266
|
+
|
|
267
|
+
def provide_connection(self, *args: Any, **kwargs: Any) -> "MockSyncConnectionContext":
|
|
268
|
+
"""Provide a Mock sync connection context manager.
|
|
269
|
+
|
|
270
|
+
Returns:
|
|
271
|
+
Connection context manager.
|
|
272
|
+
"""
|
|
273
|
+
return MockSyncConnectionContext(self)
|
|
274
|
+
|
|
275
|
+
def provide_session(
|
|
276
|
+
self, *_args: Any, statement_config: "StatementConfig | None" = None, **_kwargs: Any
|
|
277
|
+
) -> "MockSyncSessionContext":
|
|
278
|
+
"""Provide a Mock sync driver session.
|
|
279
|
+
|
|
280
|
+
Args:
|
|
281
|
+
statement_config: Optional statement configuration override.
|
|
282
|
+
|
|
283
|
+
Returns:
|
|
284
|
+
Mock driver session context manager.
|
|
285
|
+
"""
|
|
286
|
+
factory = _MockSyncSessionFactory(self)
|
|
287
|
+
|
|
288
|
+
return MockSyncSessionContext(
|
|
289
|
+
acquire_connection=factory.acquire_connection,
|
|
290
|
+
release_connection=factory.release_connection,
|
|
291
|
+
statement_config=statement_config or self.statement_config or default_statement_config,
|
|
292
|
+
driver_features=self.driver_features,
|
|
293
|
+
prepare_driver=self._prepare_driver,
|
|
294
|
+
target_dialect=self.target_dialect,
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
def get_signature_namespace(self) -> "dict[str, Any]":
|
|
298
|
+
"""Get the signature namespace for Mock types.
|
|
299
|
+
|
|
300
|
+
Returns:
|
|
301
|
+
Dictionary mapping type names to types.
|
|
302
|
+
"""
|
|
303
|
+
namespace = super().get_signature_namespace()
|
|
304
|
+
namespace.update({
|
|
305
|
+
"MockConnection": MockConnection,
|
|
306
|
+
"MockConnectionParams": MockConnectionParams,
|
|
307
|
+
"MockCursor": MockCursor,
|
|
308
|
+
"MockDriverFeatures": MockDriverFeatures,
|
|
309
|
+
"MockExceptionHandler": MockExceptionHandler,
|
|
310
|
+
"MockSyncConfig": MockSyncConfig,
|
|
311
|
+
"MockSyncConnectionContext": MockSyncConnectionContext,
|
|
312
|
+
"MockSyncDriver": MockSyncDriver,
|
|
313
|
+
"MockSyncSessionContext": MockSyncSessionContext,
|
|
314
|
+
})
|
|
315
|
+
return namespace
|
|
316
|
+
|
|
317
|
+
|
|
318
|
+
class MockAsyncConfig(NoPoolAsyncConfig["MockConnection", "MockAsyncDriver"]):
|
|
319
|
+
"""Async mock database configuration.
|
|
320
|
+
|
|
321
|
+
Uses SQLite :memory: as the execution backend with dialect transpilation.
|
|
322
|
+
The async interface wraps sync SQLite operations using asyncio.to_thread().
|
|
323
|
+
|
|
324
|
+
Example:
|
|
325
|
+
config = MockAsyncConfig(target_dialect="mysql")
|
|
326
|
+
|
|
327
|
+
async with config.provide_session() as session:
|
|
328
|
+
await session.execute("CREATE TABLE items (id INT, name TEXT)")
|
|
329
|
+
await session.execute("INSERT INTO items VALUES (%s, %s)", 1, "Widget")
|
|
330
|
+
result = await session.select("SELECT * FROM items")
|
|
331
|
+
assert len(result) == 1
|
|
332
|
+
"""
|
|
333
|
+
|
|
334
|
+
driver_type: "ClassVar[type[MockAsyncDriver]]" = MockAsyncDriver
|
|
335
|
+
connection_type: "ClassVar[type[MockConnection]]" = MockConnection
|
|
336
|
+
supports_transactional_ddl: "ClassVar[bool]" = True
|
|
337
|
+
supports_native_arrow_export: "ClassVar[bool]" = True
|
|
338
|
+
supports_native_arrow_import: "ClassVar[bool]" = True
|
|
339
|
+
supports_native_parquet_export: "ClassVar[bool]" = True
|
|
340
|
+
supports_native_parquet_import: "ClassVar[bool]" = True
|
|
341
|
+
|
|
342
|
+
def __init__(
|
|
343
|
+
self,
|
|
344
|
+
*,
|
|
345
|
+
target_dialect: str = "sqlite",
|
|
346
|
+
initial_sql: "str | list[str] | None" = None,
|
|
347
|
+
connection_config: "MockConnectionParams | dict[str, Any] | None" = None,
|
|
348
|
+
connection_instance: "Any" = None,
|
|
349
|
+
migration_config: "dict[str, Any] | None" = None,
|
|
350
|
+
statement_config: "StatementConfig | None" = None,
|
|
351
|
+
driver_features: "MockDriverFeatures | dict[str, Any] | None" = None,
|
|
352
|
+
bind_key: "str | None" = None,
|
|
353
|
+
extension_config: "ExtensionConfigs | None" = None,
|
|
354
|
+
observability_config: "ObservabilityConfig | None" = None,
|
|
355
|
+
) -> None:
|
|
356
|
+
"""Initialize Mock async configuration.
|
|
357
|
+
|
|
358
|
+
Args:
|
|
359
|
+
target_dialect: SQL dialect for input SQL (postgres, mysql, oracle, sqlite).
|
|
360
|
+
SQL will be transpiled to SQLite before execution, unless 'sqlite'.
|
|
361
|
+
initial_sql: SQL statements to execute when creating connection.
|
|
362
|
+
Can be a single string or list of strings. Useful for setting up
|
|
363
|
+
test fixtures.
|
|
364
|
+
connection_config: Additional connection parameters.
|
|
365
|
+
connection_instance: Pre-existing connection (not used for mock).
|
|
366
|
+
migration_config: Migration configuration.
|
|
367
|
+
statement_config: Statement configuration settings.
|
|
368
|
+
driver_features: Driver feature configuration.
|
|
369
|
+
bind_key: Optional unique identifier for this configuration.
|
|
370
|
+
extension_config: Extension-specific configuration.
|
|
371
|
+
observability_config: Observability configuration.
|
|
372
|
+
"""
|
|
373
|
+
config_dict: dict[str, Any] = dict(connection_config) if connection_config else {}
|
|
374
|
+
config_dict["target_dialect"] = target_dialect
|
|
375
|
+
config_dict["initial_sql"] = initial_sql
|
|
376
|
+
|
|
377
|
+
statement_config = statement_config or default_statement_config
|
|
378
|
+
statement_config, driver_features = apply_driver_features(statement_config, driver_features)
|
|
379
|
+
|
|
380
|
+
super().__init__(
|
|
381
|
+
connection_config=config_dict,
|
|
382
|
+
connection_instance=connection_instance,
|
|
383
|
+
migration_config=migration_config,
|
|
384
|
+
statement_config=statement_config,
|
|
385
|
+
driver_features=driver_features,
|
|
386
|
+
bind_key=bind_key,
|
|
387
|
+
extension_config=extension_config,
|
|
388
|
+
observability_config=observability_config,
|
|
389
|
+
)
|
|
390
|
+
|
|
391
|
+
@property
|
|
392
|
+
def target_dialect(self) -> str:
|
|
393
|
+
"""Get the target dialect for SQL transpilation."""
|
|
394
|
+
return str(self.connection_config.get("target_dialect", "sqlite"))
|
|
395
|
+
|
|
396
|
+
@property
|
|
397
|
+
def initial_sql(self) -> "str | list[str] | None":
|
|
398
|
+
"""Get the initial SQL to execute on connection creation."""
|
|
399
|
+
return self.connection_config.get("initial_sql")
|
|
400
|
+
|
|
401
|
+
async def create_connection(self) -> MockConnection:
|
|
402
|
+
"""Create a new SQLite :memory: connection asynchronously.
|
|
403
|
+
|
|
404
|
+
Returns:
|
|
405
|
+
SQLite connection with row factory set.
|
|
406
|
+
"""
|
|
407
|
+
connect_async = async_(sqlite3.connect)
|
|
408
|
+
conn = await connect_async(":memory:", check_same_thread=False)
|
|
409
|
+
conn.row_factory = sqlite3.Row
|
|
410
|
+
|
|
411
|
+
if self.initial_sql:
|
|
412
|
+
await self._execute_initial_sql_async(conn)
|
|
413
|
+
|
|
414
|
+
return conn
|
|
415
|
+
|
|
416
|
+
async def _execute_initial_sql_async(self, conn: MockConnection) -> None:
|
|
417
|
+
"""Execute initial SQL statements on a new connection.
|
|
418
|
+
|
|
419
|
+
Args:
|
|
420
|
+
conn: SQLite connection to execute SQL on.
|
|
421
|
+
"""
|
|
422
|
+
initial_sql = self.initial_sql
|
|
423
|
+
if initial_sql is None:
|
|
424
|
+
return
|
|
425
|
+
|
|
426
|
+
statements = initial_sql if isinstance(initial_sql, list) else [initial_sql]
|
|
427
|
+
target_dialect = self.target_dialect
|
|
428
|
+
|
|
429
|
+
for sql in statements:
|
|
430
|
+
if target_dialect != "sqlite":
|
|
431
|
+
transpiled = convert_to_dialect(sql, target_dialect, "sqlite", pretty=False)
|
|
432
|
+
else:
|
|
433
|
+
transpiled = sql
|
|
434
|
+
executescript_async = async_(conn.executescript)
|
|
435
|
+
await executescript_async(transpiled)
|
|
436
|
+
|
|
437
|
+
def provide_connection(self, *args: Any, **kwargs: Any) -> "MockAsyncConnectionContext":
|
|
438
|
+
"""Provide a Mock async connection context manager.
|
|
439
|
+
|
|
440
|
+
Returns:
|
|
441
|
+
Async connection context manager.
|
|
442
|
+
"""
|
|
443
|
+
return MockAsyncConnectionContext(self)
|
|
444
|
+
|
|
445
|
+
def provide_session(
|
|
446
|
+
self, *_args: Any, statement_config: "StatementConfig | None" = None, **_kwargs: Any
|
|
447
|
+
) -> "MockAsyncSessionContext":
|
|
448
|
+
"""Provide a Mock async driver session.
|
|
449
|
+
|
|
450
|
+
Args:
|
|
451
|
+
statement_config: Optional statement configuration override.
|
|
452
|
+
|
|
453
|
+
Returns:
|
|
454
|
+
Mock async driver session context manager.
|
|
455
|
+
"""
|
|
456
|
+
factory = _MockAsyncSessionFactory(self)
|
|
457
|
+
|
|
458
|
+
return MockAsyncSessionContext(
|
|
459
|
+
acquire_connection=factory.acquire_connection,
|
|
460
|
+
release_connection=factory.release_connection,
|
|
461
|
+
statement_config=statement_config or self.statement_config or default_statement_config,
|
|
462
|
+
driver_features=self.driver_features,
|
|
463
|
+
prepare_driver=self._prepare_driver,
|
|
464
|
+
target_dialect=self.target_dialect,
|
|
465
|
+
)
|
|
466
|
+
|
|
467
|
+
def get_signature_namespace(self) -> "dict[str, Any]":
|
|
468
|
+
"""Get the signature namespace for Mock types.
|
|
469
|
+
|
|
470
|
+
Returns:
|
|
471
|
+
Dictionary mapping type names to types.
|
|
472
|
+
"""
|
|
473
|
+
namespace = super().get_signature_namespace()
|
|
474
|
+
namespace.update({
|
|
475
|
+
"MockAsyncConfig": MockAsyncConfig,
|
|
476
|
+
"MockAsyncConnectionContext": MockAsyncConnectionContext,
|
|
477
|
+
"MockAsyncDriver": MockAsyncDriver,
|
|
478
|
+
"MockAsyncSessionContext": MockAsyncSessionContext,
|
|
479
|
+
"MockConnection": MockConnection,
|
|
480
|
+
"MockConnectionParams": MockConnectionParams,
|
|
481
|
+
"MockDriverFeatures": MockDriverFeatures,
|
|
482
|
+
})
|
|
483
|
+
return namespace
|