sqlspec 0.26.0__py3-none-any.whl → 0.28.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of sqlspec might be problematic. Click here for more details.
- sqlspec/__init__.py +7 -15
- sqlspec/_serialization.py +55 -25
- sqlspec/_typing.py +155 -52
- sqlspec/adapters/adbc/_types.py +1 -1
- sqlspec/adapters/adbc/adk/__init__.py +5 -0
- sqlspec/adapters/adbc/adk/store.py +880 -0
- sqlspec/adapters/adbc/config.py +62 -12
- sqlspec/adapters/adbc/data_dictionary.py +74 -2
- sqlspec/adapters/adbc/driver.py +226 -58
- sqlspec/adapters/adbc/litestar/__init__.py +5 -0
- sqlspec/adapters/adbc/litestar/store.py +504 -0
- sqlspec/adapters/adbc/type_converter.py +44 -50
- sqlspec/adapters/aiosqlite/_types.py +1 -1
- sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/adk/store.py +536 -0
- sqlspec/adapters/aiosqlite/config.py +86 -16
- sqlspec/adapters/aiosqlite/data_dictionary.py +34 -2
- sqlspec/adapters/aiosqlite/driver.py +127 -38
- sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
- sqlspec/adapters/aiosqlite/litestar/store.py +281 -0
- sqlspec/adapters/aiosqlite/pool.py +7 -7
- sqlspec/adapters/asyncmy/__init__.py +7 -1
- sqlspec/adapters/asyncmy/_types.py +1 -1
- sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
- sqlspec/adapters/asyncmy/adk/store.py +503 -0
- sqlspec/adapters/asyncmy/config.py +59 -17
- sqlspec/adapters/asyncmy/data_dictionary.py +41 -2
- sqlspec/adapters/asyncmy/driver.py +293 -62
- sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
- sqlspec/adapters/asyncmy/litestar/store.py +296 -0
- sqlspec/adapters/asyncpg/__init__.py +2 -1
- sqlspec/adapters/asyncpg/_type_handlers.py +71 -0
- sqlspec/adapters/asyncpg/_types.py +11 -7
- sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
- sqlspec/adapters/asyncpg/adk/store.py +460 -0
- sqlspec/adapters/asyncpg/config.py +57 -36
- sqlspec/adapters/asyncpg/data_dictionary.py +48 -2
- sqlspec/adapters/asyncpg/driver.py +153 -23
- sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
- sqlspec/adapters/asyncpg/litestar/store.py +253 -0
- sqlspec/adapters/bigquery/_types.py +1 -1
- sqlspec/adapters/bigquery/adk/__init__.py +5 -0
- sqlspec/adapters/bigquery/adk/store.py +585 -0
- sqlspec/adapters/bigquery/config.py +36 -11
- sqlspec/adapters/bigquery/data_dictionary.py +42 -2
- sqlspec/adapters/bigquery/driver.py +489 -144
- sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
- sqlspec/adapters/bigquery/litestar/store.py +327 -0
- sqlspec/adapters/bigquery/type_converter.py +55 -23
- sqlspec/adapters/duckdb/_types.py +2 -2
- sqlspec/adapters/duckdb/adk/__init__.py +14 -0
- sqlspec/adapters/duckdb/adk/store.py +563 -0
- sqlspec/adapters/duckdb/config.py +79 -21
- sqlspec/adapters/duckdb/data_dictionary.py +41 -2
- sqlspec/adapters/duckdb/driver.py +225 -44
- sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
- sqlspec/adapters/duckdb/litestar/store.py +332 -0
- sqlspec/adapters/duckdb/pool.py +5 -5
- sqlspec/adapters/duckdb/type_converter.py +51 -21
- sqlspec/adapters/oracledb/_numpy_handlers.py +133 -0
- sqlspec/adapters/oracledb/_types.py +20 -2
- sqlspec/adapters/oracledb/adk/__init__.py +5 -0
- sqlspec/adapters/oracledb/adk/store.py +1628 -0
- sqlspec/adapters/oracledb/config.py +120 -36
- sqlspec/adapters/oracledb/data_dictionary.py +87 -20
- sqlspec/adapters/oracledb/driver.py +475 -86
- sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
- sqlspec/adapters/oracledb/litestar/store.py +765 -0
- sqlspec/adapters/oracledb/migrations.py +316 -25
- sqlspec/adapters/oracledb/type_converter.py +91 -16
- sqlspec/adapters/psqlpy/_type_handlers.py +44 -0
- sqlspec/adapters/psqlpy/_types.py +2 -1
- sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
- sqlspec/adapters/psqlpy/adk/store.py +483 -0
- sqlspec/adapters/psqlpy/config.py +45 -19
- sqlspec/adapters/psqlpy/data_dictionary.py +48 -2
- sqlspec/adapters/psqlpy/driver.py +108 -41
- sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
- sqlspec/adapters/psqlpy/litestar/store.py +272 -0
- sqlspec/adapters/psqlpy/type_converter.py +40 -11
- sqlspec/adapters/psycopg/_type_handlers.py +80 -0
- sqlspec/adapters/psycopg/_types.py +2 -1
- sqlspec/adapters/psycopg/adk/__init__.py +5 -0
- sqlspec/adapters/psycopg/adk/store.py +962 -0
- sqlspec/adapters/psycopg/config.py +65 -37
- sqlspec/adapters/psycopg/data_dictionary.py +91 -3
- sqlspec/adapters/psycopg/driver.py +200 -78
- sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
- sqlspec/adapters/psycopg/litestar/store.py +554 -0
- sqlspec/adapters/sqlite/__init__.py +2 -1
- sqlspec/adapters/sqlite/_type_handlers.py +86 -0
- sqlspec/adapters/sqlite/_types.py +1 -1
- sqlspec/adapters/sqlite/adk/__init__.py +5 -0
- sqlspec/adapters/sqlite/adk/store.py +582 -0
- sqlspec/adapters/sqlite/config.py +85 -16
- sqlspec/adapters/sqlite/data_dictionary.py +34 -2
- sqlspec/adapters/sqlite/driver.py +120 -52
- sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
- sqlspec/adapters/sqlite/litestar/store.py +318 -0
- sqlspec/adapters/sqlite/pool.py +5 -5
- sqlspec/base.py +45 -26
- sqlspec/builder/__init__.py +73 -4
- sqlspec/builder/_base.py +91 -58
- sqlspec/builder/_column.py +5 -5
- sqlspec/builder/_ddl.py +98 -89
- sqlspec/builder/_delete.py +5 -4
- sqlspec/builder/_dml.py +388 -0
- sqlspec/{_sql.py → builder/_factory.py} +41 -44
- sqlspec/builder/_insert.py +5 -82
- sqlspec/builder/{mixins/_join_operations.py → _join.py} +145 -143
- sqlspec/builder/_merge.py +446 -11
- sqlspec/builder/_parsing_utils.py +9 -11
- sqlspec/builder/_select.py +1313 -25
- sqlspec/builder/_update.py +11 -42
- sqlspec/cli.py +76 -69
- sqlspec/config.py +331 -62
- sqlspec/core/__init__.py +5 -4
- sqlspec/core/cache.py +18 -18
- sqlspec/core/compiler.py +6 -8
- sqlspec/core/filters.py +55 -47
- sqlspec/core/hashing.py +9 -9
- sqlspec/core/parameters.py +76 -45
- sqlspec/core/result.py +234 -47
- sqlspec/core/splitter.py +16 -17
- sqlspec/core/statement.py +32 -31
- sqlspec/core/type_conversion.py +3 -2
- sqlspec/driver/__init__.py +1 -3
- sqlspec/driver/_async.py +183 -160
- sqlspec/driver/_common.py +197 -109
- sqlspec/driver/_sync.py +189 -161
- sqlspec/driver/mixins/_result_tools.py +20 -236
- sqlspec/driver/mixins/_sql_translator.py +4 -4
- sqlspec/exceptions.py +70 -7
- sqlspec/extensions/adk/__init__.py +53 -0
- sqlspec/extensions/adk/_types.py +51 -0
- sqlspec/extensions/adk/converters.py +172 -0
- sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +144 -0
- sqlspec/extensions/adk/migrations/__init__.py +0 -0
- sqlspec/extensions/adk/service.py +181 -0
- sqlspec/extensions/adk/store.py +536 -0
- sqlspec/extensions/aiosql/adapter.py +69 -61
- sqlspec/extensions/fastapi/__init__.py +21 -0
- sqlspec/extensions/fastapi/extension.py +331 -0
- sqlspec/extensions/fastapi/providers.py +543 -0
- sqlspec/extensions/flask/__init__.py +36 -0
- sqlspec/extensions/flask/_state.py +71 -0
- sqlspec/extensions/flask/_utils.py +40 -0
- sqlspec/extensions/flask/extension.py +389 -0
- sqlspec/extensions/litestar/__init__.py +21 -4
- sqlspec/extensions/litestar/cli.py +54 -10
- sqlspec/extensions/litestar/config.py +56 -266
- sqlspec/extensions/litestar/handlers.py +46 -17
- sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
- sqlspec/extensions/litestar/migrations/__init__.py +3 -0
- sqlspec/extensions/litestar/plugin.py +349 -224
- sqlspec/extensions/litestar/providers.py +25 -25
- sqlspec/extensions/litestar/store.py +265 -0
- sqlspec/extensions/starlette/__init__.py +10 -0
- sqlspec/extensions/starlette/_state.py +25 -0
- sqlspec/extensions/starlette/_utils.py +52 -0
- sqlspec/extensions/starlette/extension.py +254 -0
- sqlspec/extensions/starlette/middleware.py +154 -0
- sqlspec/loader.py +30 -49
- sqlspec/migrations/base.py +200 -76
- sqlspec/migrations/commands.py +591 -62
- sqlspec/migrations/context.py +6 -9
- sqlspec/migrations/fix.py +199 -0
- sqlspec/migrations/loaders.py +47 -19
- sqlspec/migrations/runner.py +241 -75
- sqlspec/migrations/tracker.py +237 -21
- sqlspec/migrations/utils.py +51 -3
- sqlspec/migrations/validation.py +177 -0
- sqlspec/protocols.py +106 -36
- sqlspec/storage/_utils.py +85 -0
- sqlspec/storage/backends/fsspec.py +133 -107
- sqlspec/storage/backends/local.py +78 -51
- sqlspec/storage/backends/obstore.py +276 -168
- sqlspec/storage/registry.py +75 -39
- sqlspec/typing.py +30 -84
- sqlspec/utils/__init__.py +25 -4
- sqlspec/utils/arrow_helpers.py +81 -0
- sqlspec/utils/config_resolver.py +6 -6
- sqlspec/utils/correlation.py +4 -5
- sqlspec/utils/data_transformation.py +3 -2
- sqlspec/utils/deprecation.py +9 -8
- sqlspec/utils/fixtures.py +4 -4
- sqlspec/utils/logging.py +46 -6
- sqlspec/utils/module_loader.py +205 -5
- sqlspec/utils/portal.py +311 -0
- sqlspec/utils/schema.py +288 -0
- sqlspec/utils/serializers.py +113 -4
- sqlspec/utils/sync_tools.py +36 -22
- sqlspec/utils/text.py +1 -2
- sqlspec/utils/type_guards.py +136 -20
- sqlspec/utils/version.py +433 -0
- {sqlspec-0.26.0.dist-info → sqlspec-0.28.0.dist-info}/METADATA +41 -22
- sqlspec-0.28.0.dist-info/RECORD +221 -0
- sqlspec/builder/mixins/__init__.py +0 -55
- sqlspec/builder/mixins/_cte_and_set_ops.py +0 -253
- sqlspec/builder/mixins/_delete_operations.py +0 -50
- sqlspec/builder/mixins/_insert_operations.py +0 -282
- sqlspec/builder/mixins/_merge_operations.py +0 -698
- sqlspec/builder/mixins/_order_limit_operations.py +0 -145
- sqlspec/builder/mixins/_pivot_operations.py +0 -157
- sqlspec/builder/mixins/_select_operations.py +0 -930
- sqlspec/builder/mixins/_update_operations.py +0 -199
- sqlspec/builder/mixins/_where_clause.py +0 -1298
- sqlspec-0.26.0.dist-info/RECORD +0 -157
- sqlspec-0.26.0.dist-info/licenses/NOTICE +0 -29
- {sqlspec-0.26.0.dist-info → sqlspec-0.28.0.dist-info}/WHEEL +0 -0
- {sqlspec-0.26.0.dist-info → sqlspec-0.28.0.dist-info}/entry_points.txt +0 -0
- {sqlspec-0.26.0.dist-info → sqlspec-0.28.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
sqlspec/__init__.py,sha256=VoSce3TTvQLkWC2EHiRpgPDfWNfx5FI3YvYuz21Dw74,2110
|
|
2
|
+
sqlspec/__main__.py,sha256=lXBKZMOXA1uY735Rnsb-GS7aXy0nt22tYmd2X9FcxrY,253
|
|
3
|
+
sqlspec/__metadata__.py,sha256=IUw6MCTy1oeUJ1jAVYbuJLkOWbiAWorZ5W-E-SAD9N4,395
|
|
4
|
+
sqlspec/_serialization.py,sha256=Zy_F7Mirf-OcywJUCFXA9gcM-3ZE1ixXIqN991gunaM,9622
|
|
5
|
+
sqlspec/_typing.py,sha256=_9PVbjdujT3GHwc23NBVfcV7E9694zaKzNyjhJOwpeg,25087
|
|
6
|
+
sqlspec/base.py,sha256=Igt0Veh3T999TgFSxMJN5ivLdoG_uvMK-u7y5UmPtqM,25949
|
|
7
|
+
sqlspec/cli.py,sha256=jVfUxfEmpKW7f3S03zyx3PmGq3pQvt6dUjZdqcgJnTw,25296
|
|
8
|
+
sqlspec/config.py,sha256=nSwXugtDdlQEaRCMrAfOGbuf17ThepyB3hi1cqY-lSY,32468
|
|
9
|
+
sqlspec/exceptions.py,sha256=BXCGbQEG_EGnH8L4DqsgRig5UrHRx6KMJbyB8sAo-6A,7929
|
|
10
|
+
sqlspec/loader.py,sha256=3MJaD-XZVQzuNmkt2P_L8917obECVsuN1bfR0HkK1cc,22828
|
|
11
|
+
sqlspec/protocols.py,sha256=dO6zEQ2rp4o7irlN7zQFaq5ifwqbgV43e8ya24crFfk,15299
|
|
12
|
+
sqlspec/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
|
+
sqlspec/typing.py,sha256=hmniMRgnG4TpsiILFrohyPS5f14Z7ao1Pd4URIz3wJ8,4542
|
|
14
|
+
sqlspec/adapters/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
15
|
+
sqlspec/adapters/adbc/__init__.py,sha256=CqBaEahvHbQ5NxmBJuuCtZ8v5wuaPgbqSSe9WUhglWY,336
|
|
16
|
+
sqlspec/adapters/adbc/_types.py,sha256=xlYCNNNexFVd42Kk9h0QLnmqGdz2crht-HVagxS5-a8,340
|
|
17
|
+
sqlspec/adapters/adbc/config.py,sha256=kJ3AAOfMHO42PsXf80Q83Jxf0oGTXqXJJh_Nm3gtYiY,16251
|
|
18
|
+
sqlspec/adapters/adbc/data_dictionary.py,sha256=uc-VWEnVsa5aJIiS61pIrD5C-iXgg7hLJ-bTK8aEQxg,14415
|
|
19
|
+
sqlspec/adapters/adbc/driver.py,sha256=cepeD6vjyIAfLjiXSE9Rbe-mIzEop7aaUMGNGapqwIw,35105
|
|
20
|
+
sqlspec/adapters/adbc/type_converter.py,sha256=gyOjs9tWa2BR80ihvjmzs0ibv1evtzZUQJ1n5sMJ1EY,5917
|
|
21
|
+
sqlspec/adapters/adbc/adk/__init__.py,sha256=WmvqapJ9vVBSixshpepooO-y3hAVd9QqRy_cAImHCHs,148
|
|
22
|
+
sqlspec/adapters/adbc/adk/store.py,sha256=wUx86nWpUYHUVyOT4-9jc3Mi9aGzhSc3ShjVXS3wXNw,31499
|
|
23
|
+
sqlspec/adapters/adbc/litestar/__init__.py,sha256=6N4cgi35DMciFXYzpEAUVh9nUa20y4_KNAipGao-YdU,131
|
|
24
|
+
sqlspec/adapters/adbc/litestar/store.py,sha256=29bKHD78dfU7-jDRVnF56tGjBmcZk3QOJrmSFAaX7js,18216
|
|
25
|
+
sqlspec/adapters/aiosqlite/__init__.py,sha256=rgooFeHm7IsnC9fOnRQwMvbJdgkTvhnNTYphayVz9q8,869
|
|
26
|
+
sqlspec/adapters/aiosqlite/_types.py,sha256=Nh-bxhE4g-5IRKezmudRNZ7LufEfw2znK5WD7nDiA5I,344
|
|
27
|
+
sqlspec/adapters/aiosqlite/config.py,sha256=S037b4uIea5micK2zzddnC59SLeesBIMYumyywBTOys,11358
|
|
28
|
+
sqlspec/adapters/aiosqlite/data_dictionary.py,sha256=bkCyUk5hQkoNbQC6SAbEIaxTPePTLN9QFsTCIej7swk,5470
|
|
29
|
+
sqlspec/adapters/aiosqlite/driver.py,sha256=5miO6kv505DX0YFxUE3QrJLL9EppE8-FgBtR_dfgBos,13545
|
|
30
|
+
sqlspec/adapters/aiosqlite/pool.py,sha256=7HpvFeKMVRZtSqjKGJ8tTTZQ0zu9GJjt6JPyNmQRCsQ,17102
|
|
31
|
+
sqlspec/adapters/aiosqlite/adk/__init__.py,sha256=VIrNzrWCCFImdP4ShzEv0adz_WuKCtEUcYjI0pkeyUM,168
|
|
32
|
+
sqlspec/adapters/aiosqlite/adk/store.py,sha256=iHd1YtbTd0k2eyxlZcElYkR8hkt8OZFgopJymhysIuo,19215
|
|
33
|
+
sqlspec/adapters/aiosqlite/litestar/__init__.py,sha256=qYKYa2ZnRMX6HhvuyA5q8fLM39YYNPSpHt7L3VnpAZI,151
|
|
34
|
+
sqlspec/adapters/aiosqlite/litestar/store.py,sha256=KeI1qdi7O9jIIpkdd-KOS32nHTWzqHG_STvIIPUl0Lw,9528
|
|
35
|
+
sqlspec/adapters/asyncmy/__init__.py,sha256=4sL0sKKO8yv9FRJV_8TKskDrb9TBTsln-zzZ4Nyz7Vc,604
|
|
36
|
+
sqlspec/adapters/asyncmy/_types.py,sha256=j1RI4KzI5MB0aMoIW4bs2l_ysieL9Sf_dTFNkYCwKAQ,258
|
|
37
|
+
sqlspec/adapters/asyncmy/config.py,sha256=gm6F_NQxDXj770hKF_vwZrRazMcFcRMsq73hDYOZc_o,8763
|
|
38
|
+
sqlspec/adapters/asyncmy/data_dictionary.py,sha256=14zpMltG7MIxo9UMvzc5ih_McLT3xcvQ79K-JanfSI4,5728
|
|
39
|
+
sqlspec/adapters/asyncmy/driver.py,sha256=Re4RCEU35SFnuTRumM-KZgg601BPlB_wMQQfQV4M7bU,22304
|
|
40
|
+
sqlspec/adapters/asyncmy/adk/__init__.py,sha256=zSqQvbgVlIKbzz6PmT7SpIOuF0Uz9XlTMFPscjyI7xU,154
|
|
41
|
+
sqlspec/adapters/asyncmy/adk/store.py,sha256=xXmvr9xaOhYfz0ZX5IlsAYmzEcwvQMTaSYGMd4k9kiI,19885
|
|
42
|
+
sqlspec/adapters/asyncmy/litestar/__init__.py,sha256=VNBusWFPvw4BBLHi7gSSY3S94JxjZ7oJoAavTVvcZ28,143
|
|
43
|
+
sqlspec/adapters/asyncmy/litestar/store.py,sha256=PSRRARvHJFFhPON-cAk6zMB6kiU3MjkefAlPW_8g86E,10877
|
|
44
|
+
sqlspec/adapters/asyncpg/__init__.py,sha256=obt5J2smlKbjkb43nyLnzNnlraAUIwzsi7PiAyowkNc,599
|
|
45
|
+
sqlspec/adapters/asyncpg/_type_handlers.py,sha256=fLW_h1Xbtwkz4ejvWGK2f2eN6sMf62W_MZL3d24sCYo,2632
|
|
46
|
+
sqlspec/adapters/asyncpg/_types.py,sha256=p7WytoO7p7Wd5LHiXMwwz4zkJmPG2kdLAsfQmIRceGw,479
|
|
47
|
+
sqlspec/adapters/asyncpg/config.py,sha256=eN9aS6Zz3z-I9J-JX-5qDhXQJ-onvZ3d_CareBj5a-4,11235
|
|
48
|
+
sqlspec/adapters/asyncpg/data_dictionary.py,sha256=_zP1oU6leCkERgoyG3XUtrDYMODHzk8TFPccuIT0ByQ,6777
|
|
49
|
+
sqlspec/adapters/asyncpg/driver.py,sha256=P69Te_CAVCgIwCjAeMv7t586jWSTO3omR13iuCBi7hg,16363
|
|
50
|
+
sqlspec/adapters/asyncpg/adk/__init__.py,sha256=eLH2mA_g4ZPgsRnC4H2GX5j-q2jgAwncCKVYa58mXhc,128
|
|
51
|
+
sqlspec/adapters/asyncpg/adk/store.py,sha256=GODjv_-VLXa8a3i1pQZF0VvmcR2y9xbgISe-WZKwCAw,18112
|
|
52
|
+
sqlspec/adapters/asyncpg/litestar/__init__.py,sha256=0hAOSZ3sYOtdcpBQWoGh4lKhFQ0XHfwNv0UVa4TjbRA,143
|
|
53
|
+
sqlspec/adapters/asyncpg/litestar/store.py,sha256=B3U4iwBMQilQxoQUScywj4nO8niTTq5d5cnvdUq3qwc,8779
|
|
54
|
+
sqlspec/adapters/bigquery/__init__.py,sha256=1nzkWubO4ZObuK27QoeGfS05ed5v02NU4GaXrvqjlw0,504
|
|
55
|
+
sqlspec/adapters/bigquery/_types.py,sha256=z3sc2sknvbSsOemy999WRy_iFxqTM29TjlEVNQtxotc,244
|
|
56
|
+
sqlspec/adapters/bigquery/config.py,sha256=5wskEW-FEJvYyMPQhAFZI06ouzk-mgGamCSYd0OIuLQ,10882
|
|
57
|
+
sqlspec/adapters/bigquery/data_dictionary.py,sha256=e5gAO_rGxO7slb3u1ZJghoI__8nzQjKCiv0GN1sVC94,5269
|
|
58
|
+
sqlspec/adapters/bigquery/driver.py,sha256=llcwYr4zOIN3ylz9FfK9nB3ac7obvS5Ix3-MywNYUeQ,33173
|
|
59
|
+
sqlspec/adapters/bigquery/type_converter.py,sha256=Ag0W9au_k6qcKFKQVrenUK3fIwdXjdIilRsX8CDtAKE,4095
|
|
60
|
+
sqlspec/adapters/bigquery/adk/__init__.py,sha256=4gdL85tvrCZlg5NTxEWKR3hj6B8MNkUd7aT2dNMvWo8,180
|
|
61
|
+
sqlspec/adapters/bigquery/adk/store.py,sha256=5T-nPPBYCLZBO7dw3QTVdvtmZq6QKBDhshYzI1YtQlQ,24516
|
|
62
|
+
sqlspec/adapters/bigquery/litestar/__init__.py,sha256=LBOWnWxEqc3qwRhuC2hTH2sKrm0hLrOc6U4qAhFOCyM,135
|
|
63
|
+
sqlspec/adapters/bigquery/litestar/store.py,sha256=6acXs8Me_UvHt2CzO9NqDHz3ikrHez1cr9LlJA7otV4,11374
|
|
64
|
+
sqlspec/adapters/duckdb/__init__.py,sha256=c5GCYxhTFhvB8fUTt_d-dipaQfM8X5kv4GsU47SwJ6E,693
|
|
65
|
+
sqlspec/adapters/duckdb/_types.py,sha256=TRR-MEQwq58p_Vfn0Pq-nsVfx4bfoUrCEEwPv46Vjsk,259
|
|
66
|
+
sqlspec/adapters/duckdb/config.py,sha256=wbkGPCfTMGLo-mzJllQdql6Nwe_QElTjqa1FtjYkHLo,12668
|
|
67
|
+
sqlspec/adapters/duckdb/data_dictionary.py,sha256=IZl-R0s37gnjevTJJcEjfMzYBiL0953xGBP2ooFnsUY,5618
|
|
68
|
+
sqlspec/adapters/duckdb/driver.py,sha256=EJL2OWhTZK7jZy96DkmAMSZDGnzvZiG-T3nEx3jWsj4,20461
|
|
69
|
+
sqlspec/adapters/duckdb/pool.py,sha256=73CbyVFnXXgDt6dR1AadGhp0c4x7WjAKdSNDsBz5EXQ,8394
|
|
70
|
+
sqlspec/adapters/duckdb/type_converter.py,sha256=XdzRQgn5Jy-sDxS3Sx-yrjNW6Xrnn_NAWN60MnadGdk,4239
|
|
71
|
+
sqlspec/adapters/duckdb/adk/__init__.py,sha256=9hSx3Wga-uB-zUiB6UYm5xzOrU_xms7AZ1i6zO6bJ_w,462
|
|
72
|
+
sqlspec/adapters/duckdb/adk/store.py,sha256=W2eb9cJfQI2ZAVkGSd4MFcKW-m209bacwhz373ErQ40,20898
|
|
73
|
+
sqlspec/adapters/duckdb/litestar/__init__.py,sha256=iSa3mPZom6bl6Z93FOZAgduLWpZocElSc1dvwbm5uJY,139
|
|
74
|
+
sqlspec/adapters/duckdb/litestar/store.py,sha256=QisjqUCHkKnHTiW1d_fwfEwKKPRFrxq9EK9tbkH37nQ,11346
|
|
75
|
+
sqlspec/adapters/oracledb/__init__.py,sha256=AUsZ8m9tDgNwxv9m4LtkIs9Ib6hOtBrGNm-Ee4HWNq0,843
|
|
76
|
+
sqlspec/adapters/oracledb/_numpy_handlers.py,sha256=UHW5qWPZFYZtE_IjzPojz_79TmmPvuVqj5P_uEUsLL0,3899
|
|
77
|
+
sqlspec/adapters/oracledb/_types.py,sha256=sKXDrq-igpBgqR1HDGF3_IXgMYWWGjHxxvMNOTQUxPA,1112
|
|
78
|
+
sqlspec/adapters/oracledb/config.py,sha256=Re9nSFovVKzVIEZqcuG85ULJdTx5or7jwMdkYSDLS-Y,16186
|
|
79
|
+
sqlspec/adapters/oracledb/data_dictionary.py,sha256=EhzqvaA1T5ZWwF3O-PuqkSkRLUl6H8oiTvwG4N26Txo,18431
|
|
80
|
+
sqlspec/adapters/oracledb/driver.py,sha256=60KuY4w8q_UlFSyHg_h0y6M_ZvyFTk7a2UAymlllNGg,37513
|
|
81
|
+
sqlspec/adapters/oracledb/migrations.py,sha256=SpzRjveh2_uIzCm0ljACaZZElaPhfcOnA4x1NyZMlA4,20512
|
|
82
|
+
sqlspec/adapters/oracledb/type_converter.py,sha256=SuJwZ2Zj8tpfOW-KxiYM_VHSuuMGY_RhBTi6eqfX-Ho,6512
|
|
83
|
+
sqlspec/adapters/oracledb/adk/__init__.py,sha256=SBTIRZvAbwpInepEE0abHFKRDxugLFqaf-j7rZ-nyCQ,186
|
|
84
|
+
sqlspec/adapters/oracledb/adk/store.py,sha256=plwJ_QAlTz2PEOjLD5B23vDZrLX8u9EZgWeVq0UcpCA,60738
|
|
85
|
+
sqlspec/adapters/oracledb/litestar/__init__.py,sha256=5SobanCEiJ2u-EBoy3GSrOp7e7hvPO4TyfbrtgqpQeU,182
|
|
86
|
+
sqlspec/adapters/oracledb/litestar/store.py,sha256=K1ujpffyZ0R47NCO3lYfgs-jPTT89TJzCHf0xxZf4ok,28221
|
|
87
|
+
sqlspec/adapters/psqlpy/__init__.py,sha256=ABve2Oj-G-fxMO8WRJ0XzxEw2cs5H3INDnmUI99l8gc,526
|
|
88
|
+
sqlspec/adapters/psqlpy/_type_handlers.py,sha256=ZWil3zUlX76FTpK488peSxu7ML95jm92f4YeAvWceMI,1409
|
|
89
|
+
sqlspec/adapters/psqlpy/_types.py,sha256=3hq6W7udft_Fwc88yzNYJ1G6D58tDS0cywckU6q52TA,259
|
|
90
|
+
sqlspec/adapters/psqlpy/config.py,sha256=bTqhA1KwDBr-b_xqefrhIGkBRI_guqWwvVMoC4Y2O8c,9134
|
|
91
|
+
sqlspec/adapters/psqlpy/data_dictionary.py,sha256=0pibipxPeGhl7dI6QYs-s0O8jbb312hMBFKMMb0QV3w,6777
|
|
92
|
+
sqlspec/adapters/psqlpy/driver.py,sha256=FKaVQtjBnN7f2Ij7ddL_WNAy5k7W6QtfS42IE-l6M-A,15470
|
|
93
|
+
sqlspec/adapters/psqlpy/type_converter.py,sha256=gKDVddYZ0uZilxuIrrEShG9ghh9lUNnt7LDc5x1flvQ,3322
|
|
94
|
+
sqlspec/adapters/psqlpy/adk/__init__.py,sha256=WDkf6XSBk-4FUsCA7ostSlkS_o_6S41s5ScvRSSeW4o,124
|
|
95
|
+
sqlspec/adapters/psqlpy/adk/store.py,sha256=kusr9bmK1mGwWqJZj2smgysJMNswZ865VExA-V3luAs,19372
|
|
96
|
+
sqlspec/adapters/psqlpy/litestar/__init__.py,sha256=ODTxzJFNmexprYuBZcCxQWsJXPuSYySlr1_Kw6Vj-Sc,139
|
|
97
|
+
sqlspec/adapters/psqlpy/litestar/store.py,sha256=jfVzPPrRl33Fxma42Ud5-wVKei_OCWqpy_biA9CH-P8,9295
|
|
98
|
+
sqlspec/adapters/psycopg/__init__.py,sha256=swmTz8xlj6LvB-i78tBSE_T-sez2e6lFJW2cMzNJEVE,862
|
|
99
|
+
sqlspec/adapters/psycopg/_type_handlers.py,sha256=iD_wXXfwkllKgepKi8odj71eX_tEblMRQnL893NCOfE,2858
|
|
100
|
+
sqlspec/adapters/psycopg/_types.py,sha256=ncc_g5VxYWOZIL6Vhs0BdjrOsWYTpkrRezamjYnc3mg,553
|
|
101
|
+
sqlspec/adapters/psycopg/config.py,sha256=DrdGpbuiPukFX3PyVlL-lznrk41QtFd7rqeAoMleiwk,18066
|
|
102
|
+
sqlspec/adapters/psycopg/data_dictionary.py,sha256=qGe2uifYSW8QtsNOqHnk2fb15xcNbHnRX90WfCpfUxg,12996
|
|
103
|
+
sqlspec/adapters/psycopg/driver.py,sha256=DmjgDnr-4w68DBks1mr1V6Vd5lJuLMj-dYI4zBZ26-4,32282
|
|
104
|
+
sqlspec/adapters/psycopg/adk/__init__.py,sha256=FOREU2erEdgmiG-1V7o9d8Ar6UrwYoS8KvIiH7Vo-ag,181
|
|
105
|
+
sqlspec/adapters/psycopg/adk/store.py,sha256=mc-HkGpyoa-e_aZP2JvU1kSu2bLBhdSKWWoYLS1Kn9M,39229
|
|
106
|
+
sqlspec/adapters/psycopg/litestar/__init__.py,sha256=xFA5YaFgl0hbBE_8MxRjGUDpnx4sPoYQsAMbhZrKkkE,190
|
|
107
|
+
sqlspec/adapters/psycopg/litestar/store.py,sha256=vCpBuBRiUgOrctqTo8NzmzbViGt4yzhEzhK6sBzVziY,19625
|
|
108
|
+
sqlspec/adapters/sqlite/__init__.py,sha256=0uFYe_VL5IwT5bvkH9lUndjPcu8NFArGnQ9nM3AtCTE,624
|
|
109
|
+
sqlspec/adapters/sqlite/_type_handlers.py,sha256=IZJiu5a0CxgnsZe2gVH0HwBLRjcmmzbzD7X_KqrCQ7k,3016
|
|
110
|
+
sqlspec/adapters/sqlite/_types.py,sha256=oYPmPPqBtHAinygPzXVAkZIUV_FU0hbmGAsOaemw1EM,235
|
|
111
|
+
sqlspec/adapters/sqlite/config.py,sha256=vRZOOTKEXuB0ox0lKMZpPQFEAI8AjvE0A5Xiey9OLvo,8206
|
|
112
|
+
sqlspec/adapters/sqlite/data_dictionary.py,sha256=RwG8KfVVl_2i9at02f7VFdkRF9GKk6sUY3rQUj2EKms,5357
|
|
113
|
+
sqlspec/adapters/sqlite/driver.py,sha256=3WUdPjUov4dqfwQ-Jmb0FyZMnEKslpslfWgrp8m27Bs,14904
|
|
114
|
+
sqlspec/adapters/sqlite/pool.py,sha256=dl9AtLrvDKdO78KPy4RimzhOZGzBufFgCBT1-HyX0do,4785
|
|
115
|
+
sqlspec/adapters/sqlite/adk/__init__.py,sha256=nT1sQ9W9PJhcdvgAv-HlnqvLPwMITlT8agl1_s40Ir4,156
|
|
116
|
+
sqlspec/adapters/sqlite/adk/store.py,sha256=ExV_dC7YNy25YhxRHYl1o4j3egrIby8rLjYLvbzmMWs,21329
|
|
117
|
+
sqlspec/adapters/sqlite/litestar/__init__.py,sha256=UFoArqozTzZGoxSCOvAXkxdS2Y1mPjR9WXC62XSlS6I,139
|
|
118
|
+
sqlspec/adapters/sqlite/litestar/store.py,sha256=MaZb2NtEbW47Er2zT_bJMk98r2EkACivrFJwrxK8A1c,10712
|
|
119
|
+
sqlspec/builder/__init__.py,sha256=LqO24DLVjLkSTrrddBJt-QhHpR-1ffdyt7jw60Jt4nk,3255
|
|
120
|
+
sqlspec/builder/_base.py,sha256=kQ_lJIR6FxDMSSLjyYd_vK8bLwpyq3UgJGYNwAOcxHM,23776
|
|
121
|
+
sqlspec/builder/_column.py,sha256=T5yI-Pw3Yw9EBYCib5bCbax3Ozh6hdln8EI7BQ6n2cg,14678
|
|
122
|
+
sqlspec/builder/_ddl.py,sha256=3LfvWDsvN1atwiaLvcWJ8vbk7jmMHqK6Foh-e5o0_gM,58065
|
|
123
|
+
sqlspec/builder/_delete.py,sha256=YNumRMwuVi3VKURgcatW8oIvIMMXcFp9qIiUqph8_hI,2147
|
|
124
|
+
sqlspec/builder/_dml.py,sha256=VE1OOhggo7a7XnV2J4SDU8Q2nd94dT6xMPVBXaalgjw,15675
|
|
125
|
+
sqlspec/builder/_expression_wrappers.py,sha256=HTl8qAFD4sZNXLD2akkJWGCPse2HWS237mTGE4Cx_7I,1244
|
|
126
|
+
sqlspec/builder/_factory.py,sha256=rBI7uA5O1VqkP0qEs5Udho1dRBU_VB82JflB0FYAS3g,44710
|
|
127
|
+
sqlspec/builder/_insert.py,sha256=66TgMqiIscddOrEzwT_SRBli5PV0yZSXMftA_63gcy0,10987
|
|
128
|
+
sqlspec/builder/_join.py,sha256=F4lV_qXGUCBkmtWd_KhSzcEbXKATWvUFGwDiBMjuLp8,13897
|
|
129
|
+
sqlspec/builder/_merge.py,sha256=Dz3JwiUYBKDEtd3dWFhlcACaLvmXNLB_7jaQQeQgdXo,21610
|
|
130
|
+
sqlspec/builder/_parsing_utils.py,sha256=NBrb37TYiy-zNFdHE-RsBl3bfSVb0HUCmaZzsgdz93Q,11890
|
|
131
|
+
sqlspec/builder/_select.py,sha256=201_Ed826ipJqPh7qnGy6ebg5NJfIh8nnYxsAgMrjU0,71340
|
|
132
|
+
sqlspec/builder/_update.py,sha256=bV9WxH884nR8Fy5LxG1ZX2NjHAWhIKCelD6CARGhP0Q,4719
|
|
133
|
+
sqlspec/core/__init__.py,sha256=TmLIXSb1pUDqxxQQwNjl9FZWbWuLn84itmr76F0oI0s,5269
|
|
134
|
+
sqlspec/core/cache.py,sha256=1nkNAuStXN4h2wkCAgByleHKoLx3jbDGKO0kUHJYV7M,22796
|
|
135
|
+
sqlspec/core/compiler.py,sha256=HWVjxGSyjFVHN8eAjTKfxP7e3Y_qhc9NybmCvYvcRh0,14956
|
|
136
|
+
sqlspec/core/filters.py,sha256=STz7d17fhoCeaGH-tJb6H7hKU5jSok_tp1GufGfRBH0,30418
|
|
137
|
+
sqlspec/core/hashing.py,sha256=yAsdHr-Jg4lEjlKEgeqLHZsDtSG8XOdyr1_XnKV-vmo,8475
|
|
138
|
+
sqlspec/core/parameters.py,sha256=DK278ZXXTMWxBhOdUuggoBnncXbnBY9hpuVsQf0VJ3Q,51100
|
|
139
|
+
sqlspec/core/result.py,sha256=bvzHVdV009k5KCikR6eMHo0rkRQ5xhLnVI1EQqTMRsQ,28407
|
|
140
|
+
sqlspec/core/splitter.py,sha256=t0v7ozAKIYuVMuUUoRXXr2uk483FnQPpihdfs4v7hvA,30906
|
|
141
|
+
sqlspec/core/statement.py,sha256=nejnLn1pV5Ao-DYx7qOt0xwJIOHG6G1onOTz-7fl0Nc,30029
|
|
142
|
+
sqlspec/core/type_conversion.py,sha256=jc84xjkVJ9O1KrJ__wiGKb6JIPmwZUG4i8VKreeDrn0,6040
|
|
143
|
+
sqlspec/driver/__init__.py,sha256=8vv4gBOihBjN05ZkT30Bk6RnBK70DQpY7KBGP3TQ_dg,679
|
|
144
|
+
sqlspec/driver/_async.py,sha256=7BmQ9Au3wLFPNxYQRhjRuGUSfuGM8HOsfxzpUwJ3Uj0,22951
|
|
145
|
+
sqlspec/driver/_common.py,sha256=X2fJZcJqAkldudcaZrAmI-BPIpU2Kr0AFlqFNQTkmmo,33078
|
|
146
|
+
sqlspec/driver/_sync.py,sha256=cXxqNgfUU0mVDO93BxKKizFEopUJd0D-ybYMRDZXm2E,22770
|
|
147
|
+
sqlspec/driver/mixins/__init__.py,sha256=gN4pQyJXxNy0xi91dcMJGA7DQ7TbjGjQI24SSpZc6Go,248
|
|
148
|
+
sqlspec/driver/mixins/_result_tools.py,sha256=MYSN34YHPVsSct0h7tYXNNZXXjOycCQAZPymHizRVbs,1940
|
|
149
|
+
sqlspec/driver/mixins/_sql_translator.py,sha256=Tonq6jZsP49C-zvf-UCRy_y4EDWrkT5ikSRXjW0BK1k,3692
|
|
150
|
+
sqlspec/extensions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
151
|
+
sqlspec/extensions/adk/__init__.py,sha256=dss2RuPKgDESTAp3EFTEiMEbvRSnstp1GQemD49RPQE,1793
|
|
152
|
+
sqlspec/extensions/adk/_types.py,sha256=PXwnAZqkQ2MdIvzOXVURLqtB58UvSCuaTyJa_bTR4Rg,1282
|
|
153
|
+
sqlspec/extensions/adk/converters.py,sha256=8VAhnCgZl1Dv-prqGWv86oCJqaW4T8JGF6TsEPVqVxw,5213
|
|
154
|
+
sqlspec/extensions/adk/service.py,sha256=pK1XKhFvbJTcxcyGPq6_3zDqS-Xk-6BA2M1UBZVy53A,5808
|
|
155
|
+
sqlspec/extensions/adk/store.py,sha256=UwOTJba7x2uZtdCMXdoX_wqL2mgT8lh31NojN5zldEE,18474
|
|
156
|
+
sqlspec/extensions/adk/migrations/0001_create_adk_tables.py,sha256=5I1e2eeKm8Ypqb6b6iL3Pz8y9JaptPaYFwFYJPnaphQ,4722
|
|
157
|
+
sqlspec/extensions/adk/migrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
158
|
+
sqlspec/extensions/aiosql/__init__.py,sha256=-9cefc9pYPf9vCgALoB-y1DtmcgRjKe2azfl6RIarAA,414
|
|
159
|
+
sqlspec/extensions/aiosql/adapter.py,sha256=8tDGFtb79hdXN0r-KGCAx-7TMVtb9Gh-1pC60TWR09o,16357
|
|
160
|
+
sqlspec/extensions/fastapi/__init__.py,sha256=yAGZA0-oIxPqqGAXbeKVyqKwkCJq1DW9ShCd7EEbkSg,714
|
|
161
|
+
sqlspec/extensions/fastapi/extension.py,sha256=YYyXGLqsXxxOsTSW13YPoUT8lAvKABS_gJ1oVSuMcNU,12739
|
|
162
|
+
sqlspec/extensions/fastapi/providers.py,sha256=BIeS7c4YC2AqtQ2Cqu7sFfAVQuaRg9ZKD0v7zuHLtZ4,20982
|
|
163
|
+
sqlspec/extensions/flask/__init__.py,sha256=gMnS4_aEKOwNSYgsaawxVHEdhqbC-UdOUoqVRCAvOn8,957
|
|
164
|
+
sqlspec/extensions/flask/_state.py,sha256=xsCXjONQSUNZcDpZ2iMr1Q-ZWd0hs68DblkO4xqVd2E,2120
|
|
165
|
+
sqlspec/extensions/flask/_utils.py,sha256=DpYzTp1AV357S7EVK89ImCbuqNch7AFPjfmrP9dJdTA,1192
|
|
166
|
+
sqlspec/extensions/flask/extension.py,sha256=QQJ35D6y0ur97oD-7Y5CTAZnX3wtNcvJ5RrB8nn0SPQ,14134
|
|
167
|
+
sqlspec/extensions/litestar/__init__.py,sha256=jKafxBsk88967GgaZq5qT4LU3WPTx_Fs8Gx61W8FvdA,600
|
|
168
|
+
sqlspec/extensions/litestar/_utils.py,sha256=iaicqnnkC5CuDwJKStz0T7lFaYMrgR96SYKZpe71v2g,1950
|
|
169
|
+
sqlspec/extensions/litestar/cli.py,sha256=DRfkSSrBvQRIlEbigVNM2YNquPxRv3v9_xHJkBSl5tw,3082
|
|
170
|
+
sqlspec/extensions/litestar/config.py,sha256=GCmBduLE16Ms4TW0Kicv50mn-oXj8TvDt7Mn61bIf6g,1984
|
|
171
|
+
sqlspec/extensions/litestar/handlers.py,sha256=mDHV7lTWvOmu9l93XpFXSsp0AATQShikfkaT9wQo7io,11430
|
|
172
|
+
sqlspec/extensions/litestar/plugin.py,sha256=-FPvHhcdjs6nmanS5sH3FBq2MMgqGsf6xJC_U7hdL24,21769
|
|
173
|
+
sqlspec/extensions/litestar/providers.py,sha256=dWteii3K4k4v-g_ss2wwz5BhJW95WZs4fxS5uvgtMeI,18760
|
|
174
|
+
sqlspec/extensions/litestar/store.py,sha256=P-jgaNFSwZuDZ4NPpK4CN2VosRdWqOhecRie2ZGN9tU,8436
|
|
175
|
+
sqlspec/extensions/litestar/migrations/0001_create_session_table.py,sha256=HKOPlSqjRnJ-E8jKs6yKG6d-MpwfZ9tTp6zFEb-DoOM,4456
|
|
176
|
+
sqlspec/extensions/litestar/migrations/__init__.py,sha256=eqGG1LOq1GcLb6ggOJA__7MvoikTtALV_9oTTFuM4QQ,78
|
|
177
|
+
sqlspec/extensions/starlette/__init__.py,sha256=TotSnEGMjngfN8vsyOHPFYbZ8PaR-9ogIszlDAuL-Kk,449
|
|
178
|
+
sqlspec/extensions/starlette/_state.py,sha256=ORMI8JG0w643uxj60Zvd6s49orclKGhxYNdPwLnV5N8,704
|
|
179
|
+
sqlspec/extensions/starlette/_utils.py,sha256=zTO59cL5Bgf7EiALPY5VoDuf36mGnp-VlrjSC8tT-58,1650
|
|
180
|
+
sqlspec/extensions/starlette/extension.py,sha256=hgo5FsRmtexo_TILhs5ZIKp_BFIsXg_fUVrIonEUOZE,9159
|
|
181
|
+
sqlspec/extensions/starlette/middleware.py,sha256=xbl4nTLur_9aaSqwX5TEh38RWyHyoXew2Tbo6dEI3zM,5436
|
|
182
|
+
sqlspec/migrations/__init__.py,sha256=Q6FIb529_Eeym_eLyVgRRVeT512iBzwTPGv99okf2_Q,1127
|
|
183
|
+
sqlspec/migrations/base.py,sha256=3nfBsp0pV6-l5MNAHGLtoqPFETQYaGh09A1q9cpih4U,23594
|
|
184
|
+
sqlspec/migrations/commands.py,sha256=k4BAmYeD4OPM48-cEdNFLd-MlHkW7sht5lDsTaNTR-g,40321
|
|
185
|
+
sqlspec/migrations/context.py,sha256=wHfsJa2YSpAe1shkodnhr93J_zuB0qngCn-vNOoNgss,4861
|
|
186
|
+
sqlspec/migrations/fix.py,sha256=oP0XP3Mu6SXNjivHww9WY6JXDb2H0aKyHgUP44hnWQE,6973
|
|
187
|
+
sqlspec/migrations/loaders.py,sha256=Ys9CUVp5t7aGAMXvByqAzXDrhpvhex6zukO6rmR2phM,15305
|
|
188
|
+
sqlspec/migrations/runner.py,sha256=8z_gMYY8UF-AR_5-MXVXCMrdk17e2QiqHl92GDgSgm4,28767
|
|
189
|
+
sqlspec/migrations/tracker.py,sha256=VhoiTpYiTI1YHadhbOmnM4UOq2sY1YyvBhaxRbIEP4A,15531
|
|
190
|
+
sqlspec/migrations/utils.py,sha256=nKzpukPmSqy7ABdhRaCoib6Ls8G6q8Ou7CyocTu6l1w,5128
|
|
191
|
+
sqlspec/migrations/validation.py,sha256=WsxngSRj8jzbfXoEuseDTFgPBbYrEx-lHVHlYJ7svy8,6017
|
|
192
|
+
sqlspec/storage/__init__.py,sha256=IX7xLuymGdQKOBQL1sNEA-bzZRJGjncUbQbs6ZToDDE,395
|
|
193
|
+
sqlspec/storage/_utils.py,sha256=WKg0CxQ84DOsI6ixXjY3tCCgB682pm51v8QMYX4ItcI,2624
|
|
194
|
+
sqlspec/storage/registry.py,sha256=CWMpB-zLa1ztiIcsliIw3hRi2Mmz8-s2VPwVbOI7_4E,12226
|
|
195
|
+
sqlspec/storage/backends/__init__.py,sha256=3oSqwEQ_trU2QoxtUTX-5IFeOvo7WGcESY6gIfcmSaE,24
|
|
196
|
+
sqlspec/storage/backends/base.py,sha256=KS2JRZILoH_R_xsfKtYkqQ5a1r5OOBDSE5KbibTmhGY,5730
|
|
197
|
+
sqlspec/storage/backends/fsspec.py,sha256=kmOpz6xh5KpwLA18im8fcGgUPdCsBIns9CuVzyv4QKs,14985
|
|
198
|
+
sqlspec/storage/backends/local.py,sha256=1Z_tdCYBJl31DOeqxDLlyCvFhGnjaB2CJcCo0-3a43A,13240
|
|
199
|
+
sqlspec/storage/backends/obstore.py,sha256=LKLKCEXBdsoEJld-uqttjanlNKMka7FVfyxSEGyK1lM,25147
|
|
200
|
+
sqlspec/utils/__init__.py,sha256=YnVNg8eg6gF7g1oU0zjfFr8EiSIoNhWw7ixAkrL_O-M,639
|
|
201
|
+
sqlspec/utils/arrow_helpers.py,sha256=rsYeGdxc_0Np0tg8O8exCQ2LK9tL13ZMqGSbQzEcGXY,2708
|
|
202
|
+
sqlspec/utils/config_resolver.py,sha256=bcq30KohF-0zQ15u2QfCdF8AGTRxeB4RaKNs7DpbiLA,5446
|
|
203
|
+
sqlspec/utils/correlation.py,sha256=zZhB8k9w1gBne7Gp6DtrlKBodu5wdS4_ZUfnXqnhUSw,4190
|
|
204
|
+
sqlspec/utils/data_transformation.py,sha256=Eh8lcJ9M3WG3dfyI4R2DDZ2pmXSbbQ3mklHO8DjGqqU,3961
|
|
205
|
+
sqlspec/utils/deprecation.py,sha256=bpNYZkL_2mx9VIwet3579CGRuyOGCclMjGcZShoU2PY,3976
|
|
206
|
+
sqlspec/utils/fixtures.py,sha256=dX__GaKHWD19A-De7Dahv4UJnvEF11pcGzocpHkYdYU,9419
|
|
207
|
+
sqlspec/utils/logging.py,sha256=PK0SFRjfEwAn1eFPdtl0WeCO0h-7S2mGwyMSlnRmPGA,5016
|
|
208
|
+
sqlspec/utils/module_loader.py,sha256=a9-kFoQYTLxVK9GXJcyvcW1pYGGPHm1q4U1DLDQc2IU,8391
|
|
209
|
+
sqlspec/utils/portal.py,sha256=Iiz8GDHQuDEulV4XEuqOA4hCR0fYH1QJ68YLRktnOGo,9906
|
|
210
|
+
sqlspec/utils/schema.py,sha256=Kby4KwWIof-6uyU53YI_AitfejPndElhDq4V4PY8QNI,9470
|
|
211
|
+
sqlspec/utils/serializers.py,sha256=mt5NlbUVPaowuzNH1UgcFtCN8dsEWIa4Xn-P6O-wcEc,4441
|
|
212
|
+
sqlspec/utils/singleton.py,sha256=-j-s6LS0pP_wTEUYIyK2wSdoeIE_tn7O7B-j7_aODRQ,1252
|
|
213
|
+
sqlspec/utils/sync_tools.py,sha256=07Sg4dIjrDPFMOG_lO51WBk6bmX8u4pNwuyXtRv09S8,9526
|
|
214
|
+
sqlspec/utils/text.py,sha256=M_el3hgcSF-gFrFgHWmv4e3u4nvmsXpOolDBuVoMaRs,3302
|
|
215
|
+
sqlspec/utils/type_guards.py,sha256=b5pIhKoweIYRGJfZLeN8szlJuxLd_ciSqtdxpg4YWEE,36721
|
|
216
|
+
sqlspec/utils/version.py,sha256=8hKa0dGVNcJ6hRFhabM5U6haCUQGNBJg5LCe0pEbi6A,13767
|
|
217
|
+
sqlspec-0.28.0.dist-info/METADATA,sha256=Mu5_zg6asxX9YVWezzAl4AbDKs16WYYkrq-MH_zGMPM,24219
|
|
218
|
+
sqlspec-0.28.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
219
|
+
sqlspec-0.28.0.dist-info/entry_points.txt,sha256=G-ZqY1Nuuw3Iys7nXw23f6ILenk_Lt47VdK2mhJCWHg,53
|
|
220
|
+
sqlspec-0.28.0.dist-info/licenses/LICENSE,sha256=MdujfZ6l5HuLz4mElxlu049itenOR3gnhN1_Nd3nVcM,1078
|
|
221
|
+
sqlspec-0.28.0.dist-info/RECORD,,
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
"""SQL statement builder mixins."""
|
|
2
|
-
|
|
3
|
-
from sqlspec.builder.mixins._cte_and_set_ops import CommonTableExpressionMixin, SetOperationMixin
|
|
4
|
-
from sqlspec.builder.mixins._delete_operations import DeleteFromClauseMixin
|
|
5
|
-
from sqlspec.builder.mixins._insert_operations import InsertFromSelectMixin, InsertIntoClauseMixin, InsertValuesMixin
|
|
6
|
-
from sqlspec.builder.mixins._join_operations import JoinClauseMixin
|
|
7
|
-
from sqlspec.builder.mixins._merge_operations import (
|
|
8
|
-
MergeIntoClauseMixin,
|
|
9
|
-
MergeMatchedClauseMixin,
|
|
10
|
-
MergeNotMatchedBySourceClauseMixin,
|
|
11
|
-
MergeNotMatchedClauseMixin,
|
|
12
|
-
MergeOnClauseMixin,
|
|
13
|
-
MergeUsingClauseMixin,
|
|
14
|
-
)
|
|
15
|
-
from sqlspec.builder.mixins._order_limit_operations import (
|
|
16
|
-
LimitOffsetClauseMixin,
|
|
17
|
-
OrderByClauseMixin,
|
|
18
|
-
ReturningClauseMixin,
|
|
19
|
-
)
|
|
20
|
-
from sqlspec.builder.mixins._pivot_operations import PivotClauseMixin, UnpivotClauseMixin
|
|
21
|
-
from sqlspec.builder.mixins._select_operations import CaseBuilder, SelectClauseMixin
|
|
22
|
-
from sqlspec.builder.mixins._update_operations import (
|
|
23
|
-
UpdateFromClauseMixin,
|
|
24
|
-
UpdateSetClauseMixin,
|
|
25
|
-
UpdateTableClauseMixin,
|
|
26
|
-
)
|
|
27
|
-
from sqlspec.builder.mixins._where_clause import HavingClauseMixin, WhereClauseMixin
|
|
28
|
-
|
|
29
|
-
__all__ = (
|
|
30
|
-
"CaseBuilder",
|
|
31
|
-
"CommonTableExpressionMixin",
|
|
32
|
-
"DeleteFromClauseMixin",
|
|
33
|
-
"HavingClauseMixin",
|
|
34
|
-
"InsertFromSelectMixin",
|
|
35
|
-
"InsertIntoClauseMixin",
|
|
36
|
-
"InsertValuesMixin",
|
|
37
|
-
"JoinClauseMixin",
|
|
38
|
-
"LimitOffsetClauseMixin",
|
|
39
|
-
"MergeIntoClauseMixin",
|
|
40
|
-
"MergeMatchedClauseMixin",
|
|
41
|
-
"MergeNotMatchedBySourceClauseMixin",
|
|
42
|
-
"MergeNotMatchedClauseMixin",
|
|
43
|
-
"MergeOnClauseMixin",
|
|
44
|
-
"MergeUsingClauseMixin",
|
|
45
|
-
"OrderByClauseMixin",
|
|
46
|
-
"PivotClauseMixin",
|
|
47
|
-
"ReturningClauseMixin",
|
|
48
|
-
"SelectClauseMixin",
|
|
49
|
-
"SetOperationMixin",
|
|
50
|
-
"UnpivotClauseMixin",
|
|
51
|
-
"UpdateFromClauseMixin",
|
|
52
|
-
"UpdateSetClauseMixin",
|
|
53
|
-
"UpdateTableClauseMixin",
|
|
54
|
-
"WhereClauseMixin",
|
|
55
|
-
)
|
|
@@ -1,253 +0,0 @@
|
|
|
1
|
-
# pyright: reportPrivateUsage=false
|
|
2
|
-
"""CTE and set operation mixins.
|
|
3
|
-
|
|
4
|
-
Provides mixins for Common Table Expressions (WITH clause) and
|
|
5
|
-
set operations (UNION, INTERSECT, EXCEPT).
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from typing import TYPE_CHECKING, Any, Optional, Union, cast
|
|
9
|
-
|
|
10
|
-
from mypy_extensions import trait
|
|
11
|
-
from sqlglot import exp
|
|
12
|
-
from typing_extensions import Self
|
|
13
|
-
|
|
14
|
-
from sqlspec.exceptions import SQLBuilderError
|
|
15
|
-
|
|
16
|
-
if TYPE_CHECKING:
|
|
17
|
-
from sqlspec.builder._base import QueryBuilder
|
|
18
|
-
|
|
19
|
-
__all__ = ("CommonTableExpressionMixin", "SetOperationMixin")
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
@trait
|
|
23
|
-
class CommonTableExpressionMixin:
|
|
24
|
-
"""Mixin providing WITH clause (Common Table Expressions) support for SQL builders."""
|
|
25
|
-
|
|
26
|
-
__slots__ = ()
|
|
27
|
-
|
|
28
|
-
# Type annotations for PyRight - these will be provided by the base class
|
|
29
|
-
def get_expression(self) -> Optional[exp.Expression]: ...
|
|
30
|
-
def set_expression(self, expression: exp.Expression) -> None: ...
|
|
31
|
-
|
|
32
|
-
_with_ctes: Any # Provided by QueryBuilder
|
|
33
|
-
dialect: Any # Provided by QueryBuilder
|
|
34
|
-
|
|
35
|
-
def add_parameter(self, value: Any, name: Optional[str] = None) -> tuple[Any, str]:
|
|
36
|
-
"""Add parameter - provided by QueryBuilder."""
|
|
37
|
-
msg = "Method must be provided by QueryBuilder subclass"
|
|
38
|
-
raise NotImplementedError(msg)
|
|
39
|
-
|
|
40
|
-
def _generate_unique_parameter_name(self, base_name: str) -> str:
|
|
41
|
-
"""Generate unique parameter name - provided by QueryBuilder."""
|
|
42
|
-
msg = "Method must be provided by QueryBuilder subclass"
|
|
43
|
-
raise NotImplementedError(msg)
|
|
44
|
-
|
|
45
|
-
def _update_placeholders_in_expression(
|
|
46
|
-
self, expression: exp.Expression, param_mapping: dict[str, str]
|
|
47
|
-
) -> exp.Expression:
|
|
48
|
-
"""Update parameter placeholders - provided by QueryBuilder."""
|
|
49
|
-
msg = "Method must be provided by QueryBuilder subclass"
|
|
50
|
-
raise NotImplementedError(msg)
|
|
51
|
-
|
|
52
|
-
def with_(
|
|
53
|
-
self, name: str, query: Union[Any, str], recursive: bool = False, columns: Optional[list[str]] = None
|
|
54
|
-
) -> Self:
|
|
55
|
-
"""Add WITH clause (Common Table Expression).
|
|
56
|
-
|
|
57
|
-
Args:
|
|
58
|
-
name: The name of the CTE.
|
|
59
|
-
query: The query for the CTE (builder instance or SQL string).
|
|
60
|
-
recursive: Whether this is a recursive CTE.
|
|
61
|
-
columns: Optional column names for the CTE.
|
|
62
|
-
|
|
63
|
-
Raises:
|
|
64
|
-
SQLBuilderError: If the query type is unsupported.
|
|
65
|
-
|
|
66
|
-
Returns:
|
|
67
|
-
The current builder instance for method chaining.
|
|
68
|
-
"""
|
|
69
|
-
builder = cast("QueryBuilder", self)
|
|
70
|
-
expression = builder.get_expression()
|
|
71
|
-
if expression is None:
|
|
72
|
-
msg = "Cannot add WITH clause: expression not initialized."
|
|
73
|
-
raise SQLBuilderError(msg)
|
|
74
|
-
|
|
75
|
-
if not isinstance(expression, (exp.Select, exp.Insert, exp.Update, exp.Delete)):
|
|
76
|
-
msg = f"Cannot add WITH clause to {type(expression).__name__} expression."
|
|
77
|
-
raise SQLBuilderError(msg)
|
|
78
|
-
|
|
79
|
-
cte_expr: Optional[exp.Expression] = None
|
|
80
|
-
if isinstance(query, str):
|
|
81
|
-
cte_expr = exp.maybe_parse(query, dialect=self.dialect)
|
|
82
|
-
elif isinstance(query, exp.Expression):
|
|
83
|
-
cte_expr = query
|
|
84
|
-
else:
|
|
85
|
-
built_query = query.to_statement()
|
|
86
|
-
cte_sql = built_query.sql
|
|
87
|
-
cte_expr = exp.maybe_parse(cte_sql, dialect=self.dialect)
|
|
88
|
-
|
|
89
|
-
parameters = built_query.parameters
|
|
90
|
-
if parameters:
|
|
91
|
-
if isinstance(parameters, dict):
|
|
92
|
-
param_mapping = {}
|
|
93
|
-
for param_name, param_value in parameters.items():
|
|
94
|
-
unique_name = self._generate_unique_parameter_name(f"{name}_{param_name}")
|
|
95
|
-
param_mapping[param_name] = unique_name
|
|
96
|
-
self.add_parameter(param_value, name=unique_name)
|
|
97
|
-
|
|
98
|
-
# Update placeholders in the parsed expression
|
|
99
|
-
if cte_expr and param_mapping:
|
|
100
|
-
cte_expr = self._update_placeholders_in_expression(cte_expr, param_mapping)
|
|
101
|
-
elif isinstance(parameters, (list, tuple)):
|
|
102
|
-
for param_value in parameters:
|
|
103
|
-
self.add_parameter(param_value)
|
|
104
|
-
|
|
105
|
-
if not cte_expr:
|
|
106
|
-
msg = f"Could not parse CTE query: {query}"
|
|
107
|
-
raise SQLBuilderError(msg)
|
|
108
|
-
|
|
109
|
-
if columns:
|
|
110
|
-
cte_alias_expr = exp.alias_(cte_expr, name, table=[exp.to_identifier(col) for col in columns])
|
|
111
|
-
else:
|
|
112
|
-
cte_alias_expr = exp.alias_(cte_expr, name)
|
|
113
|
-
|
|
114
|
-
existing_with = expression.args.get("with")
|
|
115
|
-
if existing_with:
|
|
116
|
-
existing_with.expressions.append(cte_alias_expr)
|
|
117
|
-
if recursive:
|
|
118
|
-
existing_with.set("recursive", recursive)
|
|
119
|
-
else:
|
|
120
|
-
if isinstance(expression, (exp.Select, exp.Insert, exp.Update)):
|
|
121
|
-
updated_expression = expression.with_(cte_alias_expr, as_=name, copy=False)
|
|
122
|
-
builder.set_expression(updated_expression)
|
|
123
|
-
if recursive:
|
|
124
|
-
with_clause = updated_expression.find(exp.With)
|
|
125
|
-
if with_clause:
|
|
126
|
-
with_clause.set("recursive", recursive)
|
|
127
|
-
self._with_ctes[name] = exp.CTE(this=cte_expr, alias=exp.to_table(name))
|
|
128
|
-
|
|
129
|
-
return self
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
@trait
|
|
133
|
-
class SetOperationMixin:
|
|
134
|
-
"""Mixin providing set operations (UNION, INTERSECT, EXCEPT) for SELECT builders."""
|
|
135
|
-
|
|
136
|
-
__slots__ = ()
|
|
137
|
-
|
|
138
|
-
# Type annotations for PyRight - these will be provided by the base class
|
|
139
|
-
def get_expression(self) -> Optional[exp.Expression]: ...
|
|
140
|
-
def set_expression(self, expression: exp.Expression) -> None: ...
|
|
141
|
-
def set_parameters(self, parameters: "dict[str, Any]") -> None: ...
|
|
142
|
-
|
|
143
|
-
dialect: Any = None
|
|
144
|
-
|
|
145
|
-
def build(self) -> Any:
|
|
146
|
-
"""Build the query - provided by QueryBuilder."""
|
|
147
|
-
msg = "Method must be provided by QueryBuilder subclass"
|
|
148
|
-
raise NotImplementedError(msg)
|
|
149
|
-
|
|
150
|
-
def union(self, other: Any, all_: bool = False) -> Self:
|
|
151
|
-
"""Combine this query with another using UNION.
|
|
152
|
-
|
|
153
|
-
Args:
|
|
154
|
-
other: Another SelectBuilder or compatible builder to union with.
|
|
155
|
-
all_: If True, use UNION ALL instead of UNION.
|
|
156
|
-
|
|
157
|
-
Raises:
|
|
158
|
-
SQLBuilderError: If the current expression is not a SELECT statement.
|
|
159
|
-
|
|
160
|
-
Returns:
|
|
161
|
-
The new builder instance for the union query.
|
|
162
|
-
"""
|
|
163
|
-
left_query = self.build()
|
|
164
|
-
right_query = other.build()
|
|
165
|
-
left_expr: Optional[exp.Expression] = exp.maybe_parse(left_query.sql, dialect=self.dialect)
|
|
166
|
-
right_expr: Optional[exp.Expression] = exp.maybe_parse(right_query.sql, dialect=self.dialect)
|
|
167
|
-
if not left_expr or not right_expr:
|
|
168
|
-
msg = "Could not parse queries for UNION operation"
|
|
169
|
-
raise SQLBuilderError(msg)
|
|
170
|
-
union_expr = exp.union(left_expr, right_expr, distinct=not all_)
|
|
171
|
-
new_builder = type(self)()
|
|
172
|
-
new_builder.dialect = self.dialect
|
|
173
|
-
cast("QueryBuilder", new_builder).set_expression(union_expr)
|
|
174
|
-
merged_parameters = dict(left_query.parameters)
|
|
175
|
-
for param_name, param_value in right_query.parameters.items():
|
|
176
|
-
if param_name in merged_parameters:
|
|
177
|
-
counter = 1
|
|
178
|
-
new_param_name = f"{param_name}_right_{counter}"
|
|
179
|
-
while new_param_name in merged_parameters:
|
|
180
|
-
counter += 1
|
|
181
|
-
new_param_name = f"{param_name}_right_{counter}"
|
|
182
|
-
|
|
183
|
-
def rename_parameter(
|
|
184
|
-
node: exp.Expression, old_name: str = param_name, new_name: str = new_param_name
|
|
185
|
-
) -> exp.Expression:
|
|
186
|
-
if isinstance(node, exp.Placeholder) and node.name == old_name:
|
|
187
|
-
return exp.Placeholder(this=new_name)
|
|
188
|
-
return node
|
|
189
|
-
|
|
190
|
-
right_expr = right_expr.transform(rename_parameter)
|
|
191
|
-
union_expr = exp.union(left_expr, right_expr, distinct=not all_)
|
|
192
|
-
cast("QueryBuilder", new_builder).set_expression(union_expr)
|
|
193
|
-
merged_parameters[new_param_name] = param_value
|
|
194
|
-
else:
|
|
195
|
-
merged_parameters[param_name] = param_value
|
|
196
|
-
new_builder.set_parameters(merged_parameters)
|
|
197
|
-
return new_builder
|
|
198
|
-
|
|
199
|
-
def intersect(self, other: Any) -> Self:
|
|
200
|
-
"""Add INTERSECT clause.
|
|
201
|
-
|
|
202
|
-
Args:
|
|
203
|
-
other: Another SelectBuilder or compatible builder to intersect with.
|
|
204
|
-
|
|
205
|
-
Raises:
|
|
206
|
-
SQLBuilderError: If the current expression is not a SELECT statement.
|
|
207
|
-
|
|
208
|
-
Returns:
|
|
209
|
-
The new builder instance for the intersect query.
|
|
210
|
-
"""
|
|
211
|
-
left_query = self.build()
|
|
212
|
-
right_query = other.build()
|
|
213
|
-
left_expr: Optional[exp.Expression] = exp.maybe_parse(left_query.sql, dialect=self.dialect)
|
|
214
|
-
right_expr: Optional[exp.Expression] = exp.maybe_parse(right_query.sql, dialect=self.dialect)
|
|
215
|
-
if not left_expr or not right_expr:
|
|
216
|
-
msg = "Could not parse queries for INTERSECT operation"
|
|
217
|
-
raise SQLBuilderError(msg)
|
|
218
|
-
intersect_expr = exp.intersect(left_expr, right_expr, distinct=True)
|
|
219
|
-
new_builder = type(self)()
|
|
220
|
-
new_builder.dialect = self.dialect
|
|
221
|
-
cast("QueryBuilder", new_builder).set_expression(intersect_expr)
|
|
222
|
-
merged_parameters = dict(left_query.parameters)
|
|
223
|
-
merged_parameters.update(right_query.parameters)
|
|
224
|
-
new_builder.set_parameters(merged_parameters)
|
|
225
|
-
return new_builder
|
|
226
|
-
|
|
227
|
-
def except_(self, other: Any) -> Self:
|
|
228
|
-
"""Combine this query with another using EXCEPT.
|
|
229
|
-
|
|
230
|
-
Args:
|
|
231
|
-
other: Another SelectBuilder or compatible builder to except with.
|
|
232
|
-
|
|
233
|
-
Raises:
|
|
234
|
-
SQLBuilderError: If the current expression is not a SELECT statement.
|
|
235
|
-
|
|
236
|
-
Returns:
|
|
237
|
-
The new builder instance for the except query.
|
|
238
|
-
"""
|
|
239
|
-
left_query = self.build()
|
|
240
|
-
right_query = other.build()
|
|
241
|
-
left_expr: Optional[exp.Expression] = exp.maybe_parse(left_query.sql, dialect=self.dialect)
|
|
242
|
-
right_expr: Optional[exp.Expression] = exp.maybe_parse(right_query.sql, dialect=self.dialect)
|
|
243
|
-
if not left_expr or not right_expr:
|
|
244
|
-
msg = "Could not parse queries for EXCEPT operation"
|
|
245
|
-
raise SQLBuilderError(msg)
|
|
246
|
-
except_expr = exp.except_(left_expr, right_expr)
|
|
247
|
-
new_builder = type(self)()
|
|
248
|
-
new_builder.dialect = self.dialect
|
|
249
|
-
cast("QueryBuilder", new_builder).set_expression(except_expr)
|
|
250
|
-
merged_parameters = dict(left_query.parameters)
|
|
251
|
-
merged_parameters.update(right_query.parameters)
|
|
252
|
-
new_builder.set_parameters(merged_parameters)
|
|
253
|
-
return new_builder
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
# pyright: reportPrivateUsage=false
|
|
2
|
-
"""DELETE operation mixins.
|
|
3
|
-
|
|
4
|
-
Provides mixins for DELETE statement functionality including
|
|
5
|
-
FROM clause specification.
|
|
6
|
-
"""
|
|
7
|
-
|
|
8
|
-
from typing import Optional
|
|
9
|
-
|
|
10
|
-
from mypy_extensions import trait
|
|
11
|
-
from sqlglot import exp
|
|
12
|
-
from typing_extensions import Self
|
|
13
|
-
|
|
14
|
-
from sqlspec.exceptions import SQLBuilderError
|
|
15
|
-
|
|
16
|
-
__all__ = ("DeleteFromClauseMixin",)
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
@trait
|
|
20
|
-
class DeleteFromClauseMixin:
|
|
21
|
-
"""Mixin providing FROM clause for DELETE builders."""
|
|
22
|
-
|
|
23
|
-
__slots__ = ()
|
|
24
|
-
|
|
25
|
-
# Type annotations for PyRight - these will be provided by the base class
|
|
26
|
-
def get_expression(self) -> Optional[exp.Expression]: ...
|
|
27
|
-
def set_expression(self, expression: exp.Expression) -> None: ...
|
|
28
|
-
|
|
29
|
-
def from_(self, table: str) -> Self:
|
|
30
|
-
"""Set the target table for the DELETE statement.
|
|
31
|
-
|
|
32
|
-
Args:
|
|
33
|
-
table: The table name to delete from.
|
|
34
|
-
|
|
35
|
-
Returns:
|
|
36
|
-
The current builder instance for method chaining.
|
|
37
|
-
"""
|
|
38
|
-
current_expr = self.get_expression()
|
|
39
|
-
if current_expr is None:
|
|
40
|
-
self.set_expression(exp.Delete())
|
|
41
|
-
current_expr = self.get_expression()
|
|
42
|
-
|
|
43
|
-
if not isinstance(current_expr, exp.Delete):
|
|
44
|
-
current_expr_type = type(current_expr).__name__
|
|
45
|
-
msg = f"Base expression for Delete is {current_expr_type}, expected Delete."
|
|
46
|
-
raise SQLBuilderError(msg)
|
|
47
|
-
|
|
48
|
-
setattr(self, "_table", table)
|
|
49
|
-
current_expr.set("this", exp.to_table(table))
|
|
50
|
-
return self
|