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,59 @@
|
|
|
1
|
+
"""Create the SQLSpec events queue tables."""
|
|
2
|
+
|
|
3
|
+
import logging
|
|
4
|
+
from typing import TYPE_CHECKING, Any
|
|
5
|
+
|
|
6
|
+
from sqlspec.exceptions import SQLSpecError
|
|
7
|
+
from sqlspec.utils.logging import get_logger, log_with_context
|
|
8
|
+
from sqlspec.utils.module_loader import import_string
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from sqlspec.extensions.events._store import BaseEventQueueStore
|
|
12
|
+
from sqlspec.migrations.context import MigrationContext
|
|
13
|
+
|
|
14
|
+
logger = get_logger("sqlspec.events.migrations.queue")
|
|
15
|
+
|
|
16
|
+
__all__ = ("down", "up")
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
async def up(context: "MigrationContext | None" = None) -> "list[str]":
|
|
20
|
+
"""Return SQL statements that provision the queue table and indexes."""
|
|
21
|
+
|
|
22
|
+
store = _load_store(context)
|
|
23
|
+
statements = store.create_statements()
|
|
24
|
+
log_with_context(logger, logging.DEBUG, "events.migration.create.prepared", table_name=store.table_name)
|
|
25
|
+
return statements
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
async def down(context: "MigrationContext | None" = None) -> "list[str]":
|
|
29
|
+
"""Return SQL statements that drop the queue table."""
|
|
30
|
+
|
|
31
|
+
store = _load_store(context)
|
|
32
|
+
statements = store.drop_statements()
|
|
33
|
+
log_with_context(logger, logging.DEBUG, "events.migration.drop.prepared", table_name=store.table_name)
|
|
34
|
+
return statements
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def _load_store(context: "MigrationContext | None") -> "BaseEventQueueStore[Any]":
|
|
38
|
+
if context is None or context.config is None:
|
|
39
|
+
msg = "Migration context with adapter configuration is required"
|
|
40
|
+
raise SQLSpecError(msg)
|
|
41
|
+
config = context.config
|
|
42
|
+
config_class = type(config)
|
|
43
|
+
module_path = config_class.__module__
|
|
44
|
+
if not module_path.startswith("sqlspec.adapters."):
|
|
45
|
+
msg = f"Unsupported configuration for events extension: {module_path}.{config_class.__name__}"
|
|
46
|
+
raise SQLSpecError(msg)
|
|
47
|
+
adapter_name = module_path.split(".")[2]
|
|
48
|
+
store_class_name = config_class.__name__.replace("Config", "EventQueueStore")
|
|
49
|
+
store_path = f"sqlspec.adapters.{adapter_name}.events.store.{store_class_name}"
|
|
50
|
+
try:
|
|
51
|
+
store_class = import_string(store_path)
|
|
52
|
+
except ImportError as error: # pragma: no cover - missing adapter wiring
|
|
53
|
+
msg = f"Adapter {adapter_name} missing events store {store_class_name}"
|
|
54
|
+
raise SQLSpecError(msg) from error
|
|
55
|
+
try:
|
|
56
|
+
store: BaseEventQueueStore[Any] = store_class(config)
|
|
57
|
+
except ValueError as error: # pragma: no cover - invalid identifier path
|
|
58
|
+
raise SQLSpecError(str(error)) from error
|
|
59
|
+
return store
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""FastAPI extension for SQLSpec.
|
|
2
|
+
|
|
3
|
+
Extends Starlette integration with dependency injection helpers for FastAPI's
|
|
4
|
+
Depends() system, including filter dependency builders.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from sqlspec.extensions.fastapi.extension import SQLSpecPlugin
|
|
8
|
+
from sqlspec.extensions.fastapi.providers import DependencyDefaults, FieldNameType, FilterConfig, provide_filters
|
|
9
|
+
from sqlspec.extensions.starlette.middleware import SQLSpecAutocommitMiddleware, SQLSpecManualMiddleware
|
|
10
|
+
|
|
11
|
+
__all__ = (
|
|
12
|
+
"DependencyDefaults",
|
|
13
|
+
"FieldNameType",
|
|
14
|
+
"FilterConfig",
|
|
15
|
+
"SQLSpecAutocommitMiddleware",
|
|
16
|
+
"SQLSpecManualMiddleware",
|
|
17
|
+
"SQLSpecPlugin",
|
|
18
|
+
"provide_filters",
|
|
19
|
+
)
|
|
@@ -0,0 +1,351 @@
|
|
|
1
|
+
from typing import TYPE_CHECKING, Any, overload
|
|
2
|
+
|
|
3
|
+
from fastapi import FastAPI, Request
|
|
4
|
+
|
|
5
|
+
from sqlspec.base import SQLSpec
|
|
6
|
+
from sqlspec.extensions.fastapi.providers import DEPENDENCY_DEFAULTS
|
|
7
|
+
from sqlspec.extensions.fastapi.providers import provide_filters as _provide_filters
|
|
8
|
+
from sqlspec.extensions.starlette.extension import SQLSpecPlugin as _StarlettePlugin
|
|
9
|
+
|
|
10
|
+
if TYPE_CHECKING:
|
|
11
|
+
from collections.abc import Callable
|
|
12
|
+
|
|
13
|
+
from sqlspec.config import AsyncDatabaseConfig, SyncDatabaseConfig
|
|
14
|
+
from sqlspec.core import FilterTypes
|
|
15
|
+
from sqlspec.driver import AsyncDriverAdapterBase, SyncDriverAdapterBase
|
|
16
|
+
from sqlspec.extensions.fastapi.providers import DependencyDefaults, FilterConfig
|
|
17
|
+
|
|
18
|
+
# Type aliases for static analysis - IDEs see the real types
|
|
19
|
+
_AsyncSession = AsyncDriverAdapterBase
|
|
20
|
+
_SyncSession = SyncDriverAdapterBase
|
|
21
|
+
_Session = AsyncDriverAdapterBase | SyncDriverAdapterBase
|
|
22
|
+
else:
|
|
23
|
+
# Runtime fallback - FastAPI sees Any (avoids NameError)
|
|
24
|
+
_AsyncSession = Any
|
|
25
|
+
_SyncSession = Any
|
|
26
|
+
_Session = Any
|
|
27
|
+
|
|
28
|
+
__all__ = ("SQLSpecPlugin",)
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
class SQLSpecPlugin(_StarlettePlugin):
|
|
32
|
+
"""SQLSpec integration for FastAPI applications.
|
|
33
|
+
|
|
34
|
+
Extends Starlette integration with dependency injection helpers for FastAPI's
|
|
35
|
+
Depends() system.
|
|
36
|
+
|
|
37
|
+
Example:
|
|
38
|
+
from fastapi import Depends, FastAPI
|
|
39
|
+
from sqlspec import SQLSpec
|
|
40
|
+
from sqlspec.adapters.asyncpg import AsyncpgConfig
|
|
41
|
+
from sqlspec.extensions.fastapi import SQLSpecPlugin
|
|
42
|
+
|
|
43
|
+
sqlspec = SQLSpec()
|
|
44
|
+
config = AsyncpgConfig(
|
|
45
|
+
connection_config={"dsn": "postgresql://localhost/mydb"},
|
|
46
|
+
extension_config={
|
|
47
|
+
"starlette": {
|
|
48
|
+
"commit_mode": "autocommit",
|
|
49
|
+
"session_key": "db"
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
)
|
|
53
|
+
sqlspec.add_config(config, name="default")
|
|
54
|
+
|
|
55
|
+
app = FastAPI()
|
|
56
|
+
db_ext = SQLSpecPlugin(sqlspec, app)
|
|
57
|
+
|
|
58
|
+
@app.get("/users")
|
|
59
|
+
async def list_users(db = Depends(db_ext.provide_session())):
|
|
60
|
+
result = await db.execute("SELECT * FROM users")
|
|
61
|
+
return {"users": result.all()}
|
|
62
|
+
"""
|
|
63
|
+
|
|
64
|
+
def __init__(self, sqlspec: SQLSpec, app: "FastAPI | None" = None) -> None:
|
|
65
|
+
"""Initialize SQLSpec FastAPI extension.
|
|
66
|
+
|
|
67
|
+
Args:
|
|
68
|
+
sqlspec: Pre-configured SQLSpec instance with registered configs.
|
|
69
|
+
app: Optional FastAPI application to initialize immediately.
|
|
70
|
+
"""
|
|
71
|
+
super().__init__(sqlspec, app)
|
|
72
|
+
|
|
73
|
+
@overload
|
|
74
|
+
def provide_session(
|
|
75
|
+
self, key: None = None
|
|
76
|
+
) -> "Callable[[Request], AsyncDriverAdapterBase | SyncDriverAdapterBase]": ...
|
|
77
|
+
|
|
78
|
+
@overload
|
|
79
|
+
def provide_session(self, key: str) -> "Callable[[Request], AsyncDriverAdapterBase | SyncDriverAdapterBase]": ...
|
|
80
|
+
|
|
81
|
+
@overload
|
|
82
|
+
def provide_session(self, key: "type[AsyncDatabaseConfig]") -> "Callable[[Request], AsyncDriverAdapterBase]": ...
|
|
83
|
+
|
|
84
|
+
@overload
|
|
85
|
+
def provide_session(self, key: "type[SyncDatabaseConfig]") -> "Callable[[Request], SyncDriverAdapterBase]": ...
|
|
86
|
+
|
|
87
|
+
@overload
|
|
88
|
+
def provide_session(self, key: "AsyncDatabaseConfig") -> "Callable[[Request], AsyncDriverAdapterBase]": ...
|
|
89
|
+
|
|
90
|
+
@overload
|
|
91
|
+
def provide_session(self, key: "SyncDatabaseConfig") -> "Callable[[Request], SyncDriverAdapterBase]": ...
|
|
92
|
+
|
|
93
|
+
def provide_session(
|
|
94
|
+
self,
|
|
95
|
+
key: "str | type[AsyncDatabaseConfig | SyncDatabaseConfig] | AsyncDatabaseConfig | SyncDatabaseConfig | None" = None,
|
|
96
|
+
) -> "Callable[[Request], AsyncDriverAdapterBase | SyncDriverAdapterBase]":
|
|
97
|
+
"""Create dependency factory for session injection.
|
|
98
|
+
|
|
99
|
+
Returns a callable that can be used with FastAPI's Depends() to inject
|
|
100
|
+
a database session into route handlers.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
key: Optional session key (str), config type for type narrowing, or None.
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
Dependency callable for FastAPI Depends().
|
|
107
|
+
|
|
108
|
+
Example:
|
|
109
|
+
# No args - returns union type
|
|
110
|
+
@app.get("/users")
|
|
111
|
+
async def get_users(db = Depends(db_ext.provide_session())):
|
|
112
|
+
return await db.execute("SELECT * FROM users")
|
|
113
|
+
|
|
114
|
+
# String key for multi-database
|
|
115
|
+
@app.get("/products")
|
|
116
|
+
async def get_products(db = Depends(db_ext.provide_session("products"))):
|
|
117
|
+
return await db.execute("SELECT * FROM products")
|
|
118
|
+
|
|
119
|
+
# Config instance for type narrowing
|
|
120
|
+
config = AsyncpgConfig(...)
|
|
121
|
+
@app.get("/typed")
|
|
122
|
+
async def typed_query(db = Depends(db_ext.provide_session(config))):
|
|
123
|
+
# db is properly typed as AsyncDriverAdapterBase
|
|
124
|
+
return await db.execute("SELECT 1")
|
|
125
|
+
|
|
126
|
+
# Config type/class for type narrowing
|
|
127
|
+
@app.get("/typed2")
|
|
128
|
+
async def typed_query2(db = Depends(db_ext.provide_session(AsyncpgConfig))):
|
|
129
|
+
# db is properly typed as AsyncDriverAdapterBase
|
|
130
|
+
return await db.execute("SELECT 1")
|
|
131
|
+
"""
|
|
132
|
+
# Extract string key if provided, ignore config types/instances (used only for type narrowing)
|
|
133
|
+
session_key = key if isinstance(key, str) or key is None else None
|
|
134
|
+
|
|
135
|
+
def dependency(request: Request) -> _Session:
|
|
136
|
+
return self.get_session(request, session_key) # type: ignore[no-any-return]
|
|
137
|
+
|
|
138
|
+
return dependency
|
|
139
|
+
|
|
140
|
+
def provide_async_session(self, key: "str | None" = None) -> "Callable[[Request], AsyncDriverAdapterBase]":
|
|
141
|
+
"""Create dependency factory for async session injection.
|
|
142
|
+
|
|
143
|
+
Type-narrowed version of provide_session() that returns AsyncDriverAdapterBase.
|
|
144
|
+
Useful when using string keys and you know the config is async.
|
|
145
|
+
|
|
146
|
+
Args:
|
|
147
|
+
key: Optional session key for multi-database configurations.
|
|
148
|
+
|
|
149
|
+
Returns:
|
|
150
|
+
Dependency callable that returns AsyncDriverAdapterBase.
|
|
151
|
+
|
|
152
|
+
Example:
|
|
153
|
+
@app.get("/users")
|
|
154
|
+
async def get_users(db = Depends(db_ext.provide_async_session())):
|
|
155
|
+
# db is AsyncDriverAdapterBase
|
|
156
|
+
return await db.execute("SELECT * FROM users")
|
|
157
|
+
|
|
158
|
+
@app.get("/products")
|
|
159
|
+
async def get_products(db = Depends(db_ext.provide_async_session("products_db"))):
|
|
160
|
+
# db is AsyncDriverAdapterBase for "products_db" key
|
|
161
|
+
return await db.execute("SELECT * FROM products")
|
|
162
|
+
"""
|
|
163
|
+
|
|
164
|
+
def dependency(request: Request) -> _AsyncSession:
|
|
165
|
+
return self.get_session(request, key) # type: ignore[no-any-return]
|
|
166
|
+
|
|
167
|
+
return dependency
|
|
168
|
+
|
|
169
|
+
def provide_sync_session(self, key: "str | None" = None) -> "Callable[[Request], SyncDriverAdapterBase]":
|
|
170
|
+
"""Create dependency factory for sync session injection.
|
|
171
|
+
|
|
172
|
+
Type-narrowed version of provide_session() that returns SyncDriverAdapterBase.
|
|
173
|
+
Useful when using string keys and you know the config is sync.
|
|
174
|
+
|
|
175
|
+
Args:
|
|
176
|
+
key: Optional session key for multi-database configurations.
|
|
177
|
+
|
|
178
|
+
Returns:
|
|
179
|
+
Dependency callable that returns SyncDriverAdapterBase.
|
|
180
|
+
|
|
181
|
+
Example:
|
|
182
|
+
@app.get("/users")
|
|
183
|
+
def get_users(db = Depends(db_ext.provide_sync_session())):
|
|
184
|
+
# db is SyncDriverAdapterBase
|
|
185
|
+
return db.execute("SELECT * FROM users")
|
|
186
|
+
"""
|
|
187
|
+
|
|
188
|
+
def dependency(request: Request) -> _SyncSession:
|
|
189
|
+
return self.get_session(request, key) # type: ignore[no-any-return]
|
|
190
|
+
|
|
191
|
+
return dependency
|
|
192
|
+
|
|
193
|
+
@overload
|
|
194
|
+
def provide_connection(self, key: None = None) -> "Callable[[Request], Any]": ...
|
|
195
|
+
|
|
196
|
+
@overload
|
|
197
|
+
def provide_connection(self, key: str) -> "Callable[[Request], Any]": ...
|
|
198
|
+
|
|
199
|
+
@overload
|
|
200
|
+
def provide_connection(self, key: "type[AsyncDatabaseConfig]") -> "Callable[[Request], Any]": ...
|
|
201
|
+
|
|
202
|
+
@overload
|
|
203
|
+
def provide_connection(self, key: "type[SyncDatabaseConfig]") -> "Callable[[Request], Any]": ...
|
|
204
|
+
|
|
205
|
+
@overload
|
|
206
|
+
def provide_connection(self, key: "AsyncDatabaseConfig") -> "Callable[[Request], Any]": ...
|
|
207
|
+
|
|
208
|
+
@overload
|
|
209
|
+
def provide_connection(self, key: "SyncDatabaseConfig") -> "Callable[[Request], Any]": ...
|
|
210
|
+
|
|
211
|
+
def provide_connection(
|
|
212
|
+
self,
|
|
213
|
+
key: "str | type[AsyncDatabaseConfig | SyncDatabaseConfig] | AsyncDatabaseConfig | SyncDatabaseConfig | None" = None,
|
|
214
|
+
) -> "Callable[[Request], Any]":
|
|
215
|
+
"""Create dependency factory for connection injection.
|
|
216
|
+
|
|
217
|
+
Returns a callable that can be used with FastAPI's Depends() to inject
|
|
218
|
+
a database connection into route handlers.
|
|
219
|
+
|
|
220
|
+
Args:
|
|
221
|
+
key: Optional session key (str), config type for type narrowing, or None.
|
|
222
|
+
|
|
223
|
+
Returns:
|
|
224
|
+
Dependency callable for FastAPI Depends().
|
|
225
|
+
|
|
226
|
+
Example:
|
|
227
|
+
# No args
|
|
228
|
+
@app.get("/raw")
|
|
229
|
+
async def raw_query(conn = Depends(db_ext.provide_connection())):
|
|
230
|
+
cursor = await conn.cursor()
|
|
231
|
+
await cursor.execute("SELECT 1")
|
|
232
|
+
return await cursor.fetchone()
|
|
233
|
+
|
|
234
|
+
# With config instance
|
|
235
|
+
config = AsyncpgConfig(...)
|
|
236
|
+
@app.get("/typed")
|
|
237
|
+
async def typed_query(conn = Depends(db_ext.provide_connection(config))):
|
|
238
|
+
cursor = await conn.cursor()
|
|
239
|
+
await cursor.execute("SELECT 1")
|
|
240
|
+
return await cursor.fetchone()
|
|
241
|
+
|
|
242
|
+
# With config type/class
|
|
243
|
+
@app.get("/typed2")
|
|
244
|
+
async def typed_query2(conn = Depends(db_ext.provide_connection(AsyncpgConfig))):
|
|
245
|
+
cursor = await conn.cursor()
|
|
246
|
+
await cursor.execute("SELECT 1")
|
|
247
|
+
return await cursor.fetchone()
|
|
248
|
+
"""
|
|
249
|
+
# Extract string key if provided, ignore config types/instances (used only for type narrowing)
|
|
250
|
+
connection_key = key if isinstance(key, str) or key is None else None
|
|
251
|
+
|
|
252
|
+
def dependency(request: Request) -> Any:
|
|
253
|
+
return self.get_connection(request, connection_key)
|
|
254
|
+
|
|
255
|
+
return dependency
|
|
256
|
+
|
|
257
|
+
def provide_async_connection(self, key: "str | None" = None) -> "Callable[[Request], Any]":
|
|
258
|
+
"""Create dependency factory for async connection injection.
|
|
259
|
+
|
|
260
|
+
Type-narrowed version of provide_connection() for async connections.
|
|
261
|
+
Useful when using string keys and you know the config is async.
|
|
262
|
+
|
|
263
|
+
Args:
|
|
264
|
+
key: Optional session key for multi-database configurations.
|
|
265
|
+
|
|
266
|
+
Returns:
|
|
267
|
+
Dependency callable for async connection.
|
|
268
|
+
|
|
269
|
+
Example:
|
|
270
|
+
@app.get("/raw")
|
|
271
|
+
async def raw_query(conn = Depends(db_ext.provide_async_connection())):
|
|
272
|
+
cursor = await conn.cursor()
|
|
273
|
+
await cursor.execute("SELECT 1")
|
|
274
|
+
return await cursor.fetchone()
|
|
275
|
+
"""
|
|
276
|
+
|
|
277
|
+
def dependency(request: Request) -> Any:
|
|
278
|
+
return self.get_connection(request, key)
|
|
279
|
+
|
|
280
|
+
return dependency
|
|
281
|
+
|
|
282
|
+
def provide_sync_connection(self, key: "str | None" = None) -> "Callable[[Request], Any]":
|
|
283
|
+
"""Create dependency factory for sync connection injection.
|
|
284
|
+
|
|
285
|
+
Type-narrowed version of provide_connection() for sync connections.
|
|
286
|
+
Useful when using string keys and you know the config is sync.
|
|
287
|
+
|
|
288
|
+
Args:
|
|
289
|
+
key: Optional session key for multi-database configurations.
|
|
290
|
+
|
|
291
|
+
Returns:
|
|
292
|
+
Dependency callable for sync connection.
|
|
293
|
+
|
|
294
|
+
Example:
|
|
295
|
+
@app.get("/raw")
|
|
296
|
+
def raw_query(conn = Depends(db_ext.provide_sync_connection())):
|
|
297
|
+
cursor = conn.cursor()
|
|
298
|
+
cursor.execute("SELECT 1")
|
|
299
|
+
return cursor.fetchone()
|
|
300
|
+
"""
|
|
301
|
+
|
|
302
|
+
def dependency(request: Request) -> Any:
|
|
303
|
+
return self.get_connection(request, key)
|
|
304
|
+
|
|
305
|
+
return dependency
|
|
306
|
+
|
|
307
|
+
@staticmethod
|
|
308
|
+
def provide_filters(
|
|
309
|
+
config: "FilterConfig", dep_defaults: "DependencyDefaults | None" = None
|
|
310
|
+
) -> "Callable[..., list[FilterTypes]]":
|
|
311
|
+
"""Create filter dependency for FastAPI routes.
|
|
312
|
+
|
|
313
|
+
Dynamically generates a FastAPI dependency function that parses query
|
|
314
|
+
parameters into SQLSpec filter objects. The returned callable can be used
|
|
315
|
+
with FastAPI's Depends() for automatic filter injection.
|
|
316
|
+
|
|
317
|
+
Args:
|
|
318
|
+
config: Filter configuration specifying which filters to enable.
|
|
319
|
+
dep_defaults: Optional dependency defaults for customization.
|
|
320
|
+
|
|
321
|
+
Returns:
|
|
322
|
+
Callable for use with Depends() that returns list of filters.
|
|
323
|
+
|
|
324
|
+
Example:
|
|
325
|
+
from fastapi import Depends
|
|
326
|
+
from sqlspec.extensions.fastapi import FilterConfig
|
|
327
|
+
|
|
328
|
+
@app.get("/users")
|
|
329
|
+
async def list_users(
|
|
330
|
+
db = Depends(db_ext.provide_session()),
|
|
331
|
+
filters = Depends(
|
|
332
|
+
db_ext.provide_filters({
|
|
333
|
+
"id_filter": UUID,
|
|
334
|
+
"search": "name,email",
|
|
335
|
+
"search_ignore_case": True,
|
|
336
|
+
"pagination_type": "limit_offset",
|
|
337
|
+
"sort_field": "created_at",
|
|
338
|
+
})
|
|
339
|
+
),
|
|
340
|
+
):
|
|
341
|
+
stmt = sql("SELECT * FROM users")
|
|
342
|
+
for filter in filters:
|
|
343
|
+
stmt = filter.append_to_statement(stmt)
|
|
344
|
+
result = await db.execute(stmt)
|
|
345
|
+
return result.all()
|
|
346
|
+
"""
|
|
347
|
+
|
|
348
|
+
if dep_defaults is None:
|
|
349
|
+
dep_defaults = DEPENDENCY_DEFAULTS
|
|
350
|
+
|
|
351
|
+
return _provide_filters(config, dep_defaults=dep_defaults)
|