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.

Files changed (212) hide show
  1. sqlspec/__init__.py +7 -15
  2. sqlspec/_serialization.py +55 -25
  3. sqlspec/_typing.py +155 -52
  4. sqlspec/adapters/adbc/_types.py +1 -1
  5. sqlspec/adapters/adbc/adk/__init__.py +5 -0
  6. sqlspec/adapters/adbc/adk/store.py +880 -0
  7. sqlspec/adapters/adbc/config.py +62 -12
  8. sqlspec/adapters/adbc/data_dictionary.py +74 -2
  9. sqlspec/adapters/adbc/driver.py +226 -58
  10. sqlspec/adapters/adbc/litestar/__init__.py +5 -0
  11. sqlspec/adapters/adbc/litestar/store.py +504 -0
  12. sqlspec/adapters/adbc/type_converter.py +44 -50
  13. sqlspec/adapters/aiosqlite/_types.py +1 -1
  14. sqlspec/adapters/aiosqlite/adk/__init__.py +5 -0
  15. sqlspec/adapters/aiosqlite/adk/store.py +536 -0
  16. sqlspec/adapters/aiosqlite/config.py +86 -16
  17. sqlspec/adapters/aiosqlite/data_dictionary.py +34 -2
  18. sqlspec/adapters/aiosqlite/driver.py +127 -38
  19. sqlspec/adapters/aiosqlite/litestar/__init__.py +5 -0
  20. sqlspec/adapters/aiosqlite/litestar/store.py +281 -0
  21. sqlspec/adapters/aiosqlite/pool.py +7 -7
  22. sqlspec/adapters/asyncmy/__init__.py +7 -1
  23. sqlspec/adapters/asyncmy/_types.py +1 -1
  24. sqlspec/adapters/asyncmy/adk/__init__.py +5 -0
  25. sqlspec/adapters/asyncmy/adk/store.py +503 -0
  26. sqlspec/adapters/asyncmy/config.py +59 -17
  27. sqlspec/adapters/asyncmy/data_dictionary.py +41 -2
  28. sqlspec/adapters/asyncmy/driver.py +293 -62
  29. sqlspec/adapters/asyncmy/litestar/__init__.py +5 -0
  30. sqlspec/adapters/asyncmy/litestar/store.py +296 -0
  31. sqlspec/adapters/asyncpg/__init__.py +2 -1
  32. sqlspec/adapters/asyncpg/_type_handlers.py +71 -0
  33. sqlspec/adapters/asyncpg/_types.py +11 -7
  34. sqlspec/adapters/asyncpg/adk/__init__.py +5 -0
  35. sqlspec/adapters/asyncpg/adk/store.py +460 -0
  36. sqlspec/adapters/asyncpg/config.py +57 -36
  37. sqlspec/adapters/asyncpg/data_dictionary.py +48 -2
  38. sqlspec/adapters/asyncpg/driver.py +153 -23
  39. sqlspec/adapters/asyncpg/litestar/__init__.py +5 -0
  40. sqlspec/adapters/asyncpg/litestar/store.py +253 -0
  41. sqlspec/adapters/bigquery/_types.py +1 -1
  42. sqlspec/adapters/bigquery/adk/__init__.py +5 -0
  43. sqlspec/adapters/bigquery/adk/store.py +585 -0
  44. sqlspec/adapters/bigquery/config.py +36 -11
  45. sqlspec/adapters/bigquery/data_dictionary.py +42 -2
  46. sqlspec/adapters/bigquery/driver.py +489 -144
  47. sqlspec/adapters/bigquery/litestar/__init__.py +5 -0
  48. sqlspec/adapters/bigquery/litestar/store.py +327 -0
  49. sqlspec/adapters/bigquery/type_converter.py +55 -23
  50. sqlspec/adapters/duckdb/_types.py +2 -2
  51. sqlspec/adapters/duckdb/adk/__init__.py +14 -0
  52. sqlspec/adapters/duckdb/adk/store.py +563 -0
  53. sqlspec/adapters/duckdb/config.py +79 -21
  54. sqlspec/adapters/duckdb/data_dictionary.py +41 -2
  55. sqlspec/adapters/duckdb/driver.py +225 -44
  56. sqlspec/adapters/duckdb/litestar/__init__.py +5 -0
  57. sqlspec/adapters/duckdb/litestar/store.py +332 -0
  58. sqlspec/adapters/duckdb/pool.py +5 -5
  59. sqlspec/adapters/duckdb/type_converter.py +51 -21
  60. sqlspec/adapters/oracledb/_numpy_handlers.py +133 -0
  61. sqlspec/adapters/oracledb/_types.py +20 -2
  62. sqlspec/adapters/oracledb/adk/__init__.py +5 -0
  63. sqlspec/adapters/oracledb/adk/store.py +1628 -0
  64. sqlspec/adapters/oracledb/config.py +120 -36
  65. sqlspec/adapters/oracledb/data_dictionary.py +87 -20
  66. sqlspec/adapters/oracledb/driver.py +475 -86
  67. sqlspec/adapters/oracledb/litestar/__init__.py +5 -0
  68. sqlspec/adapters/oracledb/litestar/store.py +765 -0
  69. sqlspec/adapters/oracledb/migrations.py +316 -25
  70. sqlspec/adapters/oracledb/type_converter.py +91 -16
  71. sqlspec/adapters/psqlpy/_type_handlers.py +44 -0
  72. sqlspec/adapters/psqlpy/_types.py +2 -1
  73. sqlspec/adapters/psqlpy/adk/__init__.py +5 -0
  74. sqlspec/adapters/psqlpy/adk/store.py +483 -0
  75. sqlspec/adapters/psqlpy/config.py +45 -19
  76. sqlspec/adapters/psqlpy/data_dictionary.py +48 -2
  77. sqlspec/adapters/psqlpy/driver.py +108 -41
  78. sqlspec/adapters/psqlpy/litestar/__init__.py +5 -0
  79. sqlspec/adapters/psqlpy/litestar/store.py +272 -0
  80. sqlspec/adapters/psqlpy/type_converter.py +40 -11
  81. sqlspec/adapters/psycopg/_type_handlers.py +80 -0
  82. sqlspec/adapters/psycopg/_types.py +2 -1
  83. sqlspec/adapters/psycopg/adk/__init__.py +5 -0
  84. sqlspec/adapters/psycopg/adk/store.py +962 -0
  85. sqlspec/adapters/psycopg/config.py +65 -37
  86. sqlspec/adapters/psycopg/data_dictionary.py +91 -3
  87. sqlspec/adapters/psycopg/driver.py +200 -78
  88. sqlspec/adapters/psycopg/litestar/__init__.py +5 -0
  89. sqlspec/adapters/psycopg/litestar/store.py +554 -0
  90. sqlspec/adapters/sqlite/__init__.py +2 -1
  91. sqlspec/adapters/sqlite/_type_handlers.py +86 -0
  92. sqlspec/adapters/sqlite/_types.py +1 -1
  93. sqlspec/adapters/sqlite/adk/__init__.py +5 -0
  94. sqlspec/adapters/sqlite/adk/store.py +582 -0
  95. sqlspec/adapters/sqlite/config.py +85 -16
  96. sqlspec/adapters/sqlite/data_dictionary.py +34 -2
  97. sqlspec/adapters/sqlite/driver.py +120 -52
  98. sqlspec/adapters/sqlite/litestar/__init__.py +5 -0
  99. sqlspec/adapters/sqlite/litestar/store.py +318 -0
  100. sqlspec/adapters/sqlite/pool.py +5 -5
  101. sqlspec/base.py +45 -26
  102. sqlspec/builder/__init__.py +73 -4
  103. sqlspec/builder/_base.py +91 -58
  104. sqlspec/builder/_column.py +5 -5
  105. sqlspec/builder/_ddl.py +98 -89
  106. sqlspec/builder/_delete.py +5 -4
  107. sqlspec/builder/_dml.py +388 -0
  108. sqlspec/{_sql.py → builder/_factory.py} +41 -44
  109. sqlspec/builder/_insert.py +5 -82
  110. sqlspec/builder/{mixins/_join_operations.py → _join.py} +145 -143
  111. sqlspec/builder/_merge.py +446 -11
  112. sqlspec/builder/_parsing_utils.py +9 -11
  113. sqlspec/builder/_select.py +1313 -25
  114. sqlspec/builder/_update.py +11 -42
  115. sqlspec/cli.py +76 -69
  116. sqlspec/config.py +331 -62
  117. sqlspec/core/__init__.py +5 -4
  118. sqlspec/core/cache.py +18 -18
  119. sqlspec/core/compiler.py +6 -8
  120. sqlspec/core/filters.py +55 -47
  121. sqlspec/core/hashing.py +9 -9
  122. sqlspec/core/parameters.py +76 -45
  123. sqlspec/core/result.py +234 -47
  124. sqlspec/core/splitter.py +16 -17
  125. sqlspec/core/statement.py +32 -31
  126. sqlspec/core/type_conversion.py +3 -2
  127. sqlspec/driver/__init__.py +1 -3
  128. sqlspec/driver/_async.py +183 -160
  129. sqlspec/driver/_common.py +197 -109
  130. sqlspec/driver/_sync.py +189 -161
  131. sqlspec/driver/mixins/_result_tools.py +20 -236
  132. sqlspec/driver/mixins/_sql_translator.py +4 -4
  133. sqlspec/exceptions.py +70 -7
  134. sqlspec/extensions/adk/__init__.py +53 -0
  135. sqlspec/extensions/adk/_types.py +51 -0
  136. sqlspec/extensions/adk/converters.py +172 -0
  137. sqlspec/extensions/adk/migrations/0001_create_adk_tables.py +144 -0
  138. sqlspec/extensions/adk/migrations/__init__.py +0 -0
  139. sqlspec/extensions/adk/service.py +181 -0
  140. sqlspec/extensions/adk/store.py +536 -0
  141. sqlspec/extensions/aiosql/adapter.py +69 -61
  142. sqlspec/extensions/fastapi/__init__.py +21 -0
  143. sqlspec/extensions/fastapi/extension.py +331 -0
  144. sqlspec/extensions/fastapi/providers.py +543 -0
  145. sqlspec/extensions/flask/__init__.py +36 -0
  146. sqlspec/extensions/flask/_state.py +71 -0
  147. sqlspec/extensions/flask/_utils.py +40 -0
  148. sqlspec/extensions/flask/extension.py +389 -0
  149. sqlspec/extensions/litestar/__init__.py +21 -4
  150. sqlspec/extensions/litestar/cli.py +54 -10
  151. sqlspec/extensions/litestar/config.py +56 -266
  152. sqlspec/extensions/litestar/handlers.py +46 -17
  153. sqlspec/extensions/litestar/migrations/0001_create_session_table.py +137 -0
  154. sqlspec/extensions/litestar/migrations/__init__.py +3 -0
  155. sqlspec/extensions/litestar/plugin.py +349 -224
  156. sqlspec/extensions/litestar/providers.py +25 -25
  157. sqlspec/extensions/litestar/store.py +265 -0
  158. sqlspec/extensions/starlette/__init__.py +10 -0
  159. sqlspec/extensions/starlette/_state.py +25 -0
  160. sqlspec/extensions/starlette/_utils.py +52 -0
  161. sqlspec/extensions/starlette/extension.py +254 -0
  162. sqlspec/extensions/starlette/middleware.py +154 -0
  163. sqlspec/loader.py +30 -49
  164. sqlspec/migrations/base.py +200 -76
  165. sqlspec/migrations/commands.py +591 -62
  166. sqlspec/migrations/context.py +6 -9
  167. sqlspec/migrations/fix.py +199 -0
  168. sqlspec/migrations/loaders.py +47 -19
  169. sqlspec/migrations/runner.py +241 -75
  170. sqlspec/migrations/tracker.py +237 -21
  171. sqlspec/migrations/utils.py +51 -3
  172. sqlspec/migrations/validation.py +177 -0
  173. sqlspec/protocols.py +106 -36
  174. sqlspec/storage/_utils.py +85 -0
  175. sqlspec/storage/backends/fsspec.py +133 -107
  176. sqlspec/storage/backends/local.py +78 -51
  177. sqlspec/storage/backends/obstore.py +276 -168
  178. sqlspec/storage/registry.py +75 -39
  179. sqlspec/typing.py +30 -84
  180. sqlspec/utils/__init__.py +25 -4
  181. sqlspec/utils/arrow_helpers.py +81 -0
  182. sqlspec/utils/config_resolver.py +6 -6
  183. sqlspec/utils/correlation.py +4 -5
  184. sqlspec/utils/data_transformation.py +3 -2
  185. sqlspec/utils/deprecation.py +9 -8
  186. sqlspec/utils/fixtures.py +4 -4
  187. sqlspec/utils/logging.py +46 -6
  188. sqlspec/utils/module_loader.py +205 -5
  189. sqlspec/utils/portal.py +311 -0
  190. sqlspec/utils/schema.py +288 -0
  191. sqlspec/utils/serializers.py +113 -4
  192. sqlspec/utils/sync_tools.py +36 -22
  193. sqlspec/utils/text.py +1 -2
  194. sqlspec/utils/type_guards.py +136 -20
  195. sqlspec/utils/version.py +433 -0
  196. {sqlspec-0.26.0.dist-info → sqlspec-0.28.0.dist-info}/METADATA +41 -22
  197. sqlspec-0.28.0.dist-info/RECORD +221 -0
  198. sqlspec/builder/mixins/__init__.py +0 -55
  199. sqlspec/builder/mixins/_cte_and_set_ops.py +0 -253
  200. sqlspec/builder/mixins/_delete_operations.py +0 -50
  201. sqlspec/builder/mixins/_insert_operations.py +0 -282
  202. sqlspec/builder/mixins/_merge_operations.py +0 -698
  203. sqlspec/builder/mixins/_order_limit_operations.py +0 -145
  204. sqlspec/builder/mixins/_pivot_operations.py +0 -157
  205. sqlspec/builder/mixins/_select_operations.py +0 -930
  206. sqlspec/builder/mixins/_update_operations.py +0 -199
  207. sqlspec/builder/mixins/_where_clause.py +0 -1298
  208. sqlspec-0.26.0.dist-info/RECORD +0 -157
  209. sqlspec-0.26.0.dist-info/licenses/NOTICE +0 -29
  210. {sqlspec-0.26.0.dist-info → sqlspec-0.28.0.dist-info}/WHEEL +0 -0
  211. {sqlspec-0.26.0.dist-info → sqlspec-0.28.0.dist-info}/entry_points.txt +0 -0
  212. {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