sqlspec 0.47.0__cp314-cp314-win_amd64.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.
- f68e0789eb443ecb1c2c__mypyc.cp314-win_amd64.pyd +0 -0
- sqlspec/__init__.py +167 -0
- sqlspec/__main__.py +12 -0
- sqlspec/__metadata__.py +14 -0
- sqlspec/_typing.py +714 -0
- sqlspec/adapters/__init__.py +0 -0
- sqlspec/adapters/adbc/__init__.py +13 -0
- sqlspec/adapters/adbc/_typing.py +106 -0
- sqlspec/adapters/adbc/adk/__init__.py +5 -0
- sqlspec/adapters/adbc/adk/store.py +1280 -0
- sqlspec/adapters/adbc/config.py +378 -0
- sqlspec/adapters/adbc/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/adbc/core.py +922 -0
- sqlspec/adapters/adbc/data_dictionary.py +339 -0
- sqlspec/adapters/adbc/driver.py +534 -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 +534 -0
- sqlspec/adapters/adbc/type_converter.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/adbc/type_converter.py +142 -0
- sqlspec/adapters/aiomysql/__init__.py +21 -0
- sqlspec/adapters/aiomysql/_typing.py +137 -0
- sqlspec/adapters/aiomysql/adk/__init__.py +5 -0
- sqlspec/adapters/aiomysql/adk/store.py +678 -0
- sqlspec/adapters/aiomysql/config.py +305 -0
- sqlspec/adapters/aiomysql/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/aiomysql/core.py +536 -0
- sqlspec/adapters/aiomysql/data_dictionary.py +121 -0
- sqlspec/adapters/aiomysql/driver.py +386 -0
- sqlspec/adapters/aiomysql/events/__init__.py +5 -0
- sqlspec/adapters/aiomysql/events/store.py +104 -0
- sqlspec/adapters/aiomysql/litestar/__init__.py +5 -0
- sqlspec/adapters/aiomysql/litestar/store.py +314 -0
- sqlspec/adapters/aiosqlite/__init__.py +26 -0
- sqlspec/adapters/aiosqlite/_typing.py +109 -0
- sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/adk/store.py +829 -0
- sqlspec/adapters/aiosqlite/config.py +315 -0
- sqlspec/adapters/aiosqlite/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/aiosqlite/core.py +315 -0
- sqlspec/adapters/aiosqlite/data_dictionary.py +202 -0
- sqlspec/adapters/aiosqlite/driver.py +311 -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.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/aiosqlite/pool.py +734 -0
- sqlspec/adapters/asyncmy/__init__.py +21 -0
- sqlspec/adapters/asyncmy/_typing.py +113 -0
- sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
- sqlspec/adapters/asyncmy/adk/store.py +644 -0
- sqlspec/adapters/asyncmy/config.py +307 -0
- sqlspec/adapters/asyncmy/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/asyncmy/core.py +538 -0
- sqlspec/adapters/asyncmy/data_dictionary.py +122 -0
- sqlspec/adapters/asyncmy/driver.py +391 -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 +26 -0
- sqlspec/adapters/asyncpg/_typing.py +103 -0
- sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
- sqlspec/adapters/asyncpg/adk/store.py +483 -0
- sqlspec/adapters/asyncpg/config.py +575 -0
- sqlspec/adapters/asyncpg/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/asyncpg/core.py +480 -0
- sqlspec/adapters/asyncpg/data_dictionary.py +157 -0
- sqlspec/adapters/asyncpg/driver.py +487 -0
- sqlspec/adapters/asyncpg/events/__init__.py +6 -0
- sqlspec/adapters/asyncpg/events/_hub.py +181 -0
- sqlspec/adapters/asyncpg/events/backend.py +210 -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 +15 -0
- sqlspec/adapters/bigquery/_typing.py +108 -0
- sqlspec/adapters/bigquery/config.py +362 -0
- sqlspec/adapters/bigquery/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/bigquery/core.py +768 -0
- sqlspec/adapters/bigquery/data_dictionary.py +120 -0
- sqlspec/adapters/bigquery/driver.py +542 -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.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/bigquery/type_converter.py +107 -0
- sqlspec/adapters/cockroach_asyncpg/__init__.py +26 -0
- sqlspec/adapters/cockroach_asyncpg/_typing.py +73 -0
- sqlspec/adapters/cockroach_asyncpg/adk/__init__.py +3 -0
- sqlspec/adapters/cockroach_asyncpg/adk/store.py +465 -0
- sqlspec/adapters/cockroach_asyncpg/config.py +248 -0
- sqlspec/adapters/cockroach_asyncpg/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/cockroach_asyncpg/core.py +55 -0
- sqlspec/adapters/cockroach_asyncpg/data_dictionary.py +110 -0
- sqlspec/adapters/cockroach_asyncpg/driver.py +142 -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 +39 -0
- sqlspec/adapters/cockroach_psycopg/_typing.py +137 -0
- sqlspec/adapters/cockroach_psycopg/adk/__init__.py +13 -0
- sqlspec/adapters/cockroach_psycopg/adk/store.py +1039 -0
- sqlspec/adapters/cockroach_psycopg/config.py +511 -0
- sqlspec/adapters/cockroach_psycopg/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/cockroach_psycopg/core.py +63 -0
- sqlspec/adapters/cockroach_psycopg/data_dictionary.py +220 -0
- sqlspec/adapters/cockroach_psycopg/driver.py +273 -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 +327 -0
- sqlspec/adapters/duckdb/__init__.py +29 -0
- sqlspec/adapters/duckdb/_typing.py +104 -0
- sqlspec/adapters/duckdb/adk/__init__.py +14 -0
- sqlspec/adapters/duckdb/adk/store.py +935 -0
- sqlspec/adapters/duckdb/config.py +386 -0
- sqlspec/adapters/duckdb/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/duckdb/core.py +332 -0
- sqlspec/adapters/duckdb/data_dictionary.py +140 -0
- sqlspec/adapters/duckdb/driver.py +426 -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.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/duckdb/pool.py +350 -0
- sqlspec/adapters/duckdb/type_converter.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/duckdb/type_converter.py +118 -0
- sqlspec/adapters/mysqlconnector/__init__.py +39 -0
- sqlspec/adapters/mysqlconnector/_typing.py +186 -0
- sqlspec/adapters/mysqlconnector/adk/__init__.py +15 -0
- sqlspec/adapters/mysqlconnector/adk/store.py +1183 -0
- sqlspec/adapters/mysqlconnector/config.py +421 -0
- sqlspec/adapters/mysqlconnector/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/mysqlconnector/core.py +472 -0
- sqlspec/adapters/mysqlconnector/data_dictionary.py +230 -0
- sqlspec/adapters/mysqlconnector/driver.py +516 -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 +39 -0
- sqlspec/adapters/oracledb/_json_handlers.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/oracledb/_json_handlers.py +196 -0
- sqlspec/adapters/oracledb/_param_types.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/oracledb/_param_types.py +46 -0
- sqlspec/adapters/oracledb/_typing.py +258 -0
- sqlspec/adapters/oracledb/_uuid_handlers.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/oracledb/_uuid_handlers.py +163 -0
- sqlspec/adapters/oracledb/_vector_handlers.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/oracledb/_vector_handlers.py +228 -0
- sqlspec/adapters/oracledb/adk/__init__.py +21 -0
- sqlspec/adapters/oracledb/adk/store.py +2453 -0
- sqlspec/adapters/oracledb/config.py +575 -0
- sqlspec/adapters/oracledb/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/oracledb/core.py +820 -0
- sqlspec/adapters/oracledb/data_dictionary.py +404 -0
- sqlspec/adapters/oracledb/driver.py +1277 -0
- sqlspec/adapters/oracledb/events/__init__.py +16 -0
- sqlspec/adapters/oracledb/events/_hub.py +345 -0
- sqlspec/adapters/oracledb/events/backend.py +300 -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 +539 -0
- sqlspec/adapters/oracledb/type_converter.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/oracledb/type_converter.py +211 -0
- sqlspec/adapters/psqlpy/__init__.py +18 -0
- sqlspec/adapters/psqlpy/_typing.py +121 -0
- sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
- sqlspec/adapters/psqlpy/adk/store.py +591 -0
- sqlspec/adapters/psqlpy/config.py +376 -0
- sqlspec/adapters/psqlpy/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/psqlpy/core.py +694 -0
- sqlspec/adapters/psqlpy/data_dictionary.py +121 -0
- sqlspec/adapters/psqlpy/driver.py +411 -0
- sqlspec/adapters/psqlpy/events/__init__.py +6 -0
- sqlspec/adapters/psqlpy/events/_hub.py +204 -0
- sqlspec/adapters/psqlpy/events/backend.py +210 -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.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/psqlpy/type_converter.py +113 -0
- sqlspec/adapters/psycopg/__init__.py +38 -0
- sqlspec/adapters/psycopg/_typing.py +218 -0
- sqlspec/adapters/psycopg/adk/__init__.py +10 -0
- sqlspec/adapters/psycopg/adk/store.py +1106 -0
- sqlspec/adapters/psycopg/config.py +695 -0
- sqlspec/adapters/psycopg/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/psycopg/core.py +520 -0
- sqlspec/adapters/psycopg/data_dictionary.py +278 -0
- sqlspec/adapters/psycopg/driver.py +1033 -0
- sqlspec/adapters/psycopg/events/__init__.py +20 -0
- sqlspec/adapters/psycopg/events/_hub.py +388 -0
- sqlspec/adapters/psycopg/events/backend.py +398 -0
- sqlspec/adapters/psycopg/events/store.py +42 -0
- sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
- sqlspec/adapters/psycopg/litestar/store.py +554 -0
- sqlspec/adapters/psycopg/type_converter.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/psycopg/type_converter.py +93 -0
- sqlspec/adapters/pymysql/__init__.py +21 -0
- sqlspec/adapters/pymysql/_typing.py +92 -0
- sqlspec/adapters/pymysql/adk/__init__.py +5 -0
- sqlspec/adapters/pymysql/adk/store.py +657 -0
- sqlspec/adapters/pymysql/config.py +176 -0
- sqlspec/adapters/pymysql/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/pymysql/core.py +469 -0
- sqlspec/adapters/pymysql/data_dictionary.py +120 -0
- sqlspec/adapters/pymysql/driver.py +271 -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.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/pymysql/pool.py +184 -0
- sqlspec/adapters/spanner/__init__.py +33 -0
- sqlspec/adapters/spanner/_typing.py +102 -0
- sqlspec/adapters/spanner/adk/__init__.py +5 -0
- sqlspec/adapters/spanner/adk/store.py +758 -0
- sqlspec/adapters/spanner/config.py +355 -0
- sqlspec/adapters/spanner/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/spanner/core.py +263 -0
- sqlspec/adapters/spanner/data_dictionary.py +120 -0
- sqlspec/adapters/spanner/driver.py +407 -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.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/spanner/type_converter.py +342 -0
- sqlspec/adapters/sqlite/__init__.py +19 -0
- sqlspec/adapters/sqlite/_typing.py +123 -0
- sqlspec/adapters/sqlite/adk/__init__.py +5 -0
- sqlspec/adapters/sqlite/adk/store.py +992 -0
- sqlspec/adapters/sqlite/config.py +240 -0
- sqlspec/adapters/sqlite/core.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/sqlite/core.py +357 -0
- sqlspec/adapters/sqlite/data_dictionary.py +198 -0
- sqlspec/adapters/sqlite/driver.py +527 -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.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/sqlite/pool.py +237 -0
- sqlspec/adapters/sqlite/type_converter.cp314-win_amd64.pyd +0 -0
- sqlspec/adapters/sqlite/type_converter.py +114 -0
- sqlspec/base.py +832 -0
- sqlspec/builder/__init__.py +181 -0
- sqlspec/builder/_base.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_base.py +1071 -0
- sqlspec/builder/_column.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_column.py +521 -0
- sqlspec/builder/_ddl.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_ddl.py +1691 -0
- sqlspec/builder/_delete.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_delete.py +95 -0
- sqlspec/builder/_dml.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_dml.py +386 -0
- sqlspec/builder/_explain.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_explain.py +579 -0
- sqlspec/builder/_expression_wrappers.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_expression_wrappers.py +46 -0
- sqlspec/builder/_factory.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_factory.py +1884 -0
- sqlspec/builder/_insert.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_insert.py +405 -0
- sqlspec/builder/_join.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_join.py +489 -0
- sqlspec/builder/_merge.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_merge.py +823 -0
- sqlspec/builder/_parsing_utils.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_parsing_utils.py +295 -0
- sqlspec/builder/_select.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_select.py +1666 -0
- sqlspec/builder/_temporal.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_temporal.py +167 -0
- sqlspec/builder/_update.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_update.py +173 -0
- sqlspec/builder/_vector_distance.cp314-win_amd64.pyd +0 -0
- sqlspec/builder/_vector_distance.py +330 -0
- sqlspec/cli.py +1095 -0
- sqlspec/config.py +2383 -0
- sqlspec/core/__init__.py +372 -0
- sqlspec/core/_correlation.cp314-win_amd64.pyd +0 -0
- sqlspec/core/_correlation.py +176 -0
- sqlspec/core/_pagination.py +42 -0
- sqlspec/core/_pool.cp314-win_amd64.pyd +0 -0
- sqlspec/core/_pool.py +76 -0
- sqlspec/core/cache.cp314-win_amd64.pyd +0 -0
- sqlspec/core/cache.py +1085 -0
- sqlspec/core/compiler.cp314-win_amd64.pyd +0 -0
- sqlspec/core/compiler.py +1090 -0
- sqlspec/core/config_runtime.cp314-win_amd64.pyd +0 -0
- sqlspec/core/config_runtime.py +174 -0
- sqlspec/core/explain.cp314-win_amd64.pyd +0 -0
- sqlspec/core/explain.py +275 -0
- sqlspec/core/filters.cp314-win_amd64.pyd +0 -0
- sqlspec/core/filters.py +969 -0
- sqlspec/core/hashing.cp314-win_amd64.pyd +0 -0
- sqlspec/core/hashing.py +266 -0
- sqlspec/core/metrics.cp314-win_amd64.pyd +0 -0
- sqlspec/core/metrics.py +83 -0
- sqlspec/core/parameters/__init__.py +72 -0
- sqlspec/core/parameters/_alignment.cp314-win_amd64.pyd +0 -0
- sqlspec/core/parameters/_alignment.py +283 -0
- sqlspec/core/parameters/_converter.cp314-win_amd64.pyd +0 -0
- sqlspec/core/parameters/_converter.py +554 -0
- sqlspec/core/parameters/_processor.cp314-win_amd64.pyd +0 -0
- sqlspec/core/parameters/_processor.py +1182 -0
- sqlspec/core/parameters/_registry.cp314-win_amd64.pyd +0 -0
- sqlspec/core/parameters/_registry.py +206 -0
- sqlspec/core/parameters/_transformers.cp314-win_amd64.pyd +0 -0
- sqlspec/core/parameters/_transformers.py +324 -0
- sqlspec/core/parameters/_types.cp314-win_amd64.pyd +0 -0
- sqlspec/core/parameters/_types.py +536 -0
- sqlspec/core/parameters/_validator.cp314-win_amd64.pyd +0 -0
- sqlspec/core/parameters/_validator.py +171 -0
- sqlspec/core/pipeline.cp314-win_amd64.pyd +0 -0
- sqlspec/core/pipeline.py +333 -0
- sqlspec/core/query_modifiers.cp314-win_amd64.pyd +0 -0
- sqlspec/core/query_modifiers.py +508 -0
- sqlspec/core/result/__init__.py +25 -0
- sqlspec/core/result/_base.cp314-win_amd64.pyd +0 -0
- sqlspec/core/result/_base.py +1232 -0
- sqlspec/core/result/_io.cp314-win_amd64.pyd +0 -0
- sqlspec/core/result/_io.py +28 -0
- sqlspec/core/splitter.cp314-win_amd64.pyd +0 -0
- sqlspec/core/splitter.py +1021 -0
- sqlspec/core/sqlcommenter.cp314-win_amd64.pyd +0 -0
- sqlspec/core/sqlcommenter.py +249 -0
- sqlspec/core/stack.cp314-win_amd64.pyd +0 -0
- sqlspec/core/stack.py +163 -0
- sqlspec/core/statement.cp314-win_amd64.pyd +0 -0
- sqlspec/core/statement.py +1865 -0
- sqlspec/core/type_converter.cp314-win_amd64.pyd +0 -0
- sqlspec/core/type_converter.py +340 -0
- sqlspec/data_dictionary/__init__.py +22 -0
- sqlspec/data_dictionary/_loader.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/_loader.py +138 -0
- sqlspec/data_dictionary/_registry.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/_registry.py +74 -0
- sqlspec/data_dictionary/_types.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/_types.py +121 -0
- sqlspec/data_dictionary/dialects/__init__.py +21 -0
- sqlspec/data_dictionary/dialects/bigquery.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/dialects/bigquery.py +81 -0
- sqlspec/data_dictionary/dialects/cockroachdb.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/dialects/cockroachdb.py +54 -0
- sqlspec/data_dictionary/dialects/duckdb.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/dialects/duckdb.py +47 -0
- sqlspec/data_dictionary/dialects/mysql.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/dialects/mysql.py +53 -0
- sqlspec/data_dictionary/dialects/oracle.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/dialects/oracle.py +197 -0
- sqlspec/data_dictionary/dialects/postgres.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/dialects/postgres.py +69 -0
- sqlspec/data_dictionary/dialects/spanner.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/dialects/spanner.py +37 -0
- sqlspec/data_dictionary/dialects/sqlite.cp314-win_amd64.pyd +0 -0
- sqlspec/data_dictionary/dialects/sqlite.py +59 -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/dialects/__init__.py +22 -0
- sqlspec/dialects/_compat.cp314-win_amd64.pyd +0 -0
- sqlspec/dialects/_compat.py +14 -0
- sqlspec/dialects/postgres/__init__.py +9 -0
- sqlspec/dialects/postgres/_generators.cp314-win_amd64.pyd +0 -0
- sqlspec/dialects/postgres/_generators.py +57 -0
- sqlspec/dialects/postgres/_operators.cp314-win_amd64.pyd +0 -0
- sqlspec/dialects/postgres/_operators.py +81 -0
- sqlspec/dialects/postgres/_paradedb.py +50 -0
- sqlspec/dialects/postgres/_pgvector.py +36 -0
- sqlspec/dialects/spanner/__init__.py +6 -0
- sqlspec/dialects/spanner/_generators.cp314-win_amd64.pyd +0 -0
- sqlspec/dialects/spanner/_generators.py +206 -0
- sqlspec/dialects/spanner/_spangres.py +77 -0
- sqlspec/dialects/spanner/_spanner.py +179 -0
- sqlspec/driver/__init__.py +49 -0
- sqlspec/driver/_async.cp314-win_amd64.pyd +0 -0
- sqlspec/driver/_async.py +1830 -0
- sqlspec/driver/_common.cp314-win_amd64.pyd +0 -0
- sqlspec/driver/_common.py +2292 -0
- sqlspec/driver/_exception_handler.cp314-win_amd64.pyd +0 -0
- sqlspec/driver/_exception_handler.py +108 -0
- sqlspec/driver/_query_cache.cp314-win_amd64.pyd +0 -0
- sqlspec/driver/_query_cache.py +96 -0
- sqlspec/driver/_sql_helpers.cp314-win_amd64.pyd +0 -0
- sqlspec/driver/_sql_helpers.py +139 -0
- sqlspec/driver/_storage_helpers.cp314-win_amd64.pyd +0 -0
- sqlspec/driver/_storage_helpers.py +153 -0
- sqlspec/driver/_sync.cp314-win_amd64.pyd +0 -0
- sqlspec/driver/_sync.py +1817 -0
- sqlspec/exceptions.cp314-win_amd64.pyd +0 -0
- sqlspec/exceptions.py +480 -0
- sqlspec/extensions/__init__.py +0 -0
- sqlspec/extensions/adk/__init__.py +84 -0
- sqlspec/extensions/adk/_config_utils.py +199 -0
- sqlspec/extensions/adk/_types.cp314-win_amd64.pyd +0 -0
- sqlspec/extensions/adk/_types.py +41 -0
- sqlspec/extensions/adk/artifact/__init__.py +57 -0
- sqlspec/extensions/adk/artifact/_types.cp314-win_amd64.pyd +0 -0
- sqlspec/extensions/adk/artifact/_types.py +32 -0
- sqlspec/extensions/adk/artifact/service.py +508 -0
- sqlspec/extensions/adk/artifact/store.py +361 -0
- sqlspec/extensions/adk/converters.py +212 -0
- sqlspec/extensions/adk/memory/__init__.py +69 -0
- sqlspec/extensions/adk/memory/_types.cp314-win_amd64.pyd +0 -0
- sqlspec/extensions/adk/memory/_types.py +30 -0
- sqlspec/extensions/adk/memory/converters.py +225 -0
- sqlspec/extensions/adk/memory/service.py +316 -0
- sqlspec/extensions/adk/memory/store.py +525 -0
- sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +184 -0
- sqlspec/extensions/adk/migrations/__init__.py +0 -0
- sqlspec/extensions/adk/service.py +279 -0
- sqlspec/extensions/adk/store.py +590 -0
- sqlspec/extensions/events/__init__.py +51 -0
- sqlspec/extensions/events/_channel.py +703 -0
- sqlspec/extensions/events/_hints.cp314-win_amd64.pyd +0 -0
- sqlspec/extensions/events/_hints.py +45 -0
- sqlspec/extensions/events/_models.py +23 -0
- sqlspec/extensions/events/_payload.cp314-win_amd64.pyd +0 -0
- sqlspec/extensions/events/_payload.py +69 -0
- sqlspec/extensions/events/_protocols.py +134 -0
- sqlspec/extensions/events/_queue.py +462 -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 +22 -0
- sqlspec/extensions/fastapi/extension.py +391 -0
- sqlspec/extensions/fastapi/providers.cp314-win_amd64.pyd +0 -0
- sqlspec/extensions/fastapi/providers.py +712 -0
- sqlspec/extensions/flask/__init__.py +38 -0
- sqlspec/extensions/flask/_state.py +87 -0
- sqlspec/extensions/flask/_utils.py +71 -0
- sqlspec/extensions/flask/extension.py +539 -0
- sqlspec/extensions/litestar/__init__.py +31 -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 +1066 -0
- sqlspec/extensions/litestar/providers.cp314-win_amd64.pyd +0 -0
- sqlspec/extensions/litestar/providers.py +784 -0
- sqlspec/extensions/litestar/store.py +298 -0
- sqlspec/extensions/otel/__init__.py +58 -0
- sqlspec/extensions/prometheus/__init__.py +113 -0
- sqlspec/extensions/sanic/__init__.py +19 -0
- sqlspec/extensions/sanic/_state.py +43 -0
- sqlspec/extensions/sanic/_utils.py +127 -0
- sqlspec/extensions/sanic/extension.py +647 -0
- sqlspec/extensions/starlette/__init__.py +22 -0
- sqlspec/extensions/starlette/_state.py +42 -0
- sqlspec/extensions/starlette/_utils.py +96 -0
- sqlspec/extensions/starlette/extension.py +374 -0
- sqlspec/extensions/starlette/middleware.py +281 -0
- sqlspec/loader.cp314-win_amd64.pyd +0 -0
- sqlspec/loader.py +727 -0
- sqlspec/migrations/__init__.py +39 -0
- sqlspec/migrations/base.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/base.py +862 -0
- sqlspec/migrations/commands.py +2151 -0
- sqlspec/migrations/context.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/context.py +157 -0
- sqlspec/migrations/fix.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/fix.py +204 -0
- sqlspec/migrations/loaders.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/loaders.py +443 -0
- sqlspec/migrations/runner.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/runner.py +1195 -0
- sqlspec/migrations/squash.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/squash.py +490 -0
- sqlspec/migrations/templates.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/templates.py +234 -0
- sqlspec/migrations/tracker.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/tracker.py +792 -0
- sqlspec/migrations/utils.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/utils.py +256 -0
- sqlspec/migrations/validation.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/validation.py +359 -0
- sqlspec/migrations/version.cp314-win_amd64.pyd +0 -0
- sqlspec/migrations/version.py +446 -0
- sqlspec/observability/__init__.py +57 -0
- sqlspec/observability/_common.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_common.py +77 -0
- sqlspec/observability/_config.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_config.py +364 -0
- sqlspec/observability/_diagnostics.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_diagnostics.py +74 -0
- sqlspec/observability/_dispatcher.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_dispatcher.py +200 -0
- sqlspec/observability/_formatters/__init__.py +13 -0
- sqlspec/observability/_formatters/_aws.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_formatters/_aws.py +102 -0
- sqlspec/observability/_formatters/_azure.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_formatters/_azure.py +96 -0
- sqlspec/observability/_formatters/_base.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_formatters/_base.py +57 -0
- sqlspec/observability/_formatters/_gcp.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_formatters/_gcp.py +131 -0
- sqlspec/observability/_formatting.py +58 -0
- sqlspec/observability/_observer.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_observer.py +361 -0
- sqlspec/observability/_runtime.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_runtime.py +461 -0
- sqlspec/observability/_sampling.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_sampling.py +188 -0
- sqlspec/observability/_spans.cp314-win_amd64.pyd +0 -0
- sqlspec/observability/_spans.py +161 -0
- sqlspec/protocols.py +955 -0
- sqlspec/py.typed +0 -0
- sqlspec/service.py +433 -0
- sqlspec/storage/__init__.py +48 -0
- sqlspec/storage/_arrow_payload.py +68 -0
- sqlspec/storage/_paths.cp314-win_amd64.pyd +0 -0
- sqlspec/storage/_paths.py +58 -0
- sqlspec/storage/_utils.py +46 -0
- sqlspec/storage/backends/__init__.py +1 -0
- sqlspec/storage/backends/base.cp314-win_amd64.pyd +0 -0
- sqlspec/storage/backends/base.py +374 -0
- sqlspec/storage/backends/fsspec.py +574 -0
- sqlspec/storage/backends/local.py +468 -0
- sqlspec/storage/backends/obstore.py +956 -0
- sqlspec/storage/errors.cp314-win_amd64.pyd +0 -0
- sqlspec/storage/errors.py +102 -0
- sqlspec/storage/pipeline.cp314-win_amd64.pyd +0 -0
- sqlspec/storage/pipeline.py +628 -0
- sqlspec/storage/registry.cp314-win_amd64.pyd +0 -0
- sqlspec/storage/registry.py +329 -0
- sqlspec/typing.py +405 -0
- sqlspec/utils/__init__.py +7 -0
- sqlspec/utils/arrow_helpers.py +384 -0
- sqlspec/utils/config_tools.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/config_tools.py +314 -0
- sqlspec/utils/correlation.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/correlation.py +134 -0
- sqlspec/utils/deprecation.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/deprecation.py +157 -0
- sqlspec/utils/dispatch.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/dispatch.py +101 -0
- sqlspec/utils/fixtures.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/fixtures.py +260 -0
- sqlspec/utils/logging.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/logging.py +251 -0
- sqlspec/utils/module_loader.py +306 -0
- sqlspec/utils/portal.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/portal.py +377 -0
- sqlspec/utils/schema.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/schema.py +1040 -0
- sqlspec/utils/serializers/__init__.py +30 -0
- sqlspec/utils/serializers/_json.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/serializers/_json.py +415 -0
- sqlspec/utils/serializers/_numpy.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/serializers/_numpy.py +65 -0
- sqlspec/utils/serializers/_schema.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/serializers/_schema.py +285 -0
- sqlspec/utils/singleton.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/singleton.py +41 -0
- sqlspec/utils/sync_tools.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/sync_tools.py +316 -0
- sqlspec/utils/text.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/text.py +109 -0
- sqlspec/utils/type_converters.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/type_converters.py +216 -0
- sqlspec/utils/type_guards.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/type_guards.py +1508 -0
- sqlspec/utils/uuids.cp314-win_amd64.pyd +0 -0
- sqlspec/utils/uuids.py +241 -0
- sqlspec-0.47.0.dist-info/METADATA +202 -0
- sqlspec-0.47.0.dist-info/RECORD +621 -0
- sqlspec-0.47.0.dist-info/WHEEL +4 -0
- sqlspec-0.47.0.dist-info/entry_points.txt +6 -0
- sqlspec-0.47.0.dist-info/licenses/LICENSE +21 -0
|
Binary file
|
sqlspec/utils/uuids.py
ADDED
|
@@ -0,0 +1,241 @@
|
|
|
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, falls back to Python 3.14+ native
|
|
156
|
+
uuid.uuid6() or 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 time-ordered generation unavailable.
|
|
164
|
+
"""
|
|
165
|
+
module = _load_uuid_utils()
|
|
166
|
+
if module is not None:
|
|
167
|
+
return cast("UUID", module.uuid6())
|
|
168
|
+
|
|
169
|
+
# Try Python 3.14+ native support
|
|
170
|
+
import uuid as _uuid_mod
|
|
171
|
+
|
|
172
|
+
native_uuid6 = getattr(_uuid_mod, "uuid6", None)
|
|
173
|
+
if native_uuid6 is not None:
|
|
174
|
+
return cast("UUID", native_uuid6())
|
|
175
|
+
|
|
176
|
+
warnings.warn(
|
|
177
|
+
"uuid-utils not installed and Python < 3.14, falling back to uuid4 for UUID v6 generation. "
|
|
178
|
+
"Install with: pip install sqlspec[uuid]",
|
|
179
|
+
UserWarning,
|
|
180
|
+
stacklevel=2,
|
|
181
|
+
)
|
|
182
|
+
return _stdlib_uuid4()
|
|
183
|
+
|
|
184
|
+
|
|
185
|
+
def uuid7() -> "UUID":
|
|
186
|
+
"""Generate a time-ordered UUID (version 7).
|
|
187
|
+
|
|
188
|
+
Uses uuid-utils when available, falls back to Python 3.14+ native
|
|
189
|
+
uuid.uuid7() or uuid4() with a warning.
|
|
190
|
+
|
|
191
|
+
UUIDv7 is the recommended time-ordered UUID format per RFC 9562,
|
|
192
|
+
providing millisecond precision timestamps. It is designed for
|
|
193
|
+
modern distributed systems and database primary keys.
|
|
194
|
+
|
|
195
|
+
Returns:
|
|
196
|
+
A time-ordered UUID, or a random UUID if time-ordered generation unavailable.
|
|
197
|
+
"""
|
|
198
|
+
module = _load_uuid_utils()
|
|
199
|
+
if module is not None:
|
|
200
|
+
return cast("UUID", module.uuid7())
|
|
201
|
+
|
|
202
|
+
# Try Python 3.14+ native support
|
|
203
|
+
import uuid as _uuid_mod
|
|
204
|
+
|
|
205
|
+
native_uuid7 = getattr(_uuid_mod, "uuid7", None)
|
|
206
|
+
if native_uuid7 is not None:
|
|
207
|
+
return cast("UUID", native_uuid7())
|
|
208
|
+
|
|
209
|
+
warnings.warn(
|
|
210
|
+
"uuid-utils not installed and Python < 3.14, falling back to uuid4 for UUID v7 generation. "
|
|
211
|
+
"Install with: pip install sqlspec[uuid]",
|
|
212
|
+
UserWarning,
|
|
213
|
+
stacklevel=2,
|
|
214
|
+
)
|
|
215
|
+
return _stdlib_uuid4()
|
|
216
|
+
|
|
217
|
+
|
|
218
|
+
def nanoid() -> str:
|
|
219
|
+
"""Generate a Nano ID.
|
|
220
|
+
|
|
221
|
+
Uses fastnanoid for performance when available. When fastnanoid is
|
|
222
|
+
not installed, falls back to uuid4().hex with a warning.
|
|
223
|
+
|
|
224
|
+
Nano IDs are URL-safe, compact 21-character identifiers suitable
|
|
225
|
+
for use as primary keys or short identifiers. The default alphabet
|
|
226
|
+
uses A-Za-z0-9_- characters.
|
|
227
|
+
|
|
228
|
+
Returns:
|
|
229
|
+
A 21-character Nano ID string, or 32-character UUID hex if
|
|
230
|
+
fastnanoid unavailable.
|
|
231
|
+
"""
|
|
232
|
+
module = _load_nanoid()
|
|
233
|
+
if module is None:
|
|
234
|
+
warnings.warn(
|
|
235
|
+
"fastnanoid not installed, falling back to uuid4.hex for Nano ID generation. "
|
|
236
|
+
"Install with: pip install sqlspec[nanoid]",
|
|
237
|
+
UserWarning,
|
|
238
|
+
stacklevel=2,
|
|
239
|
+
)
|
|
240
|
+
return _nanoid_impl()
|
|
241
|
+
return cast("str", module.generate())
|
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: sqlspec
|
|
3
|
+
Version: 0.47.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
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
13
|
+
Classifier: Programming Language :: Python :: 3
|
|
14
|
+
Classifier: Programming Language :: Python :: 3 :: Only
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Typing :: Typed
|
|
21
|
+
Requires-Python: <4.0,>=3.10
|
|
22
|
+
Requires-Dist: mypy-extensions
|
|
23
|
+
Requires-Dist: rich-click>=1.9.0
|
|
24
|
+
Requires-Dist: sqlglot>=30.0.0
|
|
25
|
+
Requires-Dist: tomli>=2.0.0; python_version < '3.11'
|
|
26
|
+
Requires-Dist: typing-extensions
|
|
27
|
+
Provides-Extra: adbc
|
|
28
|
+
Requires-Dist: adbc-driver-manager; extra == 'adbc'
|
|
29
|
+
Requires-Dist: pyarrow; extra == 'adbc'
|
|
30
|
+
Provides-Extra: adk
|
|
31
|
+
Requires-Dist: google-adk; extra == 'adk'
|
|
32
|
+
Provides-Extra: aiomysql
|
|
33
|
+
Requires-Dist: aiomysql; extra == 'aiomysql'
|
|
34
|
+
Provides-Extra: aioodbc
|
|
35
|
+
Requires-Dist: aioodbc; extra == 'aioodbc'
|
|
36
|
+
Provides-Extra: aiosqlite
|
|
37
|
+
Requires-Dist: aiosqlite; extra == 'aiosqlite'
|
|
38
|
+
Provides-Extra: alloydb
|
|
39
|
+
Requires-Dist: google-cloud-alloydb-connector; extra == 'alloydb'
|
|
40
|
+
Provides-Extra: asyncmy
|
|
41
|
+
Requires-Dist: asyncmy; extra == 'asyncmy'
|
|
42
|
+
Provides-Extra: asyncpg
|
|
43
|
+
Requires-Dist: asyncpg; extra == 'asyncpg'
|
|
44
|
+
Provides-Extra: attrs
|
|
45
|
+
Requires-Dist: attrs; extra == 'attrs'
|
|
46
|
+
Requires-Dist: cattrs; extra == 'attrs'
|
|
47
|
+
Provides-Extra: bigquery
|
|
48
|
+
Requires-Dist: google-cloud-bigquery; extra == 'bigquery'
|
|
49
|
+
Requires-Dist: google-cloud-storage; extra == 'bigquery'
|
|
50
|
+
Provides-Extra: cloud-sql
|
|
51
|
+
Requires-Dist: cloud-sql-python-connector; extra == 'cloud-sql'
|
|
52
|
+
Provides-Extra: cockroachdb
|
|
53
|
+
Requires-Dist: asyncpg; extra == 'cockroachdb'
|
|
54
|
+
Requires-Dist: psycopg[binary,pool]; extra == 'cockroachdb'
|
|
55
|
+
Provides-Extra: duckdb
|
|
56
|
+
Requires-Dist: duckdb; extra == 'duckdb'
|
|
57
|
+
Requires-Dist: pytz; extra == 'duckdb'
|
|
58
|
+
Provides-Extra: fastapi
|
|
59
|
+
Requires-Dist: fastapi; extra == 'fastapi'
|
|
60
|
+
Provides-Extra: flask
|
|
61
|
+
Requires-Dist: flask; extra == 'flask'
|
|
62
|
+
Provides-Extra: fsspec
|
|
63
|
+
Requires-Dist: fsspec; extra == 'fsspec'
|
|
64
|
+
Provides-Extra: litestar
|
|
65
|
+
Requires-Dist: litestar>=2.22.0; extra == 'litestar'
|
|
66
|
+
Provides-Extra: msgspec
|
|
67
|
+
Requires-Dist: msgspec; extra == 'msgspec'
|
|
68
|
+
Provides-Extra: mypyc
|
|
69
|
+
Requires-Dist: sqlglot[c]>=30.0.0; extra == 'mypyc'
|
|
70
|
+
Provides-Extra: mysql-connector
|
|
71
|
+
Requires-Dist: mysql-connector-python; (python_version < '3.12') and extra == 'mysql-connector'
|
|
72
|
+
Requires-Dist: mysql-connector-python<9.7.0; (python_version >= '3.12') and extra == 'mysql-connector'
|
|
73
|
+
Provides-Extra: nanoid
|
|
74
|
+
Requires-Dist: fastnanoid>=0.4.1; extra == 'nanoid'
|
|
75
|
+
Provides-Extra: obstore
|
|
76
|
+
Requires-Dist: obstore; extra == 'obstore'
|
|
77
|
+
Provides-Extra: opentelemetry
|
|
78
|
+
Requires-Dist: opentelemetry-instrumentation; extra == 'opentelemetry'
|
|
79
|
+
Provides-Extra: oracledb
|
|
80
|
+
Requires-Dist: oracledb; extra == 'oracledb'
|
|
81
|
+
Provides-Extra: orjson
|
|
82
|
+
Requires-Dist: orjson; extra == 'orjson'
|
|
83
|
+
Provides-Extra: pandas
|
|
84
|
+
Requires-Dist: pandas; extra == 'pandas'
|
|
85
|
+
Requires-Dist: pyarrow; extra == 'pandas'
|
|
86
|
+
Provides-Extra: performance
|
|
87
|
+
Requires-Dist: librt>=0.10.0; extra == 'performance'
|
|
88
|
+
Requires-Dist: msgspec; extra == 'performance'
|
|
89
|
+
Provides-Extra: polars
|
|
90
|
+
Requires-Dist: polars; extra == 'polars'
|
|
91
|
+
Requires-Dist: pyarrow; extra == 'polars'
|
|
92
|
+
Provides-Extra: prometheus
|
|
93
|
+
Requires-Dist: prometheus-client; extra == 'prometheus'
|
|
94
|
+
Provides-Extra: psqlpy
|
|
95
|
+
Requires-Dist: psqlpy; extra == 'psqlpy'
|
|
96
|
+
Provides-Extra: psycopg
|
|
97
|
+
Requires-Dist: psycopg[binary,pool]; extra == 'psycopg'
|
|
98
|
+
Provides-Extra: pydantic
|
|
99
|
+
Requires-Dist: pydantic; extra == 'pydantic'
|
|
100
|
+
Requires-Dist: pydantic-extra-types; extra == 'pydantic'
|
|
101
|
+
Provides-Extra: pymssql
|
|
102
|
+
Requires-Dist: pymssql; extra == 'pymssql'
|
|
103
|
+
Provides-Extra: pymysql
|
|
104
|
+
Requires-Dist: pymysql; extra == 'pymysql'
|
|
105
|
+
Provides-Extra: sanic
|
|
106
|
+
Requires-Dist: sanic; extra == 'sanic'
|
|
107
|
+
Provides-Extra: spanner
|
|
108
|
+
Requires-Dist: google-cloud-spanner; extra == 'spanner'
|
|
109
|
+
Provides-Extra: starlette
|
|
110
|
+
Requires-Dist: starlette; extra == 'starlette'
|
|
111
|
+
Provides-Extra: uuid
|
|
112
|
+
Requires-Dist: uuid-utils; extra == 'uuid'
|
|
113
|
+
Description-Content-Type: text/markdown
|
|
114
|
+
|
|
115
|
+
# SQLSpec
|
|
116
|
+
|
|
117
|
+
[](https://pypi.org/project/sqlspec/)
|
|
118
|
+
[](https://pypi.org/project/sqlspec/)
|
|
119
|
+
[](https://github.com/litestar-org/sqlspec/blob/main/LICENSE)
|
|
120
|
+
[](https://sqlspec.dev/)
|
|
121
|
+
|
|
122
|
+
SQLSpec is a SQL execution layer for Python. You write the SQL -- as strings, through a builder API, or loaded from files -- and SQLSpec handles connections, parameter binding, SQL injection prevention, dialect translation, and mapping results back to typed Python objects. It uses [sqlglot](https://github.com/tobymao/sqlglot) under the hood to parse, validate, and optimize your queries before they hit the database.
|
|
123
|
+
|
|
124
|
+
It works with PostgreSQL (asyncpg, psycopg, psqlpy), SQLite (sqlite3, aiosqlite), DuckDB, MySQL (asyncmy, mysql-connector, pymysql), Oracle (oracledb), CockroachDB, BigQuery, Spanner, and anything ADBC-compatible. Sync or async, same API. It also includes a built-in storage layer, native and bridged Arrow support for all drivers, and integrations for Litestar, FastAPI, Flask, Sanic, and Starlette.
|
|
125
|
+
|
|
126
|
+
## Quick Start
|
|
127
|
+
|
|
128
|
+
```bash
|
|
129
|
+
pip install sqlspec
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
from pydantic import BaseModel
|
|
134
|
+
from sqlspec import SQLSpec
|
|
135
|
+
from sqlspec.adapters.sqlite import SqliteConfig
|
|
136
|
+
|
|
137
|
+
class Greeting(BaseModel):
|
|
138
|
+
message: str
|
|
139
|
+
|
|
140
|
+
spec = SQLSpec()
|
|
141
|
+
db = spec.add_config(SqliteConfig(connection_config={"database": ":memory:"}))
|
|
142
|
+
|
|
143
|
+
with spec.provide_session(db) as session:
|
|
144
|
+
greeting = session.select_one(
|
|
145
|
+
"SELECT 'Hello, SQLSpec!' AS message",
|
|
146
|
+
schema_type=Greeting,
|
|
147
|
+
)
|
|
148
|
+
print(greeting.message) # Output: Hello, SQLSpec!
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
Write SQL, define a schema, get typed objects back. Or use the query builder -- they're interchangeable:
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
from sqlspec import sql
|
|
155
|
+
|
|
156
|
+
# Builder API -- same driver, same result mapping
|
|
157
|
+
users = session.select(
|
|
158
|
+
sql.select("id", "name", "email")
|
|
159
|
+
.from_("users")
|
|
160
|
+
.where("active = :active")
|
|
161
|
+
.order_by("name")
|
|
162
|
+
.limit(10),
|
|
163
|
+
{"active": True},
|
|
164
|
+
schema_type=User,
|
|
165
|
+
)
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Features
|
|
169
|
+
|
|
170
|
+
- **Connection pooling** -- sync and async adapters with a unified API across all supported drivers
|
|
171
|
+
- **Parameter binding and dialect translation** -- powered by sqlglot, with a fluent query builder and `.sql` file loader
|
|
172
|
+
- **Result mapping** -- map rows to Pydantic, msgspec, attrs, or dataclass models, or export to Arrow tables for pandas and Polars
|
|
173
|
+
- **Storage layer** -- read and write Arrow tables to local files, fsspec, or object stores
|
|
174
|
+
- **Framework integrations** -- Litestar plugin with DI, Starlette/FastAPI/Sanic middleware, Flask extension
|
|
175
|
+
- **Observability** -- OpenTelemetry and Prometheus instrumentation, structured logging with correlation IDs
|
|
176
|
+
- **Event channels** -- LISTEN/NOTIFY, Oracle AQ, and a portable polling fallback
|
|
177
|
+
- **Migrations** -- schema versioning CLI built on Alembic
|
|
178
|
+
|
|
179
|
+
## Documentation
|
|
180
|
+
|
|
181
|
+
- [Getting Started](https://sqlspec.dev/getting_started/) -- installation, adapter selection, first steps
|
|
182
|
+
- [Usage Guides](https://sqlspec.dev/usage/) -- adapters, configuration, SQL file loader, and more
|
|
183
|
+
- [Examples Gallery](https://sqlspec.dev/examples/) -- working code for common patterns
|
|
184
|
+
- [API Reference](https://sqlspec.dev/reference/) -- full API docs
|
|
185
|
+
- [CLI Reference](https://sqlspec.dev/usage/cli.html) -- migration and management commands
|
|
186
|
+
|
|
187
|
+
## Playground
|
|
188
|
+
|
|
189
|
+
Want to try it without installing anything? The [interactive playground](https://sqlspec.dev/playground) runs SQLSpec in your browser with a sandboxed Python runtime.
|
|
190
|
+
|
|
191
|
+
## Reference Applications
|
|
192
|
+
|
|
193
|
+
- **[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.
|
|
194
|
+
- **[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 handling, and real-time performance metrics.
|
|
195
|
+
|
|
196
|
+
## Contributing
|
|
197
|
+
|
|
198
|
+
Contributions are welcome -- whether that's bug reports, new adapter ideas, or pull requests. Take a look at the [contributor guide](https://sqlspec.dev/contributing/) to get started.
|
|
199
|
+
|
|
200
|
+
## License
|
|
201
|
+
|
|
202
|
+
MIT
|