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
|
Binary file
|
sqlspec/utils/uuids.py
ADDED
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"""UUID and ID generation utilities with optional acceleration.
|
|
2
|
+
|
|
3
|
+
Provides wrapper functions for uuid3, uuid4, uuid5, uuid6, uuid7, and nanoid generation.
|
|
4
|
+
Uses uuid-utils and fastnanoid packages for performance when available,
|
|
5
|
+
falling back to standard library.
|
|
6
|
+
|
|
7
|
+
When uuid-utils is installed:
|
|
8
|
+
- uuid3, uuid4, uuid5, uuid6, uuid7 use the faster Rust implementation
|
|
9
|
+
- uuid6 and uuid7 provide proper time-ordered UUIDs per RFC 9562
|
|
10
|
+
|
|
11
|
+
When uuid-utils is NOT installed:
|
|
12
|
+
- uuid3, uuid4, uuid5 fall back silently to stdlib (equivalent output)
|
|
13
|
+
- uuid6, uuid7 fall back to uuid4 with a warning (different UUID version)
|
|
14
|
+
|
|
15
|
+
When fastnanoid is installed:
|
|
16
|
+
- nanoid() uses the Rust implementation for 21-char URL-safe IDs
|
|
17
|
+
|
|
18
|
+
When fastnanoid is NOT installed:
|
|
19
|
+
- nanoid() falls back to uuid4().hex with a warning (different format)
|
|
20
|
+
"""
|
|
21
|
+
|
|
22
|
+
import warnings
|
|
23
|
+
from collections.abc import Callable
|
|
24
|
+
from importlib import import_module
|
|
25
|
+
from typing import Any, cast
|
|
26
|
+
from uuid import NAMESPACE_DNS, NAMESPACE_OID, NAMESPACE_URL, NAMESPACE_X500, UUID
|
|
27
|
+
from uuid import uuid3 as _stdlib_uuid3
|
|
28
|
+
from uuid import uuid4 as _stdlib_uuid4
|
|
29
|
+
from uuid import uuid5 as _stdlib_uuid5
|
|
30
|
+
|
|
31
|
+
__all__ = (
|
|
32
|
+
"NAMESPACE_DNS",
|
|
33
|
+
"NAMESPACE_OID",
|
|
34
|
+
"NAMESPACE_URL",
|
|
35
|
+
"NAMESPACE_X500",
|
|
36
|
+
"NANOID_INSTALLED",
|
|
37
|
+
"UUID_UTILS_INSTALLED",
|
|
38
|
+
"nanoid",
|
|
39
|
+
"uuid3",
|
|
40
|
+
"uuid4",
|
|
41
|
+
"uuid5",
|
|
42
|
+
"uuid6",
|
|
43
|
+
"uuid7",
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
class _Availability:
|
|
48
|
+
"""Lazy availability flag for optional dependencies."""
|
|
49
|
+
|
|
50
|
+
__slots__ = ("_loader",)
|
|
51
|
+
|
|
52
|
+
def __init__(self, loader: Callable[[], "Any | None"]) -> None:
|
|
53
|
+
self._loader = loader
|
|
54
|
+
|
|
55
|
+
def __bool__(self) -> bool:
|
|
56
|
+
return self._loader() is not None
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _load_uuid_utils() -> "Any | None":
|
|
60
|
+
"""Load uuid-utils when available."""
|
|
61
|
+
try:
|
|
62
|
+
module = import_module("uuid_utils")
|
|
63
|
+
except Exception:
|
|
64
|
+
return None
|
|
65
|
+
return module
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
def _load_nanoid() -> "Any | None":
|
|
69
|
+
"""Load fastnanoid when available."""
|
|
70
|
+
try:
|
|
71
|
+
module = import_module("fastnanoid")
|
|
72
|
+
except Exception:
|
|
73
|
+
return None
|
|
74
|
+
return module
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _convert_namespace(namespace: "Any", module: "Any | None") -> "Any":
|
|
78
|
+
"""Convert namespace to uuid-utils UUID when available."""
|
|
79
|
+
if module is None:
|
|
80
|
+
return namespace
|
|
81
|
+
uuid_cls = module.UUID
|
|
82
|
+
if isinstance(namespace, uuid_cls):
|
|
83
|
+
return namespace
|
|
84
|
+
return uuid_cls(str(namespace))
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _nanoid_impl() -> str:
|
|
88
|
+
return _stdlib_uuid4().hex
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
UUID_UTILS_INSTALLED = _Availability(_load_uuid_utils)
|
|
92
|
+
NANOID_INSTALLED = _Availability(_load_nanoid)
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
def uuid3(name: str, namespace: "UUID | None" = None) -> "UUID":
|
|
96
|
+
"""Generate a deterministic UUID (version 3) using MD5 hash.
|
|
97
|
+
|
|
98
|
+
Uses uuid-utils for performance when available, falls back to
|
|
99
|
+
standard library uuid.uuid3() silently (equivalent output).
|
|
100
|
+
|
|
101
|
+
Args:
|
|
102
|
+
name: The name to hash within the namespace.
|
|
103
|
+
namespace: The namespace UUID. Defaults to NAMESPACE_DNS if not provided.
|
|
104
|
+
|
|
105
|
+
Returns:
|
|
106
|
+
A deterministic UUID based on namespace and name.
|
|
107
|
+
"""
|
|
108
|
+
module = _load_uuid_utils()
|
|
109
|
+
namespace_value = NAMESPACE_DNS if namespace is None else namespace
|
|
110
|
+
if module is None:
|
|
111
|
+
return _stdlib_uuid3(namespace_value, name)
|
|
112
|
+
# The uuid-utils module is loaded dynamically, so Mypy treats it as Any.
|
|
113
|
+
# We cast the return value to UUID to satisfy the return type annotation.
|
|
114
|
+
return cast("UUID", module.uuid3(_convert_namespace(namespace_value, module), name))
|
|
115
|
+
|
|
116
|
+
|
|
117
|
+
def uuid4() -> "UUID":
|
|
118
|
+
"""Generate a random UUID (version 4).
|
|
119
|
+
|
|
120
|
+
Uses uuid-utils for performance when available, falls back to
|
|
121
|
+
standard library uuid.uuid4() silently (equivalent output).
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
A randomly generated UUID.
|
|
125
|
+
"""
|
|
126
|
+
module = _load_uuid_utils()
|
|
127
|
+
if module is None:
|
|
128
|
+
return _stdlib_uuid4()
|
|
129
|
+
return cast("UUID", module.uuid4())
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def uuid5(name: str, namespace: "UUID | None" = None) -> "UUID":
|
|
133
|
+
"""Generate a deterministic UUID (version 5) using SHA-1 hash.
|
|
134
|
+
|
|
135
|
+
Uses uuid-utils for performance when available, falls back to
|
|
136
|
+
standard library uuid.uuid5() silently (equivalent output).
|
|
137
|
+
|
|
138
|
+
Args:
|
|
139
|
+
name: The name to hash within the namespace.
|
|
140
|
+
namespace: The namespace UUID. Defaults to NAMESPACE_DNS if not provided.
|
|
141
|
+
|
|
142
|
+
Returns:
|
|
143
|
+
A deterministic UUID based on namespace and name.
|
|
144
|
+
"""
|
|
145
|
+
module = _load_uuid_utils()
|
|
146
|
+
namespace_value = NAMESPACE_DNS if namespace is None else namespace
|
|
147
|
+
if module is None:
|
|
148
|
+
return _stdlib_uuid5(namespace_value, name)
|
|
149
|
+
return cast("UUID", module.uuid5(_convert_namespace(namespace_value, module), name))
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def uuid6() -> "UUID":
|
|
153
|
+
"""Generate a time-ordered UUID (version 6).
|
|
154
|
+
|
|
155
|
+
Uses uuid-utils when available. When uuid-utils is not installed,
|
|
156
|
+
falls back to uuid4() with a warning.
|
|
157
|
+
|
|
158
|
+
UUIDv6 is lexicographically sortable by timestamp, making it
|
|
159
|
+
suitable for database primary keys. It is a reordering of UUIDv1
|
|
160
|
+
fields to improve database performance.
|
|
161
|
+
|
|
162
|
+
Returns:
|
|
163
|
+
A time-ordered UUID, or a random UUID if uuid-utils unavailable.
|
|
164
|
+
"""
|
|
165
|
+
module = _load_uuid_utils()
|
|
166
|
+
if module is None:
|
|
167
|
+
warnings.warn(
|
|
168
|
+
"uuid-utils not installed, falling back to uuid4 for UUID v6 generation. "
|
|
169
|
+
"Install with: pip install sqlspec[uuid]",
|
|
170
|
+
UserWarning,
|
|
171
|
+
stacklevel=2,
|
|
172
|
+
)
|
|
173
|
+
return _stdlib_uuid4()
|
|
174
|
+
return cast("UUID", module.uuid6())
|
|
175
|
+
|
|
176
|
+
|
|
177
|
+
def uuid7() -> "UUID":
|
|
178
|
+
"""Generate a time-ordered UUID (version 7).
|
|
179
|
+
|
|
180
|
+
Uses uuid-utils when available. When uuid-utils is not installed,
|
|
181
|
+
falls back to uuid4() with a warning.
|
|
182
|
+
|
|
183
|
+
UUIDv7 is the recommended time-ordered UUID format per RFC 9562,
|
|
184
|
+
providing millisecond precision timestamps. It is designed for
|
|
185
|
+
modern distributed systems and database primary keys.
|
|
186
|
+
|
|
187
|
+
Returns:
|
|
188
|
+
A time-ordered UUID, or a random UUID if uuid-utils unavailable.
|
|
189
|
+
"""
|
|
190
|
+
module = _load_uuid_utils()
|
|
191
|
+
if module is None:
|
|
192
|
+
warnings.warn(
|
|
193
|
+
"uuid-utils not installed, falling back to uuid4 for UUID v7 generation. "
|
|
194
|
+
"Install with: pip install sqlspec[uuid]",
|
|
195
|
+
UserWarning,
|
|
196
|
+
stacklevel=2,
|
|
197
|
+
)
|
|
198
|
+
return _stdlib_uuid4()
|
|
199
|
+
return cast("UUID", module.uuid7())
|
|
200
|
+
|
|
201
|
+
|
|
202
|
+
def nanoid() -> str:
|
|
203
|
+
"""Generate a Nano ID.
|
|
204
|
+
|
|
205
|
+
Uses fastnanoid for performance when available. When fastnanoid is
|
|
206
|
+
not installed, falls back to uuid4().hex with a warning.
|
|
207
|
+
|
|
208
|
+
Nano IDs are URL-safe, compact 21-character identifiers suitable
|
|
209
|
+
for use as primary keys or short identifiers. The default alphabet
|
|
210
|
+
uses A-Za-z0-9_- characters.
|
|
211
|
+
|
|
212
|
+
Returns:
|
|
213
|
+
A 21-character Nano ID string, or 32-character UUID hex if
|
|
214
|
+
fastnanoid unavailable.
|
|
215
|
+
"""
|
|
216
|
+
module = _load_nanoid()
|
|
217
|
+
if module is None:
|
|
218
|
+
warnings.warn(
|
|
219
|
+
"fastnanoid not installed, falling back to uuid4.hex for Nano ID generation. "
|
|
220
|
+
"Install with: pip install sqlspec[nanoid]",
|
|
221
|
+
UserWarning,
|
|
222
|
+
stacklevel=2,
|
|
223
|
+
)
|
|
224
|
+
return _nanoid_impl()
|
|
225
|
+
return cast("str", module.generate())
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sqlspec
|
|
3
|
+
Version: 0.36.0
|
|
4
|
+
Summary: SQL Experiments in Python
|
|
5
|
+
Project-URL: Discord, https://discord.gg/litestar
|
|
6
|
+
Project-URL: Issue, https://github.com/litestar-org/sqlspec/issues/
|
|
7
|
+
Project-URL: Source, https://github.com/litestar-org/sqlspec
|
|
8
|
+
Author-email: Cody Fincher <cody@litestar.dev>
|
|
9
|
+
Maintainer-email: Litestar Developers <hello@litestar.dev>
|
|
10
|
+
License-Expression: MIT
|
|
11
|
+
License-File: LICENSE
|
|
12
|
+
Requires-Python: <4.0,>=3.10
|
|
13
|
+
Requires-Dist: mypy-extensions
|
|
14
|
+
Requires-Dist: rich-click>=1.9.0
|
|
15
|
+
Requires-Dist: sqlglot>=19.9.0
|
|
16
|
+
Requires-Dist: tomli>=2.0.0; python_version < '3.11'
|
|
17
|
+
Requires-Dist: typing-extensions
|
|
18
|
+
Provides-Extra: adbc
|
|
19
|
+
Requires-Dist: adbc-driver-manager; extra == 'adbc'
|
|
20
|
+
Requires-Dist: pyarrow; extra == 'adbc'
|
|
21
|
+
Provides-Extra: adk
|
|
22
|
+
Requires-Dist: google-adk; extra == 'adk'
|
|
23
|
+
Provides-Extra: aioodbc
|
|
24
|
+
Requires-Dist: aioodbc; extra == 'aioodbc'
|
|
25
|
+
Provides-Extra: aiosqlite
|
|
26
|
+
Requires-Dist: aiosqlite; extra == 'aiosqlite'
|
|
27
|
+
Provides-Extra: alloydb
|
|
28
|
+
Requires-Dist: google-cloud-alloydb-connector; extra == 'alloydb'
|
|
29
|
+
Provides-Extra: asyncmy
|
|
30
|
+
Requires-Dist: asyncmy; extra == 'asyncmy'
|
|
31
|
+
Provides-Extra: asyncpg
|
|
32
|
+
Requires-Dist: asyncpg; extra == 'asyncpg'
|
|
33
|
+
Provides-Extra: attrs
|
|
34
|
+
Requires-Dist: attrs; extra == 'attrs'
|
|
35
|
+
Requires-Dist: cattrs; extra == 'attrs'
|
|
36
|
+
Provides-Extra: bigquery
|
|
37
|
+
Requires-Dist: google-cloud-bigquery; extra == 'bigquery'
|
|
38
|
+
Requires-Dist: google-cloud-storage; extra == 'bigquery'
|
|
39
|
+
Provides-Extra: cloud-sql
|
|
40
|
+
Requires-Dist: cloud-sql-python-connector; extra == 'cloud-sql'
|
|
41
|
+
Provides-Extra: cockroachdb
|
|
42
|
+
Requires-Dist: asyncpg; extra == 'cockroachdb'
|
|
43
|
+
Requires-Dist: psycopg[binary,pool]; extra == 'cockroachdb'
|
|
44
|
+
Provides-Extra: duckdb
|
|
45
|
+
Requires-Dist: duckdb; extra == 'duckdb'
|
|
46
|
+
Provides-Extra: fastapi
|
|
47
|
+
Requires-Dist: fastapi; extra == 'fastapi'
|
|
48
|
+
Provides-Extra: flask
|
|
49
|
+
Requires-Dist: flask; extra == 'flask'
|
|
50
|
+
Provides-Extra: fsspec
|
|
51
|
+
Requires-Dist: fsspec; extra == 'fsspec'
|
|
52
|
+
Provides-Extra: litestar
|
|
53
|
+
Requires-Dist: litestar; extra == 'litestar'
|
|
54
|
+
Provides-Extra: msgspec
|
|
55
|
+
Requires-Dist: msgspec; extra == 'msgspec'
|
|
56
|
+
Provides-Extra: mypyc
|
|
57
|
+
Provides-Extra: mysql-connector
|
|
58
|
+
Requires-Dist: mysql-connector-python; extra == 'mysql-connector'
|
|
59
|
+
Provides-Extra: nanoid
|
|
60
|
+
Requires-Dist: fastnanoid>=0.4.1; extra == 'nanoid'
|
|
61
|
+
Provides-Extra: obstore
|
|
62
|
+
Requires-Dist: obstore; extra == 'obstore'
|
|
63
|
+
Provides-Extra: opentelemetry
|
|
64
|
+
Requires-Dist: opentelemetry-instrumentation; extra == 'opentelemetry'
|
|
65
|
+
Provides-Extra: oracledb
|
|
66
|
+
Requires-Dist: oracledb; extra == 'oracledb'
|
|
67
|
+
Provides-Extra: orjson
|
|
68
|
+
Requires-Dist: orjson; extra == 'orjson'
|
|
69
|
+
Provides-Extra: pandas
|
|
70
|
+
Requires-Dist: pandas; extra == 'pandas'
|
|
71
|
+
Requires-Dist: pyarrow; extra == 'pandas'
|
|
72
|
+
Provides-Extra: performance
|
|
73
|
+
Requires-Dist: msgspec; extra == 'performance'
|
|
74
|
+
Requires-Dist: sqlglot[rs]; extra == 'performance'
|
|
75
|
+
Provides-Extra: polars
|
|
76
|
+
Requires-Dist: polars; extra == 'polars'
|
|
77
|
+
Requires-Dist: pyarrow; extra == 'polars'
|
|
78
|
+
Provides-Extra: prometheus
|
|
79
|
+
Requires-Dist: prometheus-client; extra == 'prometheus'
|
|
80
|
+
Provides-Extra: psqlpy
|
|
81
|
+
Requires-Dist: psqlpy; extra == 'psqlpy'
|
|
82
|
+
Provides-Extra: psycopg
|
|
83
|
+
Requires-Dist: psycopg[binary,pool]; extra == 'psycopg'
|
|
84
|
+
Provides-Extra: pydantic
|
|
85
|
+
Requires-Dist: pydantic; extra == 'pydantic'
|
|
86
|
+
Requires-Dist: pydantic-extra-types; extra == 'pydantic'
|
|
87
|
+
Provides-Extra: pymssql
|
|
88
|
+
Requires-Dist: pymssql; extra == 'pymssql'
|
|
89
|
+
Provides-Extra: pymysql
|
|
90
|
+
Requires-Dist: pymysql; extra == 'pymysql'
|
|
91
|
+
Provides-Extra: spanner
|
|
92
|
+
Requires-Dist: google-cloud-spanner; extra == 'spanner'
|
|
93
|
+
Provides-Extra: uuid
|
|
94
|
+
Requires-Dist: uuid-utils; extra == 'uuid'
|
|
95
|
+
Description-Content-Type: text/markdown
|
|
96
|
+
|
|
97
|
+
# SQLSpec
|
|
98
|
+
|
|
99
|
+
**Type-safe SQL execution layer for Python.**
|
|
100
|
+
|
|
101
|
+
SQLSpec handles database connectivity and result mapping so you can focus on SQL. Write raw queries when you need precision, use the builder API when you need composability, or load SQL from files when you need organization. Every statement passes through a [sqlglot](https://github.com/tobymao/sqlglot)-powered AST pipeline for validation, dialect conversion, and optimization before execution. Export results as Python objects, Arrow tables, Polars or pandas DataFrames.
|
|
102
|
+
|
|
103
|
+
It's not an ORM. It's the connectivity and processing layer between your application and your database that provides the right abstraction for each situation without dictating how you write SQL.
|
|
104
|
+
|
|
105
|
+
## Status
|
|
106
|
+
|
|
107
|
+
SQLSpec is currently in active development. The public API may change. Follow the [docs](https://sqlspec.dev/) and changelog for updates.
|
|
108
|
+
|
|
109
|
+
## What You Get
|
|
110
|
+
|
|
111
|
+
**Connection Management**
|
|
112
|
+
|
|
113
|
+
- Connection pooling with configurable size, timeout, and lifecycle hooks
|
|
114
|
+
- Sync and async support with a unified API surface
|
|
115
|
+
- Adapters for PostgreSQL (psycopg, asyncpg, psqlpy), SQLite (sqlite3, aiosqlite), DuckDB, MySQL (asyncmy, mysql-connector, pymysql), Oracle, BigQuery, and ADBC-compatible databases
|
|
116
|
+
|
|
117
|
+
**Query Execution**
|
|
118
|
+
|
|
119
|
+
- Raw SQL strings with automatic parameter binding and dialect translation
|
|
120
|
+
- SQL AST parsing via sqlglot for validation, optimization, and dialect conversion
|
|
121
|
+
- Builder API for programmatic query construction without string concatenation
|
|
122
|
+
- SQL file loading to keep queries organized alongside your code (named SQL queries)
|
|
123
|
+
- Statement stacks for batching multiple operations with transaction control
|
|
124
|
+
|
|
125
|
+
**Result Handling**
|
|
126
|
+
|
|
127
|
+
- Type-safe result mapping to Pydantic, msgspec, attrs, or dataclasses
|
|
128
|
+
- Apache Arrow export for zero-copy integration with pandas, Polars, and analytical tools
|
|
129
|
+
- Result iteration, single-row fetch, or bulk retrieval based on your use case
|
|
130
|
+
|
|
131
|
+
**Framework Integration**
|
|
132
|
+
|
|
133
|
+
- Litestar plugin with dependency injection for connections, sessions, and pools
|
|
134
|
+
- Starlette/FastAPI middleware for automatic transaction management
|
|
135
|
+
- Flask extension with sync/async portal support
|
|
136
|
+
|
|
137
|
+
**Production Features**
|
|
138
|
+
|
|
139
|
+
- SQL validation and caching via sqlglot AST parsing
|
|
140
|
+
- OpenTelemetry and Prometheus instrumentation hooks
|
|
141
|
+
- Database event channels with native LISTEN/NOTIFY, Oracle AQ, and a portable queue fallback
|
|
142
|
+
- Structured logging with correlation ID support
|
|
143
|
+
- Migration CLI for schema versioning
|
|
144
|
+
|
|
145
|
+
## Quick Start
|
|
146
|
+
|
|
147
|
+
### Install
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
pip install "sqlspec"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### Run your first query
|
|
154
|
+
|
|
155
|
+
```python
|
|
156
|
+
from pydantic import BaseModel
|
|
157
|
+
from sqlspec import SQLSpec
|
|
158
|
+
from sqlspec.adapters.sqlite import SqliteConfig
|
|
159
|
+
|
|
160
|
+
class Greeting(BaseModel):
|
|
161
|
+
message: str
|
|
162
|
+
|
|
163
|
+
spec = SQLSpec()
|
|
164
|
+
db = spec.add_config(SqliteConfig(connection_config={"database": ":memory:"}))
|
|
165
|
+
|
|
166
|
+
with spec.provide_session(db) as session:
|
|
167
|
+
greeting = session.select_one(
|
|
168
|
+
"SELECT 'Hello, SQLSpec!' AS message",
|
|
169
|
+
schema_type=Greeting,
|
|
170
|
+
)
|
|
171
|
+
print(greeting.message) # Output: Hello, SQLSpec!
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
That's it. Write SQL, define a schema, get typed objects back. Connection pooling, parameter binding, and result mapping are handled automatically.
|
|
175
|
+
|
|
176
|
+
See the [Getting Started guide](https://sqlspec.dev/getting_started/) for installation variants, adapter selection, and advanced result mapping options.
|
|
177
|
+
|
|
178
|
+
## Documentation
|
|
179
|
+
|
|
180
|
+
- [Getting Started](https://sqlspec.dev/getting_started/)
|
|
181
|
+
- [Usage Guides](https://sqlspec.dev/usage/)
|
|
182
|
+
- [Examples Gallery](https://sqlspec.dev/examples/)
|
|
183
|
+
- [API Reference](https://sqlspec.dev/reference/)
|
|
184
|
+
- [CLI Reference](https://sqlspec.dev/usage/cli.html)
|
|
185
|
+
|
|
186
|
+
## Reference Applications
|
|
187
|
+
|
|
188
|
+
- **[PostgreSQL + Vertex AI Demo](https://github.com/cofin/postgres-vertexai-demo)** - Vector search with pgvector and real-time chat using Litestar and Google ADK. Shows connection pooling, migrations, type-safe result mapping, vector embeddings, and response caching.
|
|
189
|
+
- **[Oracle + Vertex AI Demo](https://github.com/cofin/oracledb-vertexai-demo)** - Oracle 23ai vector search with semantic similarity using HNSW indexes. Demonstrates NumPy array conversion, large object (CLOB) handling, and real-time performance metrics.
|
|
190
|
+
|
|
191
|
+
See the [usage docs](https://sqlspec.dev/usage/) for detailed guides on adapters, configuration patterns, and features like the [SQL file loader](https://sqlspec.dev/usage/loader.html).
|
|
192
|
+
|
|
193
|
+
## Built With
|
|
194
|
+
|
|
195
|
+
- **[sqlglot](https://github.com/tobymao/sqlglot)** - SQL parser, transpiler, and optimizer powering SQLSpec's AST pipeline
|
|
196
|
+
|
|
197
|
+
## Contributing
|
|
198
|
+
|
|
199
|
+
Contributions, issue reports, and adapter ideas are welcome. Review the
|
|
200
|
+
[contributor guide](https://sqlspec.dev/contributing/) and follow the project
|
|
201
|
+
coding standards before opening a pull request.
|
|
202
|
+
|
|
203
|
+
## License
|
|
204
|
+
|
|
205
|
+
SQLSpec is distributed under the MIT License.
|