sqlspec 0.54.2__py3-none-any.whl → 0.55.0__py3-none-any.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.
- sqlspec/_typing.py +234 -200
- sqlspec/adapters/adbc/_typing.py +4 -1
- sqlspec/adapters/adbc/config.py +5 -5
- sqlspec/adapters/adbc/core.py +2 -1
- sqlspec/adapters/adbc/data_dictionary.py +376 -5
- sqlspec/adapters/adbc/driver.py +20 -15
- sqlspec/adapters/aiomysql/config.py +5 -5
- sqlspec/adapters/aiomysql/core.py +7 -14
- sqlspec/adapters/aiomysql/data_dictionary.py +188 -7
- sqlspec/adapters/aiomysql/driver.py +2 -8
- sqlspec/adapters/aiosqlite/config.py +16 -6
- sqlspec/adapters/aiosqlite/core.py +252 -14
- sqlspec/adapters/aiosqlite/data_dictionary.py +80 -58
- sqlspec/adapters/aiosqlite/driver.py +103 -32
- sqlspec/adapters/aiosqlite/pool.py +78 -74
- sqlspec/adapters/arrow_odbc/config.py +2 -2
- sqlspec/adapters/arrow_odbc/core.py +55 -2
- sqlspec/adapters/arrow_odbc/data_dictionary.py +119 -0
- sqlspec/adapters/arrow_odbc/driver.py +37 -18
- sqlspec/adapters/asyncmy/config.py +5 -5
- sqlspec/adapters/asyncmy/core.py +7 -14
- sqlspec/adapters/asyncmy/data_dictionary.py +188 -7
- sqlspec/adapters/asyncmy/driver.py +2 -8
- sqlspec/adapters/asyncpg/config.py +7 -8
- sqlspec/adapters/asyncpg/core.py +5 -2
- sqlspec/adapters/asyncpg/data_dictionary.py +299 -7
- sqlspec/adapters/asyncpg/driver.py +3 -0
- sqlspec/adapters/asyncpg/events/_hub.py +46 -4
- sqlspec/adapters/asyncpg/events/backend.py +203 -21
- sqlspec/adapters/bigquery/_typing.py +3 -10
- sqlspec/adapters/bigquery/adk/store.py +2 -2
- sqlspec/adapters/bigquery/config.py +5 -5
- sqlspec/adapters/bigquery/core.py +1 -1
- sqlspec/adapters/bigquery/data_dictionary.py +236 -18
- sqlspec/adapters/bigquery/driver.py +14 -13
- sqlspec/adapters/cockroach_asyncpg/config.py +1 -1
- sqlspec/adapters/cockroach_asyncpg/data_dictionary.py +270 -7
- sqlspec/adapters/cockroach_psycopg/adk/store.py +348 -419
- sqlspec/adapters/cockroach_psycopg/config.py +2 -2
- sqlspec/adapters/cockroach_psycopg/data_dictionary.py +400 -12
- sqlspec/adapters/cockroach_psycopg/driver.py +17 -16
- sqlspec/adapters/duckdb/config.py +5 -5
- sqlspec/adapters/duckdb/core.py +58 -0
- sqlspec/adapters/duckdb/data_dictionary.py +101 -9
- sqlspec/adapters/duckdb/driver.py +43 -25
- sqlspec/adapters/duckdb/pool.py +51 -27
- sqlspec/adapters/mssql_python/__init__.py +3 -23
- sqlspec/adapters/mssql_python/_typing.py +2 -71
- sqlspec/adapters/mssql_python/adk/__init__.py +2 -6
- sqlspec/adapters/mssql_python/adk/store.py +6 -371
- sqlspec/adapters/mssql_python/config.py +4 -143
- sqlspec/adapters/mssql_python/core.py +24 -2
- sqlspec/adapters/mssql_python/data_dictionary.py +96 -145
- sqlspec/adapters/mssql_python/driver.py +27 -365
- sqlspec/adapters/mssql_python/events/__init__.py +2 -6
- sqlspec/adapters/mssql_python/events/store.py +2 -11
- sqlspec/adapters/mssql_python/litestar/store.py +168 -115
- sqlspec/adapters/mssql_python/migrations.py +3 -66
- sqlspec/adapters/mysqlconnector/adk/store.py +201 -243
- sqlspec/adapters/mysqlconnector/config.py +4 -6
- sqlspec/adapters/mysqlconnector/core.py +27 -23
- sqlspec/adapters/mysqlconnector/data_dictionary.py +347 -11
- sqlspec/adapters/mysqlconnector/driver.py +2 -22
- sqlspec/adapters/oracledb/_typing.py +2 -36
- sqlspec/adapters/oracledb/_vector_handlers.py +5 -1
- sqlspec/adapters/oracledb/adk/store.py +1131 -1284
- sqlspec/adapters/oracledb/config.py +5 -5
- sqlspec/adapters/oracledb/core.py +4 -16
- sqlspec/adapters/oracledb/data_dictionary.py +613 -2
- sqlspec/adapters/oracledb/driver.py +63 -23
- sqlspec/adapters/oracledb/events/_hub.py +5 -3
- sqlspec/adapters/oracledb/events/backend.py +6 -4
- sqlspec/adapters/oracledb/migrations.py +32 -11
- sqlspec/adapters/psqlpy/_typing.py +16 -8
- sqlspec/adapters/psqlpy/config.py +9 -9
- sqlspec/adapters/psqlpy/core.py +19 -6
- sqlspec/adapters/psqlpy/data_dictionary.py +299 -7
- sqlspec/adapters/psqlpy/driver.py +0 -5
- sqlspec/adapters/psqlpy/events/_hub.py +49 -5
- sqlspec/adapters/psqlpy/events/backend.py +204 -20
- sqlspec/adapters/psycopg/adk/store.py +343 -422
- sqlspec/adapters/psycopg/config.py +10 -11
- sqlspec/adapters/psycopg/core.py +11 -5
- sqlspec/adapters/psycopg/data_dictionary.py +446 -12
- sqlspec/adapters/psycopg/driver.py +131 -47
- sqlspec/adapters/psycopg/events/_hub.py +136 -29
- sqlspec/adapters/psycopg/events/backend.py +347 -42
- sqlspec/adapters/pymssql/adk/__init__.py +2 -7
- sqlspec/adapters/pymssql/adk/store.py +2 -5
- sqlspec/adapters/pymssql/config.py +2 -2
- sqlspec/adapters/pymssql/core.py +11 -6
- sqlspec/adapters/pymssql/data_dictionary.py +97 -9
- sqlspec/adapters/pymssql/driver.py +5 -7
- sqlspec/adapters/pymssql/events/__init__.py +2 -2
- sqlspec/adapters/pymssql/events/store.py +1 -4
- sqlspec/adapters/pymssql/pool.py +2 -2
- sqlspec/adapters/pymysql/config.py +2 -2
- sqlspec/adapters/pymysql/core.py +7 -11
- sqlspec/adapters/pymysql/data_dictionary.py +186 -7
- sqlspec/adapters/pymysql/driver.py +0 -4
- sqlspec/adapters/pymysql/pool.py +2 -2
- sqlspec/adapters/spanner/_typing.py +1 -1
- sqlspec/adapters/spanner/config.py +4 -4
- sqlspec/adapters/spanner/data_dictionary.py +184 -2
- sqlspec/adapters/spanner/driver.py +18 -31
- sqlspec/adapters/spanner/type_converter.py +5 -5
- sqlspec/adapters/sqlite/adk/store.py +242 -333
- sqlspec/adapters/sqlite/config.py +13 -8
- sqlspec/adapters/sqlite/core.py +213 -8
- sqlspec/adapters/sqlite/data_dictionary.py +79 -59
- sqlspec/adapters/sqlite/driver.py +50 -3
- sqlspec/adapters/sqlite/pool.py +46 -26
- sqlspec/base.py +19 -18
- sqlspec/builder/_base.py +28 -18
- sqlspec/builder/_column.py +106 -164
- sqlspec/builder/_ddl.py +178 -195
- sqlspec/builder/_delete.py +1 -11
- sqlspec/builder/_dml.py +6 -5
- sqlspec/builder/_factory.py +147 -169
- sqlspec/builder/_insert.py +1 -11
- sqlspec/builder/_join.py +15 -44
- sqlspec/builder/_merge.py +58 -101
- sqlspec/builder/_parsing_utils.py +43 -3
- sqlspec/builder/_select.py +119 -167
- sqlspec/builder/_update.py +8 -16
- sqlspec/cli.py +200 -270
- sqlspec/config.py +136 -99
- sqlspec/core/filters.py +2 -2
- sqlspec/core/result/_base.py +25 -20
- sqlspec/core/statement.py +108 -96
- sqlspec/data_dictionary/__init__.py +44 -0
- sqlspec/data_dictionary/_capabilities.py +142 -0
- sqlspec/data_dictionary/_dependencies.py +534 -0
- sqlspec/data_dictionary/_registry.py +0 -1
- sqlspec/data_dictionary/_types.py +615 -2
- sqlspec/data_dictionary/dialects/__init__.py +2 -1
- sqlspec/data_dictionary/dialects/cockroachdb.py +1 -0
- sqlspec/data_dictionary/dialects/mssql.py +371 -3
- sqlspec/data_dictionary/dialects/mysql.py +278 -2
- sqlspec/data_dictionary/sql/bigquery/columns/by_dataset.sql +22 -0
- sqlspec/data_dictionary/sql/bigquery/columns/field_paths_by_dataset.sql +16 -0
- sqlspec/data_dictionary/sql/bigquery/constraints/by_dataset.sql +31 -0
- sqlspec/data_dictionary/sql/bigquery/datasets/list.sql +14 -0
- sqlspec/data_dictionary/sql/bigquery/ddl/table_ddl_by_dataset.sql +12 -0
- sqlspec/data_dictionary/sql/bigquery/dependencies/hints_by_dataset.sql +22 -0
- sqlspec/data_dictionary/sql/bigquery/indexes/search_by_dataset.sql +19 -0
- sqlspec/data_dictionary/sql/bigquery/indexes/vector_by_dataset.sql +19 -0
- sqlspec/data_dictionary/sql/bigquery/objects/by_dataset.sql +13 -0
- sqlspec/data_dictionary/sql/bigquery/privileges/by_dataset.sql +13 -0
- sqlspec/data_dictionary/sql/bigquery/routines/by_dataset.sql +19 -0
- sqlspec/data_dictionary/sql/bigquery/routines/options_by_dataset.sql +13 -0
- sqlspec/data_dictionary/sql/bigquery/routines/parameters_by_dataset.sql +16 -0
- sqlspec/data_dictionary/sql/bigquery/system/jobs_by_region.sql +26 -0
- sqlspec/data_dictionary/sql/bigquery/system/reservations_by_region.sql +16 -0
- sqlspec/data_dictionary/sql/bigquery/system/sessions_by_region.sql +15 -0
- sqlspec/data_dictionary/sql/bigquery/tables/options_by_dataset.sql +13 -0
- sqlspec/data_dictionary/sql/bigquery/tables/partitions_by_dataset.sql +15 -0
- sqlspec/data_dictionary/sql/bigquery/tables/storage_by_dataset.sql +20 -0
- sqlspec/data_dictionary/sql/bigquery/tables.sql +3 -0
- sqlspec/data_dictionary/sql/bigquery/views/by_dataset.sql +13 -0
- sqlspec/data_dictionary/sql/bigquery/views/materialized_by_dataset.sql +17 -0
- sqlspec/data_dictionary/sql/cockroachdb/columns/by_schema.sql +18 -0
- sqlspec/data_dictionary/sql/cockroachdb/comments/by_schema.sql +10 -0
- sqlspec/data_dictionary/sql/cockroachdb/constraints/by_schema.sql +43 -0
- sqlspec/data_dictionary/sql/cockroachdb/crdb_internal/ranges.sql +11 -0
- sqlspec/data_dictionary/sql/cockroachdb/ddl/by_object.sql +10 -0
- sqlspec/data_dictionary/sql/cockroachdb/dependencies/by_schema.sql +20 -0
- sqlspec/data_dictionary/sql/cockroachdb/indexes/by_schema.sql +15 -0
- sqlspec/data_dictionary/sql/cockroachdb/objects/by_schema.sql +15 -0
- sqlspec/data_dictionary/sql/cockroachdb/privileges/by_schema.sql +13 -0
- sqlspec/data_dictionary/sql/cockroachdb/schemas/list.sql +10 -0
- sqlspec/data_dictionary/sql/cockroachdb/sequences/by_schema.sql +14 -0
- sqlspec/data_dictionary/sql/cockroachdb/tables/by_schema.sql +15 -0
- sqlspec/data_dictionary/sql/cockroachdb/views/by_schema.sql +11 -0
- sqlspec/data_dictionary/sql/duckdb/columns/by_schema.sql +20 -0
- sqlspec/data_dictionary/sql/duckdb/columns/by_table.sql +21 -0
- sqlspec/data_dictionary/sql/duckdb/constraints/by_schema.sql +16 -0
- sqlspec/data_dictionary/sql/duckdb/constraints/by_table.sql +17 -0
- sqlspec/data_dictionary/sql/duckdb/databases/list.sql +11 -0
- sqlspec/data_dictionary/sql/duckdb/dependencies/by_schema.sql +50 -0
- sqlspec/data_dictionary/sql/duckdb/extensions/list.sql +14 -0
- sqlspec/data_dictionary/sql/duckdb/functions/by_schema.sql +18 -0
- sqlspec/data_dictionary/sql/duckdb/indexes/by_schema.sql +16 -0
- sqlspec/data_dictionary/sql/duckdb/indexes/by_table.sql +17 -0
- sqlspec/data_dictionary/sql/duckdb/objects/by_schema.sql +30 -0
- sqlspec/data_dictionary/sql/duckdb/schemas/list.sql +10 -0
- sqlspec/data_dictionary/sql/duckdb/sequences/by_schema.sql +19 -0
- sqlspec/data_dictionary/sql/duckdb/system/logs.sql +4 -0
- sqlspec/data_dictionary/sql/duckdb/system/memory.sql +4 -0
- sqlspec/data_dictionary/sql/duckdb/system/settings.sql +11 -0
- sqlspec/data_dictionary/sql/duckdb/views/by_schema.sql +15 -0
- sqlspec/data_dictionary/sql/mariadb/columns/by_schema.sql +23 -0
- sqlspec/data_dictionary/sql/mariadb/constraints/by_schema.sql +30 -0
- sqlspec/data_dictionary/sql/mariadb/ddl/show_create_event.sql +3 -0
- sqlspec/data_dictionary/sql/mariadb/ddl/show_create_function.sql +3 -0
- sqlspec/data_dictionary/sql/mariadb/ddl/show_create_procedure.sql +3 -0
- sqlspec/data_dictionary/sql/mariadb/ddl/show_create_sequence.sql +3 -0
- sqlspec/data_dictionary/sql/mariadb/ddl/show_create_table.sql +3 -0
- sqlspec/data_dictionary/sql/mariadb/ddl/show_create_trigger.sql +3 -0
- sqlspec/data_dictionary/sql/mariadb/ddl/show_create_view.sql +3 -0
- sqlspec/data_dictionary/sql/mariadb/events/by_schema.sql +29 -0
- sqlspec/data_dictionary/sql/mariadb/indexes/by_schema.sql +19 -0
- sqlspec/data_dictionary/sql/mariadb/objects/by_schema.sql +50 -0
- sqlspec/data_dictionary/sql/mariadb/partitions/by_schema.sql +27 -0
- sqlspec/data_dictionary/sql/mariadb/plugins/list.sql +16 -0
- sqlspec/data_dictionary/sql/mariadb/privileges/by_schema.sql +24 -0
- sqlspec/data_dictionary/sql/mariadb/routines/by_schema.sql +21 -0
- sqlspec/data_dictionary/sql/mariadb/schemas/list.sql +10 -0
- sqlspec/data_dictionary/sql/mariadb/system/performance_schema_tables.sql +12 -0
- sqlspec/data_dictionary/sql/mariadb/tables/by_schema.sql +27 -0
- sqlspec/data_dictionary/sql/mariadb/triggers/by_schema.sql +21 -0
- sqlspec/data_dictionary/sql/mariadb/views/by_schema.sql +15 -0
- sqlspec/data_dictionary/sql/mssql/columns/by_schema.sql +53 -0
- sqlspec/data_dictionary/sql/mssql/columns/by_table.sql +54 -0
- sqlspec/data_dictionary/sql/mssql/constraints/by_schema.sql +42 -0
- sqlspec/data_dictionary/sql/mssql/constraints/by_table.sql +45 -0
- sqlspec/data_dictionary/sql/mssql/constraints/foreign_keys_by_schema.sql +21 -0
- sqlspec/data_dictionary/sql/mssql/constraints/foreign_keys_by_table.sql +22 -0
- sqlspec/data_dictionary/sql/mssql/ddl/index_inputs_by_table.sql +40 -0
- sqlspec/data_dictionary/sql/mssql/ddl/table_inputs_by_table.sql +38 -0
- sqlspec/data_dictionary/sql/mssql/dependencies/by_schema.sql +17 -0
- sqlspec/data_dictionary/sql/mssql/extended_properties/by_schema.sql +16 -0
- sqlspec/data_dictionary/sql/mssql/indexes/by_schema.sql +42 -0
- sqlspec/data_dictionary/sql/mssql/indexes/by_table.sql +43 -0
- sqlspec/data_dictionary/sql/mssql/modules/by_schema.sql +19 -0
- sqlspec/data_dictionary/sql/mssql/objects/by_schema.sql +16 -0
- sqlspec/data_dictionary/sql/mssql/permissions/by_schema.sql +20 -0
- sqlspec/data_dictionary/sql/mssql/permissions/role_members.sql +10 -0
- sqlspec/data_dictionary/sql/mssql/routines/by_schema.sql +17 -0
- sqlspec/data_dictionary/sql/mssql/routines/parameters_by_schema.sql +21 -0
- sqlspec/data_dictionary/sql/mssql/schemas/list.sql +9 -0
- sqlspec/data_dictionary/sql/mssql/sequences/by_schema.sql +18 -0
- sqlspec/data_dictionary/sql/mssql/storage/by_schema.sql +22 -0
- sqlspec/data_dictionary/sql/mssql/system/dmv_exec_requests.sql +20 -0
- sqlspec/data_dictionary/sql/mssql/system/query_store_runtime.sql +17 -0
- sqlspec/data_dictionary/sql/mssql/tables/all_by_schema.sql +16 -0
- sqlspec/data_dictionary/sql/mssql/tables/by_schema.sql +42 -0
- sqlspec/data_dictionary/sql/mssql/tables/details_by_table.sql +23 -0
- sqlspec/data_dictionary/sql/mssql/triggers/by_schema.sql +21 -0
- sqlspec/data_dictionary/sql/mssql/views/by_schema.sql +18 -0
- sqlspec/data_dictionary/sql/mysql/columns/by_schema.sql +23 -0
- sqlspec/data_dictionary/sql/mysql/columns.sql +9 -9
- sqlspec/data_dictionary/sql/mysql/components/list.sql +8 -0
- sqlspec/data_dictionary/sql/mysql/constraints/by_schema.sql +30 -0
- sqlspec/data_dictionary/sql/mysql/ddl/show_create_event.sql +3 -0
- sqlspec/data_dictionary/sql/mysql/ddl/show_create_function.sql +3 -0
- sqlspec/data_dictionary/sql/mysql/ddl/show_create_procedure.sql +3 -0
- sqlspec/data_dictionary/sql/mysql/ddl/show_create_table.sql +3 -0
- sqlspec/data_dictionary/sql/mysql/ddl/show_create_trigger.sql +3 -0
- sqlspec/data_dictionary/sql/mysql/ddl/show_create_view.sql +3 -0
- sqlspec/data_dictionary/sql/mysql/events/by_schema.sql +29 -0
- sqlspec/data_dictionary/sql/mysql/foreign_keys.sql +14 -14
- sqlspec/data_dictionary/sql/mysql/indexes/by_schema.sql +19 -0
- sqlspec/data_dictionary/sql/mysql/objects/by_schema.sql +38 -0
- sqlspec/data_dictionary/sql/mysql/partitions/by_schema.sql +27 -0
- sqlspec/data_dictionary/sql/mysql/plugins/list.sql +16 -0
- sqlspec/data_dictionary/sql/mysql/privileges/by_schema.sql +24 -0
- sqlspec/data_dictionary/sql/mysql/routines/by_schema.sql +21 -0
- sqlspec/data_dictionary/sql/mysql/schemas/list.sql +10 -0
- sqlspec/data_dictionary/sql/mysql/system/performance_schema_tables.sql +12 -0
- sqlspec/data_dictionary/sql/mysql/system/sys_schema_table_statistics.sql +12 -0
- sqlspec/data_dictionary/sql/mysql/tables/by_schema.sql +27 -0
- sqlspec/data_dictionary/sql/mysql/tables.sql +4 -1
- sqlspec/data_dictionary/sql/mysql/triggers/by_schema.sql +21 -0
- sqlspec/data_dictionary/sql/mysql/views/by_schema.sql +15 -0
- sqlspec/data_dictionary/sql/oracle/arguments/by_owner.sql +29 -0
- sqlspec/data_dictionary/sql/oracle/columns/by_owner.sql +30 -0
- sqlspec/data_dictionary/sql/oracle/columns.sql +12 -4
- sqlspec/data_dictionary/sql/oracle/comments/by_owner.sql +22 -0
- sqlspec/data_dictionary/sql/oracle/constraints/by_owner.sql +49 -0
- sqlspec/data_dictionary/sql/oracle/ddl/dbms_metadata.sql +4 -0
- sqlspec/data_dictionary/sql/oracle/dependencies/by_owner.sql +16 -0
- sqlspec/data_dictionary/sql/oracle/grants/by_owner.sql +34 -0
- sqlspec/data_dictionary/sql/oracle/indexes/by_owner.sql +55 -0
- sqlspec/data_dictionary/sql/oracle/lob_storage/by_owner.sql +28 -0
- sqlspec/data_dictionary/sql/oracle/materialized_views/by_owner.sql +27 -0
- sqlspec/data_dictionary/sql/oracle/objects/by_owner.sql +18 -0
- sqlspec/data_dictionary/sql/oracle/partitions/by_owner.sql +44 -0
- sqlspec/data_dictionary/sql/oracle/routines/by_owner.sql +21 -0
- sqlspec/data_dictionary/sql/oracle/schemas/by_owner.sql +13 -0
- sqlspec/data_dictionary/sql/oracle/sequences/by_owner.sql +21 -0
- sqlspec/data_dictionary/sql/oracle/source/by_owner.sql +13 -0
- sqlspec/data_dictionary/sql/oracle/system/awr.sql +10 -0
- sqlspec/data_dictionary/sql/oracle/system/no_diagnostics.sql +7 -0
- sqlspec/data_dictionary/sql/oracle/system/statspack.sql +10 -0
- sqlspec/data_dictionary/sql/oracle/tables/by_owner.sql +40 -0
- sqlspec/data_dictionary/sql/oracle/tables.sql +2 -2
- sqlspec/data_dictionary/sql/oracle/triggers/by_owner.sql +29 -0
- sqlspec/data_dictionary/sql/oracle/views/by_owner.sql +23 -0
- sqlspec/data_dictionary/sql/postgres/columns/by_schema.sql +41 -0
- sqlspec/data_dictionary/sql/postgres/comments/by_schema.sql +27 -0
- sqlspec/data_dictionary/sql/postgres/constraints/by_schema.sql +43 -0
- sqlspec/data_dictionary/sql/postgres/ddl/by_object.sql +44 -0
- sqlspec/data_dictionary/sql/postgres/dependencies/by_schema.sql +42 -0
- sqlspec/data_dictionary/sql/postgres/extensions/list.sql +11 -0
- sqlspec/data_dictionary/sql/postgres/indexes/by_schema.sql +43 -0
- sqlspec/data_dictionary/sql/postgres/materialized_views/by_schema.sql +17 -0
- sqlspec/data_dictionary/sql/postgres/objects/by_schema.sql +22 -7
- sqlspec/data_dictionary/sql/postgres/partitions/by_schema.sql +19 -0
- sqlspec/data_dictionary/sql/postgres/privileges/by_schema.sql +29 -0
- sqlspec/data_dictionary/sql/postgres/routines/by_schema.sql +25 -0
- sqlspec/data_dictionary/sql/postgres/schemas/list.sql +13 -0
- sqlspec/data_dictionary/sql/postgres/sequences/by_schema.sql +18 -0
- sqlspec/data_dictionary/sql/postgres/system/pg_stat_statements.sql +14 -0
- sqlspec/data_dictionary/sql/postgres/system/settings.sql +15 -0
- sqlspec/data_dictionary/sql/postgres/system/table_stats.sql +22 -0
- sqlspec/data_dictionary/sql/postgres/tables/by_schema.sql +58 -0
- sqlspec/data_dictionary/sql/postgres/triggers/by_schema.sql +20 -0
- sqlspec/data_dictionary/sql/postgres/views/by_schema.sql +17 -0
- sqlspec/data_dictionary/sql/spanner/change_streams/googlesql/list.sql +12 -0
- sqlspec/data_dictionary/sql/spanner/change_streams/googlesql/tables.sql +15 -0
- sqlspec/data_dictionary/sql/spanner/columns/googlesql/by_schema.sql +23 -0
- sqlspec/data_dictionary/sql/spanner/constraints/googlesql/by_schema.sql +31 -0
- sqlspec/data_dictionary/sql/spanner/database/googlesql/options.sql +9 -0
- sqlspec/data_dictionary/sql/spanner/indexes/googlesql/by_schema.sql +33 -0
- sqlspec/data_dictionary/sql/spanner/placements/googlesql/list.sql +8 -0
- sqlspec/data_dictionary/sql/spanner/privileges/googlesql/by_schema.sql +13 -0
- sqlspec/data_dictionary/sql/spanner/property_graphs/googlesql/list.sql +11 -0
- sqlspec/data_dictionary/sql/spanner/routines/googlesql/by_schema.sql +17 -0
- sqlspec/data_dictionary/sql/spanner/routines/googlesql/parameters_by_schema.sql +15 -0
- sqlspec/data_dictionary/sql/spanner/sequences/googlesql/by_schema.sql +14 -0
- sqlspec/data_dictionary/sql/spanner/system/googlesql/query_stats_top.sql +15 -0
- sqlspec/data_dictionary/sql/spanner/system/googlesql/table_sizes.sql +11 -0
- sqlspec/data_dictionary/sql/spanner/tables/googlesql/by_schema.sql +15 -0
- sqlspec/data_dictionary/sql/spanner/views/googlesql/by_schema.sql +13 -0
- sqlspec/data_dictionary/sql/sqlite/columns/by_schema.sql +22 -0
- sqlspec/data_dictionary/sql/sqlite/columns/by_table.sql +18 -0
- sqlspec/data_dictionary/sql/sqlite/compile_options/list.sql +3 -0
- sqlspec/data_dictionary/sql/sqlite/constraints/foreign_keys_by_schema.sql +19 -0
- sqlspec/data_dictionary/sql/sqlite/constraints/foreign_keys_by_table.sql +15 -0
- sqlspec/data_dictionary/sql/sqlite/functions/list.sql +3 -0
- sqlspec/data_dictionary/sql/sqlite/indexes/by_schema.sql +28 -0
- sqlspec/data_dictionary/sql/sqlite/indexes/by_table.sql +24 -0
- sqlspec/data_dictionary/sql/sqlite/indexes/columns_by_index.sql +13 -0
- sqlspec/data_dictionary/sql/sqlite/modules/list.sql +3 -0
- sqlspec/data_dictionary/sql/sqlite/native_sql/by_object.sql +10 -0
- sqlspec/data_dictionary/sql/sqlite/objects/by_schema.sql +13 -0
- sqlspec/data_dictionary/sql/sqlite/schemas/database_list.sql +3 -0
- sqlspec/data_dictionary/sql/sqlite/system/foreign_key_check.sql +3 -0
- sqlspec/data_dictionary/sql/sqlite/system/integrity_check.sql +3 -0
- sqlspec/data_dictionary/sql/sqlite/tables/by_schema.sql +49 -0
- sqlspec/data_dictionary/sql/sqlite/triggers/by_schema.sql +10 -0
- sqlspec/data_dictionary/sql/sqlite/views/by_schema.sql +10 -0
- sqlspec/driver/_async.py +119 -13
- sqlspec/driver/_common.py +34 -198
- sqlspec/driver/_storage_helpers.py +5 -1
- sqlspec/driver/_stream.py +43 -12
- sqlspec/driver/_sync.py +120 -12
- sqlspec/exceptions.py +5 -15
- sqlspec/extensions/adk/_config_utils.py +9 -6
- sqlspec/extensions/adk/artifact/service.py +13 -12
- sqlspec/extensions/adk/artifact/store.py +20 -35
- sqlspec/extensions/adk/memory/converters.py +3 -3
- sqlspec/extensions/adk/memory/service.py +20 -8
- sqlspec/extensions/adk/memory/store.py +72 -163
- sqlspec/extensions/adk/service.py +2 -2
- sqlspec/extensions/adk/store.py +174 -312
- sqlspec/extensions/events/__init__.py +2 -0
- sqlspec/extensions/events/_channel.py +468 -282
- sqlspec/extensions/events/_hints.py +0 -1
- sqlspec/extensions/events/_payload.py +19 -3
- sqlspec/extensions/events/_protocols.py +20 -0
- sqlspec/extensions/events/_queue.py +150 -62
- sqlspec/extensions/fastapi/extension.py +16 -35
- sqlspec/extensions/flask/_state.py +10 -24
- sqlspec/extensions/flask/_utils.py +4 -8
- sqlspec/extensions/flask/extension.py +0 -4
- sqlspec/extensions/litestar/channels.py +17 -5
- sqlspec/extensions/litestar/handlers.py +6 -31
- sqlspec/extensions/litestar/plugin.py +64 -78
- sqlspec/extensions/litestar/providers.py +4 -4
- sqlspec/extensions/sanic/_state.py +24 -9
- sqlspec/extensions/sanic/_utils.py +1 -4
- sqlspec/extensions/sanic/extension.py +19 -48
- sqlspec/extensions/starlette/_state.py +24 -9
- sqlspec/extensions/starlette/_utils.py +1 -5
- sqlspec/extensions/starlette/extension.py +17 -35
- sqlspec/extensions/starlette/middleware.py +4 -20
- sqlspec/loader.py +76 -27
- sqlspec/migrations/__init__.py +1 -2
- sqlspec/migrations/base.py +104 -12
- sqlspec/migrations/commands.py +199 -193
- sqlspec/migrations/fix.py +1 -1
- sqlspec/migrations/loaders.py +17 -1
- sqlspec/migrations/runner.py +206 -287
- sqlspec/migrations/squash.py +37 -43
- sqlspec/migrations/templates.py +17 -27
- sqlspec/migrations/tracker.py +287 -371
- sqlspec/migrations/utils.py +4 -19
- sqlspec/migrations/validation.py +8 -8
- sqlspec/migrations/version.py +11 -3
- sqlspec/protocols.py +87 -30
- sqlspec/storage/backends/base.py +9 -62
- sqlspec/storage/backends/obstore.py +8 -11
- sqlspec/storage/pipeline.py +1 -1
- sqlspec/typing.py +62 -32
- sqlspec/utils/arrow_helpers.py +18 -1
- sqlspec/utils/correlation.py +3 -2
- sqlspec/utils/fixtures.py +3 -3
- sqlspec/utils/module_loader.py +29 -1
- sqlspec/utils/schema.py +5 -12
- sqlspec/utils/serializers/__init__.py +1 -2
- sqlspec/utils/serializers/_json.py +134 -24
- sqlspec/utils/serializers/_numpy.py +1 -1
- sqlspec/utils/serializers/_schema.py +2 -5
- sqlspec/utils/sync_tools.py +2 -2
- sqlspec/utils/text.py +6 -4
- sqlspec/utils/type_converters.py +12 -7
- sqlspec/utils/type_guards.py +33 -11
- sqlspec/utils/uuids.py +3 -15
- {sqlspec-0.54.2.dist-info → sqlspec-0.55.0.dist-info}/METADATA +2 -2
- sqlspec-0.55.0.dist-info/RECORD +731 -0
- {sqlspec-0.54.2.dist-info → sqlspec-0.55.0.dist-info}/WHEEL +1 -1
- sqlspec-0.54.2.dist-info/RECORD +0 -532
- {sqlspec-0.54.2.dist-info → sqlspec-0.55.0.dist-info}/entry_points.txt +0 -0
- {sqlspec-0.54.2.dist-info → sqlspec-0.55.0.dist-info}/licenses/LICENSE +0 -0
sqlspec/_typing.py
CHANGED
|
@@ -10,11 +10,39 @@ import enum
|
|
|
10
10
|
from collections.abc import Iterable, Mapping
|
|
11
11
|
from dataclasses import dataclass
|
|
12
12
|
from enum import Enum
|
|
13
|
-
from typing import Any, ClassVar, Final, Literal, Protocol, cast, runtime_checkable
|
|
13
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Final, Literal, Protocol, cast, runtime_checkable
|
|
14
14
|
|
|
15
15
|
from typing_extensions import Self, TypeVar, dataclass_transform
|
|
16
16
|
|
|
17
|
-
from sqlspec.utils.module_loader import
|
|
17
|
+
from sqlspec.utils.module_loader import (
|
|
18
|
+
dependency_flag,
|
|
19
|
+
import_optional,
|
|
20
|
+
import_optional_attr,
|
|
21
|
+
module_available,
|
|
22
|
+
resolve_optional_attr,
|
|
23
|
+
)
|
|
24
|
+
|
|
25
|
+
if TYPE_CHECKING:
|
|
26
|
+
from attrs import AttrsInstance
|
|
27
|
+
from attrs import asdict as attrs_asdict
|
|
28
|
+
from attrs import define as attrs_define
|
|
29
|
+
from attrs import field as attrs_field
|
|
30
|
+
from attrs import fields as attrs_fields
|
|
31
|
+
from attrs import has as attrs_has
|
|
32
|
+
from cattrs import structure as cattrs_structure
|
|
33
|
+
from cattrs import unstructure as cattrs_unstructure
|
|
34
|
+
from litestar.dto.data_structures import DTOData
|
|
35
|
+
from numpy import ndarray as NumpyArray # noqa: N812
|
|
36
|
+
from opentelemetry import trace
|
|
37
|
+
from opentelemetry.trace import Span, Status, StatusCode, Tracer
|
|
38
|
+
from pandas import DataFrame as PandasDataFrame
|
|
39
|
+
from polars import DataFrame as PolarsDataFrame
|
|
40
|
+
from prometheus_client import Counter, Gauge, Histogram
|
|
41
|
+
from pyarrow import RecordBatch as ArrowRecordBatch
|
|
42
|
+
from pyarrow import RecordBatchReader as ArrowRecordBatchReader
|
|
43
|
+
from pyarrow import Schema as ArrowSchema
|
|
44
|
+
from pyarrow import Table as ArrowTable
|
|
45
|
+
from pydantic import BaseModel, FailFast, TypeAdapter
|
|
18
46
|
|
|
19
47
|
__all__ = (
|
|
20
48
|
"ALLOYDB_CONNECTOR_INSTALLED",
|
|
@@ -198,20 +226,6 @@ class FailFastStub:
|
|
|
198
226
|
fail_fast: bool = True
|
|
199
227
|
|
|
200
228
|
|
|
201
|
-
# Try to import real implementations at runtime
|
|
202
|
-
try:
|
|
203
|
-
from pydantic import BaseModel as _RealBaseModel
|
|
204
|
-
from pydantic import FailFast as _RealFailFast
|
|
205
|
-
from pydantic import TypeAdapter as _RealTypeAdapter
|
|
206
|
-
|
|
207
|
-
BaseModel = _RealBaseModel
|
|
208
|
-
TypeAdapter = _RealTypeAdapter
|
|
209
|
-
FailFast = _RealFailFast
|
|
210
|
-
except ImportError:
|
|
211
|
-
BaseModel = BaseModelStub # type: ignore[assignment,misc]
|
|
212
|
-
TypeAdapter = TypeAdapterStub # type: ignore[assignment,misc]
|
|
213
|
-
FailFast = FailFastStub # type: ignore[assignment,misc]
|
|
214
|
-
|
|
215
229
|
# Always define stub types for msgspec
|
|
216
230
|
|
|
217
231
|
|
|
@@ -276,12 +290,6 @@ except ImportError:
|
|
|
276
290
|
msgspec_fields = msgspec_fields_stub # type: ignore[assignment]
|
|
277
291
|
|
|
278
292
|
|
|
279
|
-
try:
|
|
280
|
-
import orjson # noqa: F401
|
|
281
|
-
except ImportError:
|
|
282
|
-
orjson = None # type: ignore[assignment]
|
|
283
|
-
|
|
284
|
-
|
|
285
293
|
# Always define stub type for DTOData
|
|
286
294
|
@runtime_checkable
|
|
287
295
|
class DTODataStub(Protocol[T]):
|
|
@@ -304,15 +312,6 @@ class DTODataStub(Protocol[T]):
|
|
|
304
312
|
return {}
|
|
305
313
|
|
|
306
314
|
|
|
307
|
-
# Try to import real implementation at runtime
|
|
308
|
-
try:
|
|
309
|
-
from litestar.dto.data_structures import DTOData as _RealDTOData # pyright: ignore[reportUnknownVariableType]
|
|
310
|
-
|
|
311
|
-
DTOData = _RealDTOData
|
|
312
|
-
except ImportError:
|
|
313
|
-
DTOData = DTODataStub # type: ignore[assignment,misc]
|
|
314
|
-
|
|
315
|
-
|
|
316
315
|
# Always define stub types for attrs
|
|
317
316
|
@dataclass_transform()
|
|
318
317
|
class AttrsInstanceStub:
|
|
@@ -358,41 +357,14 @@ def attrs_has_stub(*args: Any, **kwargs: Any) -> bool: # noqa: ARG001
|
|
|
358
357
|
return False
|
|
359
358
|
|
|
360
359
|
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
from attrs import asdict as _real_attrs_asdict
|
|
365
|
-
from attrs import define as _real_attrs_define
|
|
366
|
-
from attrs import field as _real_attrs_field
|
|
367
|
-
from attrs import fields as _real_attrs_fields
|
|
368
|
-
from attrs import has as _real_attrs_has
|
|
369
|
-
|
|
370
|
-
AttrsInstance = _RealAttrsInstance
|
|
371
|
-
attrs_asdict = _real_attrs_asdict
|
|
372
|
-
attrs_define = _real_attrs_define
|
|
373
|
-
attrs_field = _real_attrs_field
|
|
374
|
-
attrs_fields = _real_attrs_fields
|
|
375
|
-
attrs_has = _real_attrs_has
|
|
376
|
-
except ImportError:
|
|
377
|
-
AttrsInstance = AttrsInstanceStub # type: ignore[misc]
|
|
378
|
-
attrs_asdict = attrs_asdict_stub
|
|
379
|
-
attrs_define = attrs_define_stub
|
|
380
|
-
attrs_field = attrs_field_stub
|
|
381
|
-
attrs_fields = attrs_fields_stub
|
|
382
|
-
attrs_has = attrs_has_stub # type: ignore[assignment]
|
|
383
|
-
|
|
384
|
-
try:
|
|
385
|
-
from cattrs import structure as cattrs_structure
|
|
386
|
-
from cattrs import unstructure as cattrs_unstructure
|
|
387
|
-
except ImportError:
|
|
360
|
+
def cattrs_unstructure_stub(*args: Any, **kwargs: Any) -> Any: # noqa: ARG001
|
|
361
|
+
"""Placeholder implementation"""
|
|
362
|
+
return {}
|
|
388
363
|
|
|
389
|
-
def cattrs_unstructure(*args: Any, **kwargs: Any) -> Any: # noqa: ARG001
|
|
390
|
-
"""Placeholder implementation"""
|
|
391
|
-
return {}
|
|
392
364
|
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
365
|
+
def cattrs_structure_stub(*args: Any, **kwargs: Any) -> Any: # noqa: ARG001
|
|
366
|
+
"""Placeholder implementation"""
|
|
367
|
+
return {}
|
|
396
368
|
|
|
397
369
|
|
|
398
370
|
class EmptyEnum(Enum):
|
|
@@ -505,16 +477,10 @@ class ArrowRecordBatchReaderProtocol(Protocol):
|
|
|
505
477
|
...
|
|
506
478
|
|
|
507
479
|
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
from pyarrow import Table as ArrowTable
|
|
513
|
-
except ImportError:
|
|
514
|
-
ArrowTable = ArrowTableResult # type: ignore[assignment,misc]
|
|
515
|
-
ArrowRecordBatch = ArrowRecordBatchResult # type: ignore[assignment,misc]
|
|
516
|
-
ArrowSchema = ArrowSchemaProtocol # type: ignore[assignment,misc]
|
|
517
|
-
ArrowRecordBatchReader = ArrowRecordBatchReaderProtocol # type: ignore[assignment,misc]
|
|
480
|
+
_ARROW_TABLE_SHIM = ArrowTableResult
|
|
481
|
+
_ARROW_RECORD_BATCH_SHIM = ArrowRecordBatchResult
|
|
482
|
+
_ARROW_SCHEMA_SHIM = ArrowSchemaProtocol
|
|
483
|
+
_ARROW_RECORD_BATCH_READER_SHIM = ArrowRecordBatchReaderProtocol
|
|
518
484
|
|
|
519
485
|
|
|
520
486
|
@runtime_checkable
|
|
@@ -543,17 +509,10 @@ class PolarsDataFrameProtocol(Protocol):
|
|
|
543
509
|
...
|
|
544
510
|
|
|
545
511
|
|
|
546
|
-
|
|
547
|
-
from pandas import DataFrame as PandasDataFrame
|
|
548
|
-
except ImportError:
|
|
549
|
-
PandasDataFrame = PandasDataFrameProtocol # type: ignore[assignment,misc]
|
|
550
|
-
|
|
512
|
+
_PANDAS_DATAFRAME_SHIM = PandasDataFrameProtocol
|
|
551
513
|
|
|
552
|
-
try:
|
|
553
|
-
from polars import DataFrame as PolarsDataFrame
|
|
554
514
|
|
|
555
|
-
|
|
556
|
-
PolarsDataFrame = PolarsDataFrameProtocol # type: ignore[assignment,misc]
|
|
515
|
+
_POLARS_DATAFRAME_SHIM = PolarsDataFrameProtocol
|
|
557
516
|
|
|
558
517
|
|
|
559
518
|
@runtime_checkable
|
|
@@ -568,136 +527,145 @@ class NumpyArrayStub(Protocol):
|
|
|
568
527
|
...
|
|
569
528
|
|
|
570
529
|
|
|
571
|
-
|
|
572
|
-
from numpy import ndarray as NumpyArray # noqa: N812
|
|
573
|
-
except ImportError:
|
|
574
|
-
NumpyArray = NumpyArrayStub # type: ignore[assignment,misc]
|
|
530
|
+
_NUMPY_ARRAY_SHIM = NumpyArrayStub
|
|
575
531
|
|
|
576
532
|
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
Span, # pyright: ignore[reportMissingImports, reportAssignmentType]
|
|
581
|
-
Status,
|
|
582
|
-
StatusCode,
|
|
583
|
-
Tracer, # pyright: ignore[reportMissingImports, reportAssignmentType]
|
|
584
|
-
)
|
|
585
|
-
except ImportError:
|
|
586
|
-
# Define shims for when opentelemetry is not installed
|
|
587
|
-
|
|
588
|
-
class Span: # type: ignore[no-redef]
|
|
589
|
-
def set_attribute(self, key: str, value: Any) -> None:
|
|
590
|
-
return None
|
|
591
|
-
|
|
592
|
-
def record_exception(
|
|
593
|
-
self,
|
|
594
|
-
exception: "Exception",
|
|
595
|
-
attributes: "Mapping[str, Any] | None" = None,
|
|
596
|
-
timestamp: "int | None" = None,
|
|
597
|
-
escaped: bool = False,
|
|
598
|
-
) -> None:
|
|
599
|
-
return None
|
|
600
|
-
|
|
601
|
-
def set_status(self, status: Any, description: "str | None" = None) -> None:
|
|
602
|
-
return None
|
|
603
|
-
|
|
604
|
-
def end(self, end_time: "int | None" = None) -> None:
|
|
605
|
-
return None
|
|
606
|
-
|
|
607
|
-
def __enter__(self) -> Self:
|
|
608
|
-
return self
|
|
609
|
-
|
|
610
|
-
def __exit__(self, exc_type: object, exc_val: object, exc_tb: object) -> None:
|
|
611
|
-
return None
|
|
612
|
-
|
|
613
|
-
class Tracer: # type: ignore[no-redef]
|
|
614
|
-
def start_span(
|
|
615
|
-
self,
|
|
616
|
-
name: str,
|
|
617
|
-
context: Any = None,
|
|
618
|
-
kind: Any = None,
|
|
619
|
-
attributes: Any = None,
|
|
620
|
-
links: Any = None,
|
|
621
|
-
start_time: Any = None,
|
|
622
|
-
record_exception: bool = True,
|
|
623
|
-
set_status_on_exception: bool = True,
|
|
624
|
-
) -> Span:
|
|
625
|
-
return Span() # type: ignore[abstract]
|
|
626
|
-
|
|
627
|
-
class _TraceModule:
|
|
628
|
-
def get_tracer(
|
|
629
|
-
self,
|
|
630
|
-
instrumenting_module_name: str,
|
|
631
|
-
instrumenting_library_version: "str | None" = None,
|
|
632
|
-
schema_url: "str | None" = None,
|
|
633
|
-
tracer_provider: Any = None,
|
|
634
|
-
) -> Tracer:
|
|
635
|
-
return Tracer() # type: ignore[abstract] # pragma: no cover
|
|
636
|
-
|
|
637
|
-
def get_tracer_provider(self) -> Any: # pragma: no cover
|
|
638
|
-
return None
|
|
639
|
-
|
|
640
|
-
TracerProvider = type(None) # Shim for TracerProvider if needed elsewhere
|
|
641
|
-
StatusCode = type(None) # Shim for StatusCode
|
|
642
|
-
Status = type(None) # Shim for Status
|
|
643
|
-
|
|
644
|
-
trace = _TraceModule() # type: ignore[assignment]
|
|
645
|
-
StatusCode = trace.StatusCode # type: ignore[misc]
|
|
646
|
-
Status = trace.Status # type: ignore[misc]
|
|
533
|
+
class _SpanShim:
|
|
534
|
+
def set_attribute(self, key: str, value: Any) -> None:
|
|
535
|
+
return None
|
|
647
536
|
|
|
537
|
+
def record_exception(
|
|
538
|
+
self,
|
|
539
|
+
exception: "Exception",
|
|
540
|
+
attributes: "Mapping[str, Any] | None" = None,
|
|
541
|
+
timestamp: "int | None" = None,
|
|
542
|
+
escaped: bool = False,
|
|
543
|
+
) -> None:
|
|
544
|
+
return None
|
|
648
545
|
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
546
|
+
def set_status(self, status: Any, description: "str | None" = None) -> None:
|
|
547
|
+
return None
|
|
548
|
+
|
|
549
|
+
def end(self, end_time: "int | None" = None) -> None:
|
|
550
|
+
return None
|
|
551
|
+
|
|
552
|
+
def __enter__(self) -> Self:
|
|
553
|
+
return self
|
|
657
554
|
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
self,
|
|
661
|
-
name: str,
|
|
662
|
-
documentation: str,
|
|
663
|
-
labelnames: tuple[str, ...] = (),
|
|
664
|
-
namespace: str = "",
|
|
665
|
-
subsystem: str = "",
|
|
666
|
-
unit: str = "",
|
|
667
|
-
registry: Any = None,
|
|
668
|
-
ejemplar_fn: Any = None,
|
|
669
|
-
buckets: Any = None,
|
|
670
|
-
**_: Any,
|
|
671
|
-
) -> None:
|
|
672
|
-
return None
|
|
555
|
+
def __exit__(self, exc_type: object, exc_val: object, exc_tb: object) -> None:
|
|
556
|
+
return None
|
|
673
557
|
|
|
674
|
-
def labels(self, *labelvalues: str, **labelkwargs: str) -> "_MetricInstance":
|
|
675
|
-
return _MetricInstance()
|
|
676
558
|
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
559
|
+
_SPAN_SHIM = _SpanShim
|
|
560
|
+
_SPAN_SHIM.__name__ = "Span"
|
|
561
|
+
_SPAN_SHIM.__qualname__ = "Span"
|
|
680
562
|
|
|
681
|
-
def dec(self, amount: float = 1) -> None:
|
|
682
|
-
return None
|
|
683
563
|
|
|
684
|
-
|
|
685
|
-
|
|
564
|
+
class _TracerShim:
|
|
565
|
+
def start_span(
|
|
566
|
+
self,
|
|
567
|
+
name: str,
|
|
568
|
+
context: Any = None,
|
|
569
|
+
kind: Any = None,
|
|
570
|
+
attributes: Any = None,
|
|
571
|
+
links: Any = None,
|
|
572
|
+
start_time: Any = None,
|
|
573
|
+
record_exception: bool = True,
|
|
574
|
+
set_status_on_exception: bool = True,
|
|
575
|
+
) -> "_SpanShim":
|
|
576
|
+
return _SPAN_SHIM()
|
|
686
577
|
|
|
687
|
-
def observe(self, amount: float) -> None:
|
|
688
|
-
return None
|
|
689
578
|
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
579
|
+
_TRACER_SHIM = _TracerShim
|
|
580
|
+
_TRACER_SHIM.__name__ = "Tracer"
|
|
581
|
+
_TRACER_SHIM.__qualname__ = "Tracer"
|
|
693
582
|
|
|
694
|
-
class Gauge(_Metric): # type: ignore[no-redef]
|
|
695
|
-
def labels(self, *labelvalues: str, **labelkwargs: str) -> _MetricInstance:
|
|
696
|
-
return _MetricInstance() # pragma: no cover
|
|
697
583
|
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
584
|
+
class _TraceModule:
|
|
585
|
+
def get_tracer(
|
|
586
|
+
self,
|
|
587
|
+
instrumenting_module_name: str,
|
|
588
|
+
instrumenting_library_version: "str | None" = None,
|
|
589
|
+
schema_url: "str | None" = None,
|
|
590
|
+
tracer_provider: Any = None,
|
|
591
|
+
) -> "_TracerShim":
|
|
592
|
+
return _TRACER_SHIM() # pragma: no cover
|
|
593
|
+
|
|
594
|
+
def get_tracer_provider(self) -> Any: # pragma: no cover
|
|
595
|
+
return None
|
|
596
|
+
|
|
597
|
+
TracerProvider = type(None) # Shim for TracerProvider if needed elsewhere
|
|
598
|
+
StatusCode = type(None) # Shim for StatusCode
|
|
599
|
+
Status = type(None) # Shim for Status
|
|
600
|
+
|
|
601
|
+
|
|
602
|
+
_TRACE_SHIM = _TraceModule()
|
|
603
|
+
_STATUS_CODE_SHIM = type(None)
|
|
604
|
+
_STATUS_SHIM = type(None)
|
|
605
|
+
|
|
606
|
+
|
|
607
|
+
class _Metric: # Base shim for metrics
|
|
608
|
+
def __init__(
|
|
609
|
+
self,
|
|
610
|
+
name: str,
|
|
611
|
+
documentation: str,
|
|
612
|
+
labelnames: tuple[str, ...] = (),
|
|
613
|
+
namespace: str = "",
|
|
614
|
+
subsystem: str = "",
|
|
615
|
+
unit: str = "",
|
|
616
|
+
registry: Any = None,
|
|
617
|
+
ejemplar_fn: Any = None,
|
|
618
|
+
buckets: Any = None,
|
|
619
|
+
**_: Any,
|
|
620
|
+
) -> None:
|
|
621
|
+
return None
|
|
622
|
+
|
|
623
|
+
def labels(self, *labelvalues: str, **labelkwargs: str) -> "_MetricInstance":
|
|
624
|
+
return _MetricInstance()
|
|
625
|
+
|
|
626
|
+
|
|
627
|
+
class _MetricInstance:
|
|
628
|
+
def inc(self, amount: float = 1) -> None:
|
|
629
|
+
return None
|
|
630
|
+
|
|
631
|
+
def dec(self, amount: float = 1) -> None:
|
|
632
|
+
return None
|
|
633
|
+
|
|
634
|
+
def set(self, value: float) -> None:
|
|
635
|
+
return None
|
|
636
|
+
|
|
637
|
+
def observe(self, amount: float) -> None:
|
|
638
|
+
return None
|
|
639
|
+
|
|
640
|
+
|
|
641
|
+
class _CounterShim(_Metric):
|
|
642
|
+
def labels(self, *labelvalues: str, **labelkwargs: str) -> "_MetricInstance":
|
|
643
|
+
return _MetricInstance() # pragma: no cover
|
|
644
|
+
|
|
645
|
+
|
|
646
|
+
_COUNTER_SHIM = _CounterShim
|
|
647
|
+
_COUNTER_SHIM.__name__ = "Counter"
|
|
648
|
+
_COUNTER_SHIM.__qualname__ = "Counter"
|
|
649
|
+
|
|
650
|
+
|
|
651
|
+
class _GaugeShim(_Metric):
|
|
652
|
+
def labels(self, *labelvalues: str, **labelkwargs: str) -> "_MetricInstance":
|
|
653
|
+
return _MetricInstance() # pragma: no cover
|
|
654
|
+
|
|
655
|
+
|
|
656
|
+
_GAUGE_SHIM = _GaugeShim
|
|
657
|
+
_GAUGE_SHIM.__name__ = "Gauge"
|
|
658
|
+
_GAUGE_SHIM.__qualname__ = "Gauge"
|
|
659
|
+
|
|
660
|
+
|
|
661
|
+
class _HistogramShim(_Metric):
|
|
662
|
+
def labels(self, *labelvalues: str, **labelkwargs: str) -> "_MetricInstance":
|
|
663
|
+
return _MetricInstance() # pragma: no cover
|
|
664
|
+
|
|
665
|
+
|
|
666
|
+
_HISTOGRAM_SHIM = _HistogramShim
|
|
667
|
+
_HISTOGRAM_SHIM.__name__ = "Histogram"
|
|
668
|
+
_HISTOGRAM_SHIM.__qualname__ = "Histogram"
|
|
701
669
|
|
|
702
670
|
|
|
703
671
|
ATTRS_INSTALLED = dependency_flag("attrs")
|
|
@@ -719,3 +687,69 @@ PYDANTIC_INSTALLED = dependency_flag("pydantic")
|
|
|
719
687
|
ALLOYDB_CONNECTOR_INSTALLED = dependency_flag("google.cloud.alloydb.connector")
|
|
720
688
|
NANOID_INSTALLED = dependency_flag("fastnanoid")
|
|
721
689
|
UUID_UTILS_INSTALLED = dependency_flag("uuid_utils")
|
|
690
|
+
|
|
691
|
+
_BASE_MODEL_SHIM = BaseModelStub
|
|
692
|
+
_TYPE_ADAPTER_SHIM = TypeAdapterStub
|
|
693
|
+
_FAIL_FAST_SHIM = FailFastStub
|
|
694
|
+
_DTO_DATA_SHIM = DTODataStub
|
|
695
|
+
_ATTRS_INSTANCE_SHIM = AttrsInstanceStub
|
|
696
|
+
_ATTRS_ASDICT_SHIM = attrs_asdict_stub
|
|
697
|
+
_ATTRS_DEFINE_SHIM = attrs_define_stub
|
|
698
|
+
_ATTRS_FIELD_SHIM = attrs_field_stub
|
|
699
|
+
_ATTRS_FIELDS_SHIM = attrs_fields_stub
|
|
700
|
+
_ATTRS_HAS_SHIM = attrs_has_stub
|
|
701
|
+
_CATTRS_STRUCTURE_SHIM = cattrs_structure_stub
|
|
702
|
+
_CATTRS_STRUCTURE_SHIM.__name__ = "cattrs_structure"
|
|
703
|
+
_CATTRS_STRUCTURE_SHIM.__qualname__ = "cattrs_structure"
|
|
704
|
+
_CATTRS_UNSTRUCTURE_SHIM = cattrs_unstructure_stub
|
|
705
|
+
_CATTRS_UNSTRUCTURE_SHIM.__name__ = "cattrs_unstructure"
|
|
706
|
+
_CATTRS_UNSTRUCTURE_SHIM.__qualname__ = "cattrs_unstructure"
|
|
707
|
+
_LAZY_EXPORTS: "dict[str, tuple[str, str | None, Any]]" = {
|
|
708
|
+
"ArrowRecordBatch": ("pyarrow", "RecordBatch", _ARROW_RECORD_BATCH_SHIM),
|
|
709
|
+
"ArrowRecordBatchReader": ("pyarrow", "RecordBatchReader", _ARROW_RECORD_BATCH_READER_SHIM),
|
|
710
|
+
"ArrowSchema": ("pyarrow", "Schema", _ARROW_SCHEMA_SHIM),
|
|
711
|
+
"ArrowTable": ("pyarrow", "Table", _ARROW_TABLE_SHIM),
|
|
712
|
+
"AttrsInstance": ("attrs", "AttrsInstance", _ATTRS_INSTANCE_SHIM),
|
|
713
|
+
"BaseModel": ("pydantic", "BaseModel", _BASE_MODEL_SHIM),
|
|
714
|
+
"Counter": ("prometheus_client", "Counter", _COUNTER_SHIM),
|
|
715
|
+
"DTOData": ("litestar.dto.data_structures", "DTOData", _DTO_DATA_SHIM),
|
|
716
|
+
"FailFast": ("pydantic", "FailFast", _FAIL_FAST_SHIM),
|
|
717
|
+
"Gauge": ("prometheus_client", "Gauge", _GAUGE_SHIM),
|
|
718
|
+
"Histogram": ("prometheus_client", "Histogram", _HISTOGRAM_SHIM),
|
|
719
|
+
"NumpyArray": ("numpy", "ndarray", _NUMPY_ARRAY_SHIM),
|
|
720
|
+
"PandasDataFrame": ("pandas", "DataFrame", _PANDAS_DATAFRAME_SHIM),
|
|
721
|
+
"PolarsDataFrame": ("polars", "DataFrame", _POLARS_DATAFRAME_SHIM),
|
|
722
|
+
"Span": ("opentelemetry.trace", "Span", _SPAN_SHIM),
|
|
723
|
+
"Status": ("opentelemetry.trace", "Status", _STATUS_SHIM),
|
|
724
|
+
"StatusCode": ("opentelemetry.trace", "StatusCode", _STATUS_CODE_SHIM),
|
|
725
|
+
"Tracer": ("opentelemetry.trace", "Tracer", _TRACER_SHIM),
|
|
726
|
+
"TypeAdapter": ("pydantic", "TypeAdapter", _TYPE_ADAPTER_SHIM),
|
|
727
|
+
"attrs_asdict": ("attrs", "asdict", _ATTRS_ASDICT_SHIM),
|
|
728
|
+
"attrs_define": ("attrs", "define", _ATTRS_DEFINE_SHIM),
|
|
729
|
+
"attrs_field": ("attrs", "field", _ATTRS_FIELD_SHIM),
|
|
730
|
+
"attrs_fields": ("attrs", "fields", _ATTRS_FIELDS_SHIM),
|
|
731
|
+
"attrs_has": ("attrs", "has", _ATTRS_HAS_SHIM),
|
|
732
|
+
"cattrs_structure": ("cattrs", "structure", _CATTRS_STRUCTURE_SHIM),
|
|
733
|
+
"cattrs_unstructure": ("cattrs", "unstructure", _CATTRS_UNSTRUCTURE_SHIM),
|
|
734
|
+
"trace": ("opentelemetry.trace", None, _TRACE_SHIM),
|
|
735
|
+
}
|
|
736
|
+
|
|
737
|
+
|
|
738
|
+
def __getattr__(name: str) -> Any:
|
|
739
|
+
"""Resolve optional dependency symbols lazily on first access."""
|
|
740
|
+
|
|
741
|
+
try:
|
|
742
|
+
module_name, attr_name, fallback = _LAZY_EXPORTS[name]
|
|
743
|
+
except KeyError:
|
|
744
|
+
msg = f"module {__name__!r} has no attribute {name!r}"
|
|
745
|
+
raise AttributeError(msg) from None
|
|
746
|
+
|
|
747
|
+
resolved = resolve_optional_attr(module_name, attr_name, fallback)
|
|
748
|
+
globals()[name] = resolved
|
|
749
|
+
return resolved
|
|
750
|
+
|
|
751
|
+
|
|
752
|
+
def __dir__() -> "list[str]":
|
|
753
|
+
"""Expose the public surface for autocomplete and ``dir()``."""
|
|
754
|
+
|
|
755
|
+
return sorted(set(globals()) | set(__all__))
|
sqlspec/adapters/adbc/_typing.py
CHANGED
|
@@ -8,6 +8,7 @@ compilation to avoid ABI boundary issues.
|
|
|
8
8
|
import contextlib
|
|
9
9
|
from typing import TYPE_CHECKING, Any
|
|
10
10
|
|
|
11
|
+
from adbc_driver_manager import Error as _AdbcNativeError
|
|
11
12
|
from adbc_driver_manager.dbapi import Connection
|
|
12
13
|
from adbc_driver_manager.dbapi import Cursor as _AdbcRawCursor
|
|
13
14
|
|
|
@@ -23,12 +24,14 @@ if TYPE_CHECKING:
|
|
|
23
24
|
|
|
24
25
|
AdbcConnection: TypeAlias = _AdbcConnection
|
|
25
26
|
AdbcRawCursor: TypeAlias = _AdbcRawCursor
|
|
27
|
+
AdbcNativeError: TypeAlias = _AdbcNativeError
|
|
26
28
|
|
|
27
29
|
if not TYPE_CHECKING:
|
|
28
30
|
AdbcConnection = _AdbcConnection
|
|
29
31
|
AdbcRawCursor = _AdbcRawCursor
|
|
32
|
+
AdbcNativeError = _AdbcNativeError
|
|
30
33
|
|
|
31
|
-
__all__ = ("AdbcConnection", "AdbcCursor", "AdbcRawCursor", "AdbcSessionContext")
|
|
34
|
+
__all__ = ("AdbcConnection", "AdbcCursor", "AdbcNativeError", "AdbcRawCursor", "AdbcSessionContext")
|
|
32
35
|
|
|
33
36
|
|
|
34
37
|
class AdbcCursor:
|
sqlspec/adapters/adbc/config.py
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""ADBC database configuration."""
|
|
2
2
|
|
|
3
|
-
from typing import TYPE_CHECKING, Any, ClassVar, TypedDict, cast
|
|
3
|
+
from typing import TYPE_CHECKING, Any, ClassVar, Literal, TypedDict, cast
|
|
4
4
|
|
|
5
5
|
from typing_extensions import NotRequired
|
|
6
6
|
|
|
@@ -111,9 +111,9 @@ class AdbcDriverFeatures(TypedDict):
|
|
|
111
111
|
on_connection_create: Callback executed when a connection is created.
|
|
112
112
|
Receives the raw ADBC connection for low-level driver configuration.
|
|
113
113
|
events_backend: Event channel backend selection.
|
|
114
|
-
Only option: "
|
|
115
|
-
ADBC does not have native pub/sub, so
|
|
116
|
-
Defaults to "
|
|
114
|
+
Only option: "poll_queue" (durable table-backed queue with lease-based retries and acknowledgements).
|
|
115
|
+
ADBC does not have native pub/sub, so poll_queue is the only backend.
|
|
116
|
+
Defaults to "poll_queue".
|
|
117
117
|
"""
|
|
118
118
|
|
|
119
119
|
json_serializer: "NotRequired[Callable[[Any], str]]"
|
|
@@ -126,7 +126,7 @@ class AdbcDriverFeatures(TypedDict):
|
|
|
126
126
|
enable_paradedb: NotRequired[bool]
|
|
127
127
|
enable_events: NotRequired[bool]
|
|
128
128
|
on_connection_create: "NotRequired[Callable[[AdbcConnection], None]]"
|
|
129
|
-
events_backend: NotRequired[
|
|
129
|
+
events_backend: NotRequired[Literal["poll_queue"]]
|
|
130
130
|
|
|
131
131
|
|
|
132
132
|
class AdbcConnectionContext(SyncPoolConnectionContext):
|
sqlspec/adapters/adbc/core.py
CHANGED
|
@@ -28,6 +28,7 @@ from sqlspec.exceptions import (
|
|
|
28
28
|
NotNullViolationError,
|
|
29
29
|
PermissionDeniedError,
|
|
30
30
|
QueryTimeoutError,
|
|
31
|
+
SerializationConflictError,
|
|
31
32
|
SQLParsingError,
|
|
32
33
|
SQLSpecError,
|
|
33
34
|
UniqueViolationError,
|
|
@@ -541,7 +542,7 @@ def create_mapped_exception(error: Any, *, logger: Any | None = None) -> SQLSpec
|
|
|
541
542
|
if sqlstate == "40P01":
|
|
542
543
|
return _create_adbc_error(error, DeadlockError, "deadlock detected")
|
|
543
544
|
if sqlstate == "40001":
|
|
544
|
-
return _create_adbc_error(error,
|
|
545
|
+
return _create_adbc_error(error, SerializationConflictError, "serialization failure")
|
|
545
546
|
|
|
546
547
|
# Query timeout/cancellation
|
|
547
548
|
if sqlstate == "57014":
|