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,353 @@
|
|
|
1
|
+
"""BigQuery database configuration."""
|
|
2
|
+
|
|
3
|
+
from typing import TYPE_CHECKING, Any, ClassVar, TypedDict, cast
|
|
4
|
+
|
|
5
|
+
from google.cloud.bigquery import LoadJobConfig, QueryJobConfig
|
|
6
|
+
from typing_extensions import NotRequired
|
|
7
|
+
|
|
8
|
+
from sqlspec.adapters.bigquery._typing import BigQueryConnection
|
|
9
|
+
from sqlspec.adapters.bigquery.core import apply_driver_features, build_statement_config, default_statement_config
|
|
10
|
+
from sqlspec.adapters.bigquery.driver import (
|
|
11
|
+
BigQueryCursor,
|
|
12
|
+
BigQueryDriver,
|
|
13
|
+
BigQueryExceptionHandler,
|
|
14
|
+
BigQuerySessionContext,
|
|
15
|
+
)
|
|
16
|
+
from sqlspec.config import ExtensionConfigs, NoPoolSyncConfig
|
|
17
|
+
from sqlspec.exceptions import ImproperConfigurationError
|
|
18
|
+
from sqlspec.extensions.events import EventRuntimeHints
|
|
19
|
+
from sqlspec.observability import ObservabilityConfig
|
|
20
|
+
from sqlspec.typing import Empty
|
|
21
|
+
from sqlspec.utils.config_tools import normalize_connection_config
|
|
22
|
+
|
|
23
|
+
if TYPE_CHECKING:
|
|
24
|
+
from collections.abc import Callable
|
|
25
|
+
|
|
26
|
+
from google.api_core.client_info import ClientInfo
|
|
27
|
+
from google.api_core.client_options import ClientOptions
|
|
28
|
+
from google.auth.credentials import Credentials
|
|
29
|
+
|
|
30
|
+
from sqlspec.core import StatementConfig
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
class BigQueryConnectionParams(TypedDict):
|
|
34
|
+
"""Standard BigQuery connection parameters.
|
|
35
|
+
|
|
36
|
+
Includes both official BigQuery client parameters and BigQuery-specific configuration options.
|
|
37
|
+
"""
|
|
38
|
+
|
|
39
|
+
project: NotRequired[str]
|
|
40
|
+
location: NotRequired[str]
|
|
41
|
+
credentials: NotRequired["Credentials"]
|
|
42
|
+
client_options: NotRequired["ClientOptions"]
|
|
43
|
+
client_info: NotRequired["ClientInfo"]
|
|
44
|
+
|
|
45
|
+
default_query_job_config: NotRequired[QueryJobConfig]
|
|
46
|
+
default_load_job_config: NotRequired[LoadJobConfig]
|
|
47
|
+
dataset_id: NotRequired[str]
|
|
48
|
+
credentials_path: NotRequired[str]
|
|
49
|
+
use_query_cache: NotRequired[bool]
|
|
50
|
+
maximum_bytes_billed: NotRequired[int]
|
|
51
|
+
enable_bigquery_ml: NotRequired[bool]
|
|
52
|
+
enable_gemini_integration: NotRequired[bool]
|
|
53
|
+
query_timeout_ms: NotRequired[int]
|
|
54
|
+
job_timeout_ms: NotRequired[int]
|
|
55
|
+
reservation_id: NotRequired[str]
|
|
56
|
+
edition: NotRequired[str]
|
|
57
|
+
enable_cross_cloud: NotRequired[bool]
|
|
58
|
+
enable_bigquery_omni: NotRequired[bool]
|
|
59
|
+
use_avro_logical_types: NotRequired[bool]
|
|
60
|
+
parquet_enable_list_inference: NotRequired[bool]
|
|
61
|
+
enable_column_level_security: NotRequired[bool]
|
|
62
|
+
enable_row_level_security: NotRequired[bool]
|
|
63
|
+
enable_dataframes: NotRequired[bool]
|
|
64
|
+
dataframes_backend: NotRequired[str]
|
|
65
|
+
enable_continuous_queries: NotRequired[bool]
|
|
66
|
+
enable_vector_search: NotRequired[bool]
|
|
67
|
+
extra: NotRequired["dict[str, Any]"]
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
class BigQueryDriverFeatures(TypedDict):
|
|
71
|
+
"""BigQuery driver-specific features configuration.
|
|
72
|
+
|
|
73
|
+
Only non-standard BigQuery client parameters that are SQLSpec-specific extensions.
|
|
74
|
+
|
|
75
|
+
Attributes:
|
|
76
|
+
connection_instance: Pre-existing BigQuery connection instance to use.
|
|
77
|
+
on_job_start: Callback invoked when a query job starts.
|
|
78
|
+
on_job_complete: Callback invoked when a query job completes.
|
|
79
|
+
on_connection_create: Callback invoked when connection is created.
|
|
80
|
+
json_serializer: Custom JSON serializer for dict/list parameter conversion.
|
|
81
|
+
Defaults to sqlspec.utils.serializers.to_json if not provided.
|
|
82
|
+
enable_uuid_conversion: Enable automatic UUID string conversion.
|
|
83
|
+
When True (default), UUID strings are automatically converted to UUID objects.
|
|
84
|
+
When False, UUID strings are treated as regular strings.
|
|
85
|
+
enable_events: Enable database event channel support.
|
|
86
|
+
Defaults to True when extension_config["events"] is configured.
|
|
87
|
+
Provides pub/sub capabilities via table-backed queue (BigQuery has no native pub/sub).
|
|
88
|
+
Requires extension_config["events"] for migration setup.
|
|
89
|
+
events_backend: Event channel backend selection.
|
|
90
|
+
Only option: "table_queue" (durable table-backed queue with retries and exactly-once delivery).
|
|
91
|
+
BigQuery does not have native pub/sub, so table_queue is the only backend.
|
|
92
|
+
Defaults to "table_queue".
|
|
93
|
+
"""
|
|
94
|
+
|
|
95
|
+
connection_instance: NotRequired["BigQueryConnection"]
|
|
96
|
+
on_job_start: NotRequired["Callable[[str], None]"]
|
|
97
|
+
on_job_complete: NotRequired["Callable[[str, Any], None]"]
|
|
98
|
+
on_connection_create: NotRequired["Callable[[Any], None]"]
|
|
99
|
+
json_serializer: NotRequired["Callable[[Any], str]"]
|
|
100
|
+
enable_uuid_conversion: NotRequired[bool]
|
|
101
|
+
enable_events: NotRequired[bool]
|
|
102
|
+
events_backend: NotRequired[str]
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class BigQueryConnectionContext:
|
|
106
|
+
"""Context manager for BigQuery connections."""
|
|
107
|
+
|
|
108
|
+
__slots__ = ("_config", "_connection")
|
|
109
|
+
|
|
110
|
+
def __init__(self, config: "BigQueryConfig") -> None:
|
|
111
|
+
self._config = config
|
|
112
|
+
self._connection: BigQueryConnection | None = None
|
|
113
|
+
|
|
114
|
+
def __enter__(self) -> BigQueryConnection:
|
|
115
|
+
self._connection = self._config.create_connection()
|
|
116
|
+
return self._connection
|
|
117
|
+
|
|
118
|
+
def __exit__(
|
|
119
|
+
self, exc_type: "type[BaseException] | None", exc_val: "BaseException | None", exc_tb: Any
|
|
120
|
+
) -> bool | None:
|
|
121
|
+
return None
|
|
122
|
+
|
|
123
|
+
|
|
124
|
+
class _BigQueryConnectionHook:
|
|
125
|
+
__slots__ = ("_hook",)
|
|
126
|
+
|
|
127
|
+
def __init__(self, hook: "Callable[[BigQueryConnection], None]") -> None:
|
|
128
|
+
self._hook = hook
|
|
129
|
+
|
|
130
|
+
def __call__(self, context: "dict[str, Any]") -> None:
|
|
131
|
+
connection = context.get("connection")
|
|
132
|
+
if connection is None:
|
|
133
|
+
return
|
|
134
|
+
self._hook(connection)
|
|
135
|
+
|
|
136
|
+
|
|
137
|
+
class _BigQuerySessionConnectionHandler:
|
|
138
|
+
__slots__ = ("_config",)
|
|
139
|
+
|
|
140
|
+
def __init__(self, config: "BigQueryConfig") -> None:
|
|
141
|
+
self._config = config
|
|
142
|
+
|
|
143
|
+
def acquire_connection(self) -> "BigQueryConnection":
|
|
144
|
+
return self._config.create_connection()
|
|
145
|
+
|
|
146
|
+
def release_connection(self, _conn: "BigQueryConnection") -> None:
|
|
147
|
+
return None
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
__all__ = ("BigQueryConfig", "BigQueryConnectionParams", "BigQueryDriverFeatures")
|
|
151
|
+
|
|
152
|
+
|
|
153
|
+
class BigQueryConfig(NoPoolSyncConfig[BigQueryConnection, BigQueryDriver]):
|
|
154
|
+
"""BigQuery configuration.
|
|
155
|
+
|
|
156
|
+
Configuration for Google Cloud BigQuery connections.
|
|
157
|
+
"""
|
|
158
|
+
|
|
159
|
+
driver_type: ClassVar[type[BigQueryDriver]] = BigQueryDriver
|
|
160
|
+
connection_type: "ClassVar[type[BigQueryConnection]]" = BigQueryConnection
|
|
161
|
+
supports_transactional_ddl: ClassVar[bool] = False
|
|
162
|
+
supports_native_parquet_import: ClassVar[bool] = True
|
|
163
|
+
supports_native_arrow_export: ClassVar[bool] = True
|
|
164
|
+
supports_native_parquet_export: ClassVar[bool] = True
|
|
165
|
+
requires_staging_for_load: ClassVar[bool] = True
|
|
166
|
+
staging_protocols: "ClassVar[tuple[str, ...]]" = ("gs://",)
|
|
167
|
+
|
|
168
|
+
def __init__(
|
|
169
|
+
self,
|
|
170
|
+
*,
|
|
171
|
+
connection_config: "BigQueryConnectionParams | dict[str, Any] | None" = None,
|
|
172
|
+
connection_instance: "Any" = None,
|
|
173
|
+
migration_config: "dict[str, Any] | None" = None,
|
|
174
|
+
statement_config: "StatementConfig | None" = None,
|
|
175
|
+
driver_features: "BigQueryDriverFeatures | dict[str, Any] | None" = None,
|
|
176
|
+
bind_key: "str | None" = None,
|
|
177
|
+
extension_config: "ExtensionConfigs | None" = None,
|
|
178
|
+
observability_config: "ObservabilityConfig | None" = None,
|
|
179
|
+
**kwargs: Any,
|
|
180
|
+
) -> None:
|
|
181
|
+
"""Initialize BigQuery configuration.
|
|
182
|
+
|
|
183
|
+
Args:
|
|
184
|
+
connection_config: Connection configuration parameters
|
|
185
|
+
connection_instance: Pre-created BigQuery Client instance to use instead of creating new one
|
|
186
|
+
migration_config: Migration configuration
|
|
187
|
+
statement_config: Statement configuration override
|
|
188
|
+
driver_features: BigQuery-specific driver features
|
|
189
|
+
bind_key: Optional unique identifier for this configuration
|
|
190
|
+
extension_config: Extension-specific configuration (e.g., Litestar plugin settings)
|
|
191
|
+
observability_config: Adapter-level observability overrides for lifecycle hooks and observers
|
|
192
|
+
**kwargs: Additional keyword arguments passed to the base configuration.
|
|
193
|
+
"""
|
|
194
|
+
|
|
195
|
+
self.connection_config = normalize_connection_config(connection_config)
|
|
196
|
+
|
|
197
|
+
(driver_features, serializer, user_connection_hook, features_connection_instance) = apply_driver_features(
|
|
198
|
+
driver_features
|
|
199
|
+
)
|
|
200
|
+
|
|
201
|
+
resolved_connection_instance = connection_instance or features_connection_instance
|
|
202
|
+
self._connection_instance = resolved_connection_instance
|
|
203
|
+
|
|
204
|
+
if "default_query_job_config" not in self.connection_config:
|
|
205
|
+
self._setup_default_job_config()
|
|
206
|
+
|
|
207
|
+
statement_config = statement_config or build_statement_config(json_serializer=serializer)
|
|
208
|
+
|
|
209
|
+
local_observability = observability_config
|
|
210
|
+
if user_connection_hook is not None:
|
|
211
|
+
lifecycle_override = ObservabilityConfig(
|
|
212
|
+
lifecycle={"on_connection_create": [_BigQueryConnectionHook(user_connection_hook)]}
|
|
213
|
+
)
|
|
214
|
+
local_observability = ObservabilityConfig.merge(local_observability, lifecycle_override)
|
|
215
|
+
|
|
216
|
+
super().__init__(
|
|
217
|
+
connection_config=self.connection_config,
|
|
218
|
+
connection_instance=resolved_connection_instance,
|
|
219
|
+
migration_config=migration_config,
|
|
220
|
+
statement_config=statement_config,
|
|
221
|
+
driver_features=driver_features,
|
|
222
|
+
bind_key=bind_key,
|
|
223
|
+
extension_config=extension_config,
|
|
224
|
+
observability_config=local_observability,
|
|
225
|
+
**kwargs,
|
|
226
|
+
)
|
|
227
|
+
|
|
228
|
+
self.driver_features = driver_features
|
|
229
|
+
|
|
230
|
+
def _setup_default_job_config(self) -> None:
|
|
231
|
+
"""Set up default job configuration."""
|
|
232
|
+
|
|
233
|
+
if self.connection_config.get("default_query_job_config") is not None:
|
|
234
|
+
return
|
|
235
|
+
|
|
236
|
+
job_config = QueryJobConfig()
|
|
237
|
+
|
|
238
|
+
dataset_id = self.connection_config.get("dataset_id")
|
|
239
|
+
project = self.connection_config.get("project")
|
|
240
|
+
if dataset_id and project and "." not in dataset_id:
|
|
241
|
+
job_config.default_dataset = f"{project}.{dataset_id}"
|
|
242
|
+
|
|
243
|
+
use_query_cache = self.connection_config.get("use_query_cache")
|
|
244
|
+
if use_query_cache is not None:
|
|
245
|
+
job_config.use_query_cache = use_query_cache
|
|
246
|
+
else:
|
|
247
|
+
job_config.use_query_cache = True
|
|
248
|
+
|
|
249
|
+
maximum_bytes_billed = self.connection_config.get("maximum_bytes_billed")
|
|
250
|
+
if maximum_bytes_billed is not None:
|
|
251
|
+
job_config.maximum_bytes_billed = maximum_bytes_billed
|
|
252
|
+
|
|
253
|
+
query_timeout_ms = self.connection_config.get("query_timeout_ms")
|
|
254
|
+
if query_timeout_ms is not None:
|
|
255
|
+
job_config.job_timeout_ms = query_timeout_ms
|
|
256
|
+
|
|
257
|
+
self.connection_config["default_query_job_config"] = job_config
|
|
258
|
+
|
|
259
|
+
def create_connection(self) -> BigQueryConnection:
|
|
260
|
+
"""Create and return a new BigQuery Client instance.
|
|
261
|
+
|
|
262
|
+
Returns:
|
|
263
|
+
A new BigQuery Client instance.
|
|
264
|
+
|
|
265
|
+
Raises:
|
|
266
|
+
ImproperConfigurationError: If the connection could not be established.
|
|
267
|
+
"""
|
|
268
|
+
|
|
269
|
+
if self._connection_instance is not None:
|
|
270
|
+
return cast("BigQueryConnection", self._connection_instance)
|
|
271
|
+
|
|
272
|
+
try:
|
|
273
|
+
client_fields = {"project", "location", "credentials", "client_options", "client_info"}
|
|
274
|
+
config_dict: dict[str, Any] = {
|
|
275
|
+
field: value
|
|
276
|
+
for field, value in self.connection_config.items()
|
|
277
|
+
if field in client_fields and value is not None and value is not Empty
|
|
278
|
+
}
|
|
279
|
+
connection = self.connection_type(**config_dict)
|
|
280
|
+
|
|
281
|
+
default_query_job_config = self.connection_config.get("default_query_job_config")
|
|
282
|
+
if default_query_job_config is not None:
|
|
283
|
+
self.driver_features["default_query_job_config"] = default_query_job_config
|
|
284
|
+
|
|
285
|
+
default_load_job_config = self.connection_config.get("default_load_job_config")
|
|
286
|
+
if default_load_job_config is not None:
|
|
287
|
+
self.driver_features["default_load_job_config"] = default_load_job_config
|
|
288
|
+
|
|
289
|
+
self._connection_instance = connection
|
|
290
|
+
except Exception as e:
|
|
291
|
+
project = self.connection_config.get("project", "Unknown")
|
|
292
|
+
msg = f"Could not configure BigQuery connection for project '{project}'. Error: {e}"
|
|
293
|
+
raise ImproperConfigurationError(msg) from e
|
|
294
|
+
return connection
|
|
295
|
+
|
|
296
|
+
def provide_connection(self, *_args: Any, **_kwargs: Any) -> "BigQueryConnectionContext":
|
|
297
|
+
"""Provide a BigQuery client within a context manager.
|
|
298
|
+
|
|
299
|
+
Args:
|
|
300
|
+
*_args: Additional arguments.
|
|
301
|
+
**_kwargs: Additional keyword arguments.
|
|
302
|
+
|
|
303
|
+
Returns:
|
|
304
|
+
A BigQuery connection context manager.
|
|
305
|
+
"""
|
|
306
|
+
return BigQueryConnectionContext(self)
|
|
307
|
+
|
|
308
|
+
def provide_session(
|
|
309
|
+
self, *_args: Any, statement_config: "StatementConfig | None" = None, **_kwargs: Any
|
|
310
|
+
) -> "BigQuerySessionContext":
|
|
311
|
+
"""Provide a BigQuery driver session context manager.
|
|
312
|
+
|
|
313
|
+
Args:
|
|
314
|
+
*_args: Additional arguments.
|
|
315
|
+
statement_config: Optional statement configuration override.
|
|
316
|
+
**_kwargs: Additional keyword arguments.
|
|
317
|
+
|
|
318
|
+
Returns:
|
|
319
|
+
A BigQuery driver session context manager.
|
|
320
|
+
"""
|
|
321
|
+
handler = _BigQuerySessionConnectionHandler(self)
|
|
322
|
+
|
|
323
|
+
return BigQuerySessionContext(
|
|
324
|
+
acquire_connection=handler.acquire_connection,
|
|
325
|
+
release_connection=handler.release_connection,
|
|
326
|
+
statement_config=statement_config or self.statement_config or default_statement_config,
|
|
327
|
+
driver_features=self.driver_features,
|
|
328
|
+
prepare_driver=self._prepare_driver,
|
|
329
|
+
)
|
|
330
|
+
|
|
331
|
+
def get_signature_namespace(self) -> "dict[str, Any]":
|
|
332
|
+
"""Get the signature namespace for BigQuery types.
|
|
333
|
+
|
|
334
|
+
Returns:
|
|
335
|
+
Dictionary mapping type names to types.
|
|
336
|
+
"""
|
|
337
|
+
namespace = super().get_signature_namespace()
|
|
338
|
+
namespace.update({
|
|
339
|
+
"BigQueryConnectionContext": BigQueryConnectionContext,
|
|
340
|
+
"BigQueryConnection": BigQueryConnection,
|
|
341
|
+
"BigQueryConnectionParams": BigQueryConnectionParams,
|
|
342
|
+
"BigQueryCursor": BigQueryCursor,
|
|
343
|
+
"BigQueryDriver": BigQueryDriver,
|
|
344
|
+
"BigQueryDriverFeatures": BigQueryDriverFeatures,
|
|
345
|
+
"BigQueryExceptionHandler": BigQueryExceptionHandler,
|
|
346
|
+
"BigQuerySessionContext": BigQuerySessionContext,
|
|
347
|
+
})
|
|
348
|
+
return namespace
|
|
349
|
+
|
|
350
|
+
def get_event_runtime_hints(self) -> "EventRuntimeHints":
|
|
351
|
+
"""Return polling defaults tuned for BigQuery latency."""
|
|
352
|
+
|
|
353
|
+
return EventRuntimeHints(poll_interval=2.0, lease_seconds=60, retention_seconds=172_800)
|
|
Binary file
|