omlish 0.0.0.dev246__py3-none-any.whl → 0.0.0.dev248__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.
- omlish/.manifests.json +2 -2
- omlish/__about__.py +2 -2
- omlish/collections/cache/descriptor.py +0 -2
- omlish/collections/identity.py +6 -0
- omlish/concurrent/executors.py +0 -1
- omlish/concurrent/futures.py +0 -1
- omlish/dataclasses/impl/descriptors.py +0 -2
- omlish/diag/replserver/server.py +0 -1
- omlish/dispatch/_dispatch2.py +7 -3
- omlish/dispatch/_dispatch3.py +7 -3
- omlish/dispatch/dispatch.py +29 -63
- omlish/dispatch/functions.py +1 -1
- omlish/dispatch/impls.py +69 -0
- omlish/dispatch/methods.py +1 -1
- omlish/dynamic.py +0 -3
- omlish/formats/json/stream/build.py +2 -0
- omlish/formats/yaml.py +0 -3
- omlish/graphs/dags.py +0 -2
- omlish/graphs/domination.py +0 -5
- omlish/graphs/dot/items.py +0 -1
- omlish/graphs/dot/rendering.py +0 -1
- omlish/graphs/trees.py +0 -1
- omlish/inject/binder.py +0 -10
- omlish/iterators/iterators.py +0 -4
- omlish/lang/__init__.py +1 -0
- omlish/lang/collections.py +36 -0
- omlish/lang/descriptors.py +0 -1
- omlish/lifecycles/base.py +0 -1
- omlish/lifecycles/contextmanagers.py +0 -1
- omlish/lifecycles/controller.py +0 -2
- omlish/lifecycles/manager.py +0 -1
- omlish/marshal/trivial/any.py +0 -1
- omlish/math/bits.py +0 -1
- omlish/math/stats.py +0 -1
- omlish/specs/jmespath/cli.py +1 -1
- omlish/sql/queries/rendering.py +108 -87
- omlish/term/codes.py +0 -1
- omlish/testing/pytest/plugins/logging.py +0 -1
- omlish/testing/pytest/plugins/pydevd.py +0 -1
- omlish/testing/pytest/plugins/repeat.py +0 -1
- omlish/testing/pytest/plugins/skips.py +0 -1
- omlish/testing/pytest/plugins/spacing.py +0 -1
- omlish/testing/pytest/plugins/switches.py +0 -1
- omlish/text/delimit.py +0 -1
- {omlish-0.0.0.dev246.dist-info → omlish-0.0.0.dev248.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev246.dist-info → omlish-0.0.0.dev248.dist-info}/RECORD +50 -50
- omlish/sql/queries/rendering2.py +0 -248
- {omlish-0.0.0.dev246.dist-info → omlish-0.0.0.dev248.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev246.dist-info → omlish-0.0.0.dev248.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev246.dist-info → omlish-0.0.0.dev248.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev246.dist-info → omlish-0.0.0.dev248.dist-info}/top_level.txt +0 -0
@@ -1,12 +1,12 @@
|
|
1
|
-
omlish/.manifests.json,sha256=
|
2
|
-
omlish/__about__.py,sha256=
|
1
|
+
omlish/.manifests.json,sha256=x26AIwDzScUvnX-p4xlq6Zc5QYrAo0Vmgf1qHc1KL_M,8253
|
2
|
+
omlish/__about__.py,sha256=vdUCdVH6QPJp23FjKOh9VC2Pxz8yofiz_tArVxvhOyU,3380
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
6
6
|
omlish/check.py,sha256=THqm6jD1a0skAO5EC8SOVg58yq96Vk5wcuruBkCYxyU,2016
|
7
7
|
omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
|
8
8
|
omlish/defs.py,sha256=9uUjJuVIbCBL3g14fyzAp-9gH935MFofvlfOGwcBIaM,4913
|
9
|
-
omlish/dynamic.py,sha256=
|
9
|
+
omlish/dynamic.py,sha256=xQ8LlOt_fUPApg-yz7-gNq8JdVgTqJ0_R6vhJq2WbpI,6522
|
10
10
|
omlish/libc.py,sha256=8K4c66YV1ziJerl5poAAYCmsV-VSsHkT3EHhPW04ufg,15639
|
11
11
|
omlish/metadata.py,sha256=q8UG-fpcXhEF7BZnhVikIE_IHyud9-8YT8iv646zU2s,3589
|
12
12
|
omlish/outcome.py,sha256=ABIE0zjjTyTNtn-ZqQ_9_mUzLiBQ3sDAyqc9JVD8N2k,7852
|
@@ -142,14 +142,14 @@ omlish/collections/coerce.py,sha256=g68ROb_-5HgH-vI8612mU2S0FZ8-wp2ZHK5_Zy_kVC0,
|
|
142
142
|
omlish/collections/exceptions.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
|
143
143
|
omlish/collections/frozen.py,sha256=jQppK1pyQ3e_aAvw8OEKfnr7b0OB4RI5Qr1g9xXTZaQ,4137
|
144
144
|
omlish/collections/hasheq.py,sha256=SQdVICLZWKkYu4vUXrfmWBXO3i-jx01iM9IInDWkKfU,3664
|
145
|
-
omlish/collections/identity.py,sha256=
|
145
|
+
omlish/collections/identity.py,sha256=1kdiByfzKHGQZgUg1vkwILt8oPPQgerGh0_HbLDdqKw,2835
|
146
146
|
omlish/collections/mappings.py,sha256=fCHQatlAstiZkWZiyIlOw637Yep7ce79EPPbJcWHHUA,2784
|
147
147
|
omlish/collections/ordered.py,sha256=tUAl99XHbSbzn7Hdh99jUBl27NcC2J7ZTI67slTMe5M,2333
|
148
148
|
omlish/collections/ranked.py,sha256=rg6DL36oOUiG5JQEAkGnT8b6f9mSndQlIovtt8GQj_w,2229
|
149
149
|
omlish/collections/unmodifiable.py,sha256=-zys__n6L7liWzhmHAIvfxprq7cUE5HoR3foGvXc_7I,4748
|
150
150
|
omlish/collections/utils.py,sha256=Q0lHhNDokVxdOvApmu1QX5fABYwbn1ATiIwp194Ur_E,2889
|
151
151
|
omlish/collections/cache/__init__.py,sha256=D1gO71VcwxFTZP9gAc9isHfg_TEdalwhsJcgGLvS9hg,233
|
152
|
-
omlish/collections/cache/descriptor.py,sha256=
|
152
|
+
omlish/collections/cache/descriptor.py,sha256=aa-OOChFAJLMPHjuc8YPCvVsE0INntPxxXoq-kl4jtg,5021
|
153
153
|
omlish/collections/cache/impl.py,sha256=ySRU9UJG7jH9VPvuXdwZQ_rSqrleY-1mtie5Ml738wY,14755
|
154
154
|
omlish/collections/cache/types.py,sha256=yNjwd6CGyTJQdxN2CQxFqqBAlcs1Z7vvNV-aU1K7p8E,685
|
155
155
|
omlish/collections/persistent/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -160,8 +160,8 @@ omlish/collections/sorted/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJW
|
|
160
160
|
omlish/collections/sorted/skiplist.py,sha256=eU_cYQVnT-EZxv_dN9PYQZdOP0km5usEcOQRiJKL7Rw,5986
|
161
161
|
omlish/collections/sorted/sorted.py,sha256=euHJan3FqTYSCJGsVcYYRV-yhAAQ5_htnjymnNoVHRE,3319
|
162
162
|
omlish/concurrent/__init__.py,sha256=9p-s8MvBEYDqHIoYU3OYoe-Nni22QdkW7nhZGEukJTM,197
|
163
|
-
omlish/concurrent/executors.py,sha256=
|
164
|
-
omlish/concurrent/futures.py,sha256=
|
163
|
+
omlish/concurrent/executors.py,sha256=mF-rjJWzNFxwB1-_H7rHuwoImpl4FtNM6W3wcqM3NEE,1291
|
164
|
+
omlish/concurrent/futures.py,sha256=870tx8ELI8THvMnTrQoYIlEFKO9hM4KUrlehckJqKBU,4238
|
165
165
|
omlish/concurrent/threadlets.py,sha256=JfirbTDJgy9Ouokz_VmHeAAPS7cih8qMUJrN-owwXD4,2423
|
166
166
|
omlish/configs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
167
167
|
omlish/configs/all.py,sha256=kziwjzUBkf8AT0w7Pq7JX2jtkQVOQ5R1wJyn6hfTN5k,1055
|
@@ -195,7 +195,7 @@ omlish/dataclasses/impl/__init__.py,sha256=zqGBC5gSbjJxaqG_zS1LL1PX-zAfhIua8UqOE
|
|
195
195
|
omlish/dataclasses/impl/api.py,sha256=RhU4f50GVdn-dxilia8NA3F7VIm2R5z78pFfpIVXPRQ,6635
|
196
196
|
omlish/dataclasses/impl/as_.py,sha256=CD-t7hkC1EP2F_jvZKIA_cVoDuwZ-Ln_xC4fJumPYX0,2598
|
197
197
|
omlish/dataclasses/impl/copy.py,sha256=Tn8_n6Vohs-w4otbGdubBEvhd3TsSTaM3EfNGdS2LYo,591
|
198
|
-
omlish/dataclasses/impl/descriptors.py,sha256=
|
198
|
+
omlish/dataclasses/impl/descriptors.py,sha256=jSYNkKdy2rKddGpQqRwNuhw-ggpcvp_SWHpLwIWPOzc,2474
|
199
199
|
omlish/dataclasses/impl/exceptions.py,sha256=-vqxZmfXVflymVuiM553XTlJProse5HEMktTpfdPCIY,1275
|
200
200
|
omlish/dataclasses/impl/fields.py,sha256=8p7Uzvr0C4yBR0NqHzkq--OY2HXFQlGsb1HC3K17-7k,6985
|
201
201
|
omlish/dataclasses/impl/frozen.py,sha256=x87DSM8FIMZ3c_BIUE8NooCkExFjPsabeqIueEP5qKs,2988
|
@@ -231,13 +231,14 @@ omlish/diag/_pycharm/runhack.py,sha256=JFz4GVN4AXndJo38iwnK5X_vH2MS6wyO8YmVZss5Y
|
|
231
231
|
omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
|
232
232
|
omlish/diag/replserver/__main__.py,sha256=LmU41lQ58bm1h4Mx7S8zhE_uEBSC6kPcp9mn5JRpulA,32
|
233
233
|
omlish/diag/replserver/console.py,sha256=XzBDVhYlr8FY6ym4OwoaIHuFOHnGK3dTYlMDIOMUUlA,7410
|
234
|
-
omlish/diag/replserver/server.py,sha256=
|
234
|
+
omlish/diag/replserver/server.py,sha256=pqJZXKnD-Cc03hnL_FNqGYaW9kH-IM3e11vCyDAcBD8,5374
|
235
235
|
omlish/dispatch/__init__.py,sha256=GsiGJ91NKiQptSROtnCSkrZExBkvfDwYvdoTu5dBqF0,117
|
236
|
-
omlish/dispatch/_dispatch2.py,sha256=
|
237
|
-
omlish/dispatch/_dispatch3.py,sha256=
|
238
|
-
omlish/dispatch/dispatch.py,sha256=
|
239
|
-
omlish/dispatch/functions.py,sha256=
|
240
|
-
omlish/dispatch/
|
236
|
+
omlish/dispatch/_dispatch2.py,sha256=70k1tKKvuhxtAu6v4skECfHKIKVWrmlt7G_JKLUsKEs,1966
|
237
|
+
omlish/dispatch/_dispatch3.py,sha256=9Zjd7bINAC3keiaBdssc4v5dY0-8OI6XooV2DR9U7Z0,2818
|
238
|
+
omlish/dispatch/dispatch.py,sha256=KA5l49AiGLRjp4J7RDJW9RiDp9WUD1ewR1AOPEF8g38,3062
|
239
|
+
omlish/dispatch/functions.py,sha256=8Qvj62XKn9SKfiqoVQdBD3wVRE4JUWpZDqs0oouuDIw,1519
|
240
|
+
omlish/dispatch/impls.py,sha256=f7uLDjtDcykx_iFYRSmIrQYbVmXlaqXZ3qFIuOTUiD8,1967
|
241
|
+
omlish/dispatch/methods.py,sha256=dr8xQo-zVRckIo_V2Wp8Reqor3NE6APuzomUfsSBGdk,5498
|
241
242
|
omlish/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
242
243
|
omlish/docker/all.py,sha256=xXRgJgLGPwAtr7bDMJ_Dp9jTfOwfGvohNhc6LsoELJc,514
|
243
244
|
omlish/docker/cli.py,sha256=gtb9kitVfGnd4cr587NsVVk8D5Ok5y5SAsqD_SwGrSA,2565
|
@@ -258,7 +259,7 @@ omlish/formats/pickle.py,sha256=jdp4E9WH9qVPBE3sSqbqDtUo18RbTSIiSpSzJ-IEVZw,529
|
|
258
259
|
omlish/formats/props.py,sha256=auCv-Jx79KGlWfyG1-Qo0ou-Ex0W_mF3r_lDFdsVkWI,18920
|
259
260
|
omlish/formats/repr.py,sha256=kYrNs4o-ji8nOdp6u_L3aMgBMWN1ZAZJSAWgQQfStSQ,414
|
260
261
|
omlish/formats/xml.py,sha256=VJfqHR60dhAtjeG8WXFMozFqesTBSGvv264d67eDFXc,3514
|
261
|
-
omlish/formats/yaml.py,sha256=
|
262
|
+
omlish/formats/yaml.py,sha256=jGPQlTE0vSV-p0O7TJRNlf6o1uq4gx8PrHZe1ApJ_o8,7386
|
262
263
|
omlish/formats/ini/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
263
264
|
omlish/formats/ini/codec.py,sha256=omuFg0kiDksv8rRlWd_v32ebzEcKlgmiPgGID3bRi2M,631
|
264
265
|
omlish/formats/ini/sections.py,sha256=7wYyZdVTQbMPFpjQEACKJfAEPzUBrogINsrvFgxJoZ0,1015
|
@@ -278,7 +279,7 @@ omlish/formats/json/backends/orjson.py,sha256=wR8pMGFtkhZGHcNVk7vNYUnv8lUapdK89p
|
|
278
279
|
omlish/formats/json/backends/std.py,sha256=PM00Kh9ZR2XzollHMEvdo35Eml1N-zFfRW-LOCV5ftM,3085
|
279
280
|
omlish/formats/json/backends/ujson.py,sha256=BNJCU4kluGHdqTUKLJEuHhE2m2TmqR7HEN289S0Eokg,2278
|
280
281
|
omlish/formats/json/stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
281
|
-
omlish/formats/json/stream/build.py,sha256=
|
282
|
+
omlish/formats/json/stream/build.py,sha256=EveVyYjc3lbVQRs8Y5uMGEKp0E_gJAUR5bd2ToSVnSU,2533
|
282
283
|
omlish/formats/json/stream/errors.py,sha256=c8M8UAYmIZ-vWZLeKD2jMj4EDCJbr9QR8Jq_DyHjujQ,43
|
283
284
|
omlish/formats/json/stream/lex.py,sha256=ItsWvtl5SZH-HwQtPy8Cpf4nszqDzvUTdIOEmSRiZ-E,6807
|
284
285
|
omlish/formats/json/stream/parse.py,sha256=JuYmXwtTHmQJTFKoJNoEHUpCPxXdl_gvKPykVXgED34,6208
|
@@ -304,13 +305,13 @@ omlish/funcs/match.py,sha256=gMLZn1enNiFvQaWrQubY300M1BrmdKWzeePihBS7Ywc,6153
|
|
304
305
|
omlish/funcs/pairs.py,sha256=VCkZjDmJGtR76BsejsHNfb4TcpHCtkkmak-zWDFchAo,3904
|
305
306
|
omlish/funcs/pipes.py,sha256=E7Sz8Aj8ke_vCs5AMNwg1I36kRdHVGTnzxVQaDyn43U,2490
|
306
307
|
omlish/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
307
|
-
omlish/graphs/dags.py,sha256=
|
308
|
-
omlish/graphs/domination.py,sha256=
|
309
|
-
omlish/graphs/trees.py,sha256=
|
308
|
+
omlish/graphs/dags.py,sha256=7ee4GfzHcAVUA5-LMJyT7odwxoooh4cTwz4H8qi8Anc,3045
|
309
|
+
omlish/graphs/domination.py,sha256=N-rCzB3uAug964Tx4YGew1Nuh7GvzGjA598GcOj-Who,7571
|
310
|
+
omlish/graphs/trees.py,sha256=IA2lMbPec-4UrkYFUjUqqxAKeww6YMV35xj8uQhILYk,8188
|
310
311
|
omlish/graphs/dot/__init__.py,sha256=Y1MZRQBZkcYyG1Tn7K2FhL8aYbm4v4tk6f5g9AqEkUw,359
|
311
|
-
omlish/graphs/dot/items.py,sha256=
|
312
|
+
omlish/graphs/dot/items.py,sha256=7c-lvB2pp6LKWDI2di-S6Zh4vlUZt97eJeNQzuGilGc,4082
|
312
313
|
omlish/graphs/dot/make.py,sha256=RN30gHfJPiXx5Q51kbDdhVJYf59Fr84Lz9J-mXRt9sI,360
|
313
|
-
omlish/graphs/dot/rendering.py,sha256=
|
314
|
+
omlish/graphs/dot/rendering.py,sha256=eN1NufiUaKFeRxRTOfIT-oLTg1YQCuPybBx3AmrhdBw,3629
|
314
315
|
omlish/graphs/dot/utils.py,sha256=_FMwn77WfiiAfLsRTOKWm4IYbNv5kQN22YJ5psw6CWg,801
|
315
316
|
omlish/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
316
317
|
omlish/http/all.py,sha256=OqCovZi_jv1Mnk975idaXA8FCGy4laoQIvNZ3hdKpRQ,722
|
@@ -336,7 +337,7 @@ omlish/http/coro/server.py,sha256=30FTcJG8kuFeThf0HJYpTzMZN-giLTBP7wr5Wl3b9X0,18
|
|
336
337
|
omlish/http/coro/simple.py,sha256=inWA_ss6Nz5Rqmy4dL9_SGah4anYoDecDTRQqVIGYeY,3200
|
337
338
|
omlish/http/coro/sockets.py,sha256=rtpZZ-XCOfC5tXr4Fmo1HSn-8f5nxfIOlJaPUkQeDyU,1654
|
338
339
|
omlish/inject/__init__.py,sha256=n0RC9UDGsBQQ39cST39-XJqJPq2M0tnnh9yJubW9azo,1891
|
339
|
-
omlish/inject/binder.py,sha256=
|
340
|
+
omlish/inject/binder.py,sha256=3-6KMOcSgFE5bvthy3YUrRzCX5w7YSGmdJ3Tv2yXZGw,4022
|
340
341
|
omlish/inject/bindings.py,sha256=pLXn2U3kvmAS-68IOG-tr77DbiI-wp9hGyy4lhG6_H8,525
|
341
342
|
omlish/inject/eagers.py,sha256=5AkGYuwijG0ihsH9NSaZotggalJ5_xWXhHE9mkn6IBA,329
|
342
343
|
omlish/inject/elements.py,sha256=npppGgYBQja0oPHkdBDmRhpm3md1mZT1FVcIQ--W2qI,1398
|
@@ -395,18 +396,18 @@ omlish/io/fdio/kqueue.py,sha256=YgGBQibkAUYODYDiGl7Enjtx1oQsJXuDsBLBXgqlLQw,3832
|
|
395
396
|
omlish/io/fdio/manager.py,sha256=q4wWf7nKrNtjx6yPEvrVnFt4UtK_BTvVlquEGw7poEo,1250
|
396
397
|
omlish/io/fdio/pollers.py,sha256=yNadAt3W5wd90PFmd3vD77bq5QwoVb2A6SM2JjZpKRs,5507
|
397
398
|
omlish/iterators/__init__.py,sha256=yMavf5FofiS1EU4UFuWPXiFZ03W0H-y7MuMxW8FUaEE,358
|
398
|
-
omlish/iterators/iterators.py,sha256=
|
399
|
+
omlish/iterators/iterators.py,sha256=iTQQwBE6Wzoy36dnbPIws17zbjE3zNN4KwVw4Fzh-gY,3154
|
399
400
|
omlish/iterators/recipes.py,sha256=53mkexitMhkwXQZbL6DrhpT0WePQ_56uXd5Jaw3DfzI,467
|
400
401
|
omlish/iterators/tools.py,sha256=Pi4ybXytUXVZ3xwK89xpPImQfYYId9p1vIFQvVqVLqA,2551
|
401
402
|
omlish/iterators/unique.py,sha256=0jAX3kwzVfRNhe0Tmh7kVP_Q2WBIn8POo_O-rgFV0rQ,1390
|
402
|
-
omlish/lang/__init__.py,sha256=
|
403
|
+
omlish/lang/__init__.py,sha256=7UEkGV5eWdCQRSqWvr3QNOfLKjkzLkF_ngm6fK0SUTk,4700
|
403
404
|
omlish/lang/attrs.py,sha256=fofCKN0X8TMu1yGqHpLpNLih9r9HWl3D3Vn3b6O791w,3891
|
404
405
|
omlish/lang/clsdct.py,sha256=sJYadm-fwzti-gsi98knR5qQUxriBmOqQE_qz3RopNk,1743
|
405
406
|
omlish/lang/cmp.py,sha256=5vbzWWbqdzDmNKAGL19z6ZfUKe5Ci49e-Oegf9f4BsE,1346
|
406
|
-
omlish/lang/collections.py,sha256=
|
407
|
+
omlish/lang/collections.py,sha256=aGi0j6VzVe2nz4l357Y4RD5_XNl8OJbmM5qM6BclrrY,1895
|
407
408
|
omlish/lang/contextmanagers.py,sha256=UPH6daYwSP9cH5AfSVsJyEHk1UURMGhVPM5ZRhp_Hvw,7576
|
408
409
|
omlish/lang/datetimes.py,sha256=ehI_DhQRM-bDxAavnp470XcekbbXc4Gdw9y1KpHDJT0,223
|
409
|
-
omlish/lang/descriptors.py,sha256=
|
410
|
+
omlish/lang/descriptors.py,sha256=zBtgO9LjdSTGHNUgiIqswh78WOVoGH6KzS0NbgB1Wls,6572
|
410
411
|
omlish/lang/exceptions.py,sha256=qJBo3NU1mOWWm-NhQUHCY5feYXR3arZVyEHinLsmRH4,47
|
411
412
|
omlish/lang/functions.py,sha256=0ql9EXA_gEEhvUVzMJCjVhEnVtHecsLKmfmAXuQqeGY,4388
|
412
413
|
omlish/lang/generators.py,sha256=5LX17j-Ej3QXhwBgZvRTm_dq3n9veC4IOUcVmvSu2vU,5243
|
@@ -429,10 +430,10 @@ omlish/lang/classes/simple.py,sha256=XQ8b86WvQA0qtSYqlbMOJS7tHgE8sv9onda33uQmbkM
|
|
429
430
|
omlish/lang/classes/virtual.py,sha256=z0MYQD9Q5MkX8DzF325wDB4J9XoYbsB09jZ1omC62To,3366
|
430
431
|
omlish/lifecycles/__init__.py,sha256=1FjYceXs-4fc-S-C9zFYmc2axHs4znnQHcJVHdY7a6E,578
|
431
432
|
omlish/lifecycles/abstract.py,sha256=70CQyZy-c9a2o0ZJxPeUT7eYjWZTBrp2HpUBnrHdAOM,1109
|
432
|
-
omlish/lifecycles/base.py,sha256=
|
433
|
-
omlish/lifecycles/contextmanagers.py,sha256=
|
434
|
-
omlish/lifecycles/controller.py,sha256=
|
435
|
-
omlish/lifecycles/manager.py,sha256=
|
433
|
+
omlish/lifecycles/base.py,sha256=JSW5rFVCWLLVx_ASe4G49MeuKI1yN8kXcdh9U94kLYo,1393
|
434
|
+
omlish/lifecycles/contextmanagers.py,sha256=gojUTE1hjoP9hjXRPIgWFVwQcSIuOcmkXGLA5JEuYBA,2072
|
435
|
+
omlish/lifecycles/controller.py,sha256=p5S4_OZQ-h5elI803D5_bxbIn9MKIGRe6ECG4XhBXXA,3462
|
436
|
+
omlish/lifecycles/manager.py,sha256=x4wsVUtrjgnLKuBn0Wd4QmULCmzMu6LiMUuHjXH7MBQ,5444
|
436
437
|
omlish/lifecycles/states.py,sha256=zqMOU2ZU-MDNnWuwauM3_anIAiXM8LoBDElDEraptFg,1292
|
437
438
|
omlish/lifecycles/transitions.py,sha256=qQtFby-h4VzbvgaUqT2NnbNumlcOx9FVVADP9t83xj4,1939
|
438
439
|
omlish/lite/__init__.py,sha256=ISLhM4q0LR1XXTCaHdZOZxBRyIsoZqYm4u0bf1BPcVk,148
|
@@ -515,13 +516,13 @@ omlish/marshal/singular/numbers.py,sha256=12a8HxjDHMTgtJTxO7VY_h5llaPyYB-QEPY09d
|
|
515
516
|
omlish/marshal/singular/primitives.py,sha256=EZi2AIi_Onw1pekAiL4ujz4w-ASuOGWCu4MUIE_dCnk,1299
|
516
517
|
omlish/marshal/singular/uuids.py,sha256=rZoE6NE5z6x_ZRmVMjjR2iK7CR8ijfDOvhMKgmm8Mgk,918
|
517
518
|
omlish/marshal/trivial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
518
|
-
omlish/marshal/trivial/any.py,sha256=
|
519
|
+
omlish/marshal/trivial/any.py,sha256=m2eywIbOU3YpR9a33vE2djSnbcpYGDQVwekXXokF4zc,786
|
519
520
|
omlish/marshal/trivial/forbidden.py,sha256=7buKYamev2T3Q4RAhCBRzHO700vs8biH0--V5iBDqx4,874
|
520
521
|
omlish/marshal/trivial/nop.py,sha256=41bpwsLGeDGqIwzZ7j88lbc4wIYh0EcPROhCU98mQxo,466
|
521
522
|
omlish/math/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
522
|
-
omlish/math/bits.py,sha256=
|
523
|
+
omlish/math/bits.py,sha256=LC3dTgrvodNbfxy9dvlya61eQuDEy0azzQLCvEbFHj4,3476
|
523
524
|
omlish/math/floats.py,sha256=UimhOT7KRl8LXTzOI5cQWoX_9h6WNWe_3vcOuO7-h_8,327
|
524
|
-
omlish/math/stats.py,sha256=
|
525
|
+
omlish/math/stats.py,sha256=C700sib97E-IywlNKoByHFEtgA51n7Lffg7d3WSO4js,10052
|
525
526
|
omlish/multiprocessing/__init__.py,sha256=jwlWGOaSGcX8DkzyZwJ49nfkHocWWeKgKb7kMpgcj_Y,485
|
526
527
|
omlish/multiprocessing/proxies.py,sha256=bInhGds2rv6xT9q3qRMlZuSXFAjwfspkiohXZ36aUpY,484
|
527
528
|
omlish/multiprocessing/spawn.py,sha256=sTvPLIJGYnjjI6ASqhFzHF-97tCnaOXX7u7s-33SUMw,1875
|
@@ -602,7 +603,7 @@ omlish/specs/jmespath/LICENSE,sha256=IH-ZZlZkS8XMkf_ubNVD1aYHQ2l_wd0tmHtXrCcYpRU
|
|
602
603
|
omlish/specs/jmespath/__init__.py,sha256=9tsrquw1kXe1KAhTP3WeL0GlGBiTguQVxsC-lUYTWP4,2087
|
603
604
|
omlish/specs/jmespath/__main__.py,sha256=wIXm6bs08etNG_GZlN2rBkADPb0rKfL2HSkm8spnpxw,200
|
604
605
|
omlish/specs/jmespath/ast.py,sha256=XhcUGodHIdsY3-hVZEfpeW6LBehRjLbxVFXkMfZhRdk,5386
|
605
|
-
omlish/specs/jmespath/cli.py,sha256=
|
606
|
+
omlish/specs/jmespath/cli.py,sha256=6lCzF3wtFvcPGFjZuq9erypFTpX2Xzu4XtKSbV1meG4,2162
|
606
607
|
omlish/specs/jmespath/exceptions.py,sha256=Co1HiUBPFNwFgZY3FV_ayuZoSgZIAmDcImImxauYNxc,4435
|
607
608
|
omlish/specs/jmespath/functions.py,sha256=lE_MlW5rDQirDCE9HtcAG-17kuHhH36RaPaQfk97xDY,22595
|
608
609
|
omlish/specs/jmespath/lexer.py,sha256=hlPGCXPzGhd9ySj-z2cGTbyC9z3e0Io78IMYJZSEwNk,12647
|
@@ -670,8 +671,7 @@ omlish/sql/queries/names.py,sha256=4sDvgRobMEt_6mDeuYVbCqHzLCOwpXUdEyyB4-QjxKo,1
|
|
670
671
|
omlish/sql/queries/ops.py,sha256=B7IDfjr2DW5LJhWoNaY1WW90BJhe5ZtmxIELhWXbW-0,129
|
671
672
|
omlish/sql/queries/params.py,sha256=iR8tnetkZFWY378iUbPe08d86g-Wf1J3YqfZr_KhIwQ,1175
|
672
673
|
omlish/sql/queries/relations.py,sha256=7YrEC9IjoVpRGLAFKRSRsHHnTmx-g7hBNXsOgP2HOuI,2998
|
673
|
-
omlish/sql/queries/rendering.py,sha256=
|
674
|
-
omlish/sql/queries/rendering2.py,sha256=S7BD7i2tMEWdxOtvw-udWfk5nei-vV3hUghR7qEIL-I,6469
|
674
|
+
omlish/sql/queries/rendering.py,sha256=3oSwzx713J81V0JM4FnVgNpeHjaenoWrds41M9j__Dg,7328
|
675
675
|
omlish/sql/queries/selects.py,sha256=RFySZ9sb-nE29QrLLbQ7JYZW_V_ifaFTcl-RQTgQncY,1369
|
676
676
|
omlish/sql/queries/std.py,sha256=J2ZDfDyLzRm8q5-TLAN6I_qjhs-7RpfW23yuCYYLf5k,643
|
677
677
|
omlish/sql/queries/stmts.py,sha256=pBqwD7dRlqMu6uh6vR3xaWOEgbZCcFWbOQ9ryYd17T4,441
|
@@ -691,7 +691,7 @@ omlish/subprocesses/sync.py,sha256=HKmKM99_Y7tkJRg_n5onXrw41IZt5M5fqU0281LY-mo,3
|
|
691
691
|
omlish/subprocesses/utils.py,sha256=MJb6hvKhZceTmBeFVqlc5oM7rDxWkUzSzK9nKvbIvM8,396
|
692
692
|
omlish/subprocesses/wrap.py,sha256=v7vrbDhl_FVWESnXIOJ3oGtE3Y-OHQa5sH3MTtFTBUE,504
|
693
693
|
omlish/term/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
694
|
-
omlish/term/codes.py,sha256=
|
694
|
+
omlish/term/codes.py,sha256=d8oii_9UJDm_TAowXYH3XDckX0XNBf2kiEPJKkVMMow,6149
|
695
695
|
omlish/term/progressbar.py,sha256=TiwdmPSMa5jQj35i1NQURTWQGy4eWUNx_XiPM38JtvQ,3184
|
696
696
|
omlish/term/vt100/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
697
697
|
omlish/term/vt100/c.py,sha256=cAhDKXI81PZRtFmTotfad3HZGREP1QnOlWYoAw6v-Fw,3532
|
@@ -707,13 +707,13 @@ omlish/testing/pytest/inject/harness.py,sha256=_Qf7lLcYc_dpauYOE68u_a65jPCFWmQUY
|
|
707
707
|
omlish/testing/pytest/plugins/__init__.py,sha256=ys1zXrYrNm7Uo6YOIVJ6Bd3dQo6kv387k7MbTYlqZSI,467
|
708
708
|
omlish/testing/pytest/plugins/_registry.py,sha256=IK04KlBgiOJxKAyCCgjpX2R-9tE-btalYJkgjLc8Te8,77
|
709
709
|
omlish/testing/pytest/plugins/depskip.py,sha256=xithY-OMtjwhv8mcRNkv-WI_PSQtHldQ8H1s60MIXkk,2673
|
710
|
-
omlish/testing/pytest/plugins/logging.py,sha256=
|
710
|
+
omlish/testing/pytest/plugins/logging.py,sha256=ZUy4sQOMYroZubUnjYe4_KC1kqukgBbA84VjO0NwfsA,390
|
711
711
|
omlish/testing/pytest/plugins/managermarks.py,sha256=IzkspjT8-ToPIlHZs9cHt6RYbm51poJLjYVvkFPbJhE,1300
|
712
|
-
omlish/testing/pytest/plugins/pydevd.py,sha256=
|
713
|
-
omlish/testing/pytest/plugins/repeat.py,sha256=
|
714
|
-
omlish/testing/pytest/plugins/skips.py,sha256=
|
715
|
-
omlish/testing/pytest/plugins/spacing.py,sha256=
|
716
|
-
omlish/testing/pytest/plugins/switches.py,sha256=
|
712
|
+
omlish/testing/pytest/plugins/pydevd.py,sha256=5moE64LrNRV6gKRaeCuONDiwuh-4UFxJPWD9K9PR8GM,841
|
713
|
+
omlish/testing/pytest/plugins/repeat.py,sha256=jiZCI-17042jBvUEbZCxNwqWtr7s3EhTBSeSHh_Uz4E,497
|
714
|
+
omlish/testing/pytest/plugins/skips.py,sha256=eMir_n777Kk2BvOwjQzRROKL4iAMYKSHFwWCHJ-bdPI,1040
|
715
|
+
omlish/testing/pytest/plugins/spacing.py,sha256=tzq-L-exegHe2BImumkYIsVcUwpUUhLJJOuSrsKDuCU,706
|
716
|
+
omlish/testing/pytest/plugins/switches.py,sha256=U8tDP-WSI2yjxwp4hocgZNJEmEv8UO8_CFEv8mXWH3A,3814
|
717
717
|
omlish/testing/pytest/plugins/utils.py,sha256=L5C622UXcA_AUKDcvyh5IMiRfqSGGz0McdhwZWvfMlU,261
|
718
718
|
omlish/testing/pytest/plugins/asyncs/__init__.py,sha256=TTNhFmP_krug1973sq_bpWBTIvg68-1nbuVLSs92Z6k,41
|
719
719
|
omlish/testing/pytest/plugins/asyncs/consts.py,sha256=0NOCkzV43dOu3u97BqYMQ4mPG8JuFncpWibkOZpCqX4,55
|
@@ -727,16 +727,16 @@ omlish/testing/pytest/plugins/asyncs/backends/trio.py,sha256=xty9TR7-Kk6n0cdOqEr
|
|
727
727
|
omlish/testing/pytest/plugins/asyncs/backends/trio_asyncio.py,sha256=VcGVwf4V-1ZFK_70FrFS9b11EU1dOy1ozhhIDXGNSEo,3169
|
728
728
|
omlish/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
729
729
|
omlish/text/asdl.py,sha256=AS3irh-sag5pqyH3beJif78PjCbOaFso1NeKq-HXuTs,16867
|
730
|
-
omlish/text/delimit.py,sha256=
|
730
|
+
omlish/text/delimit.py,sha256=Y0ID9Y9nfgQu3tYCiMS3hLa-ugA2cc-29PV4fF1343g,4927
|
731
731
|
omlish/text/glyphsplit.py,sha256=kqqjglRdxGo0czYZxOz9Vi8aBmVsCOq8h6lPwRA5xe0,3803
|
732
732
|
omlish/text/indent.py,sha256=YjtJEBYWuk8--b9JU_T6q4yxV85_TR7VEVr5ViRCFwk,1336
|
733
733
|
omlish/text/mangle.py,sha256=kfzFLfvepH-chl1P89_mdc5vC4FSqyPA2aVtgzuB8IY,1133
|
734
734
|
omlish/text/minja.py,sha256=jZC-fp3Xuhx48ppqsf2Sf1pHbC0t8XBB7UpUUoOk2Qw,5751
|
735
735
|
omlish/text/parts.py,sha256=JkNZpyR2tv2CNcTaWJJhpQ9E4F0yPR8P_YfDbZfMtwQ,6182
|
736
736
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
737
|
-
omlish-0.0.0.
|
738
|
-
omlish-0.0.0.
|
739
|
-
omlish-0.0.0.
|
740
|
-
omlish-0.0.0.
|
741
|
-
omlish-0.0.0.
|
742
|
-
omlish-0.0.0.
|
737
|
+
omlish-0.0.0.dev248.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
738
|
+
omlish-0.0.0.dev248.dist-info/METADATA,sha256=2MDwQ1CC7YMd2LkHobPoRqjE_TqGmuPaic_MlQcnojI,4176
|
739
|
+
omlish-0.0.0.dev248.dist-info/WHEEL,sha256=52BFRY2Up02UkjOa29eZOS2VxUrpPORXg1pkohGGUS8,91
|
740
|
+
omlish-0.0.0.dev248.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
741
|
+
omlish-0.0.0.dev248.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
742
|
+
omlish-0.0.0.dev248.dist-info/RECORD,,
|
omlish/sql/queries/rendering2.py
DELETED
@@ -1,248 +0,0 @@
|
|
1
|
-
"""
|
2
|
-
TODO:
|
3
|
-
- minimal parens
|
4
|
-
- text.parts
|
5
|
-
- QuoteStyle
|
6
|
-
- ParamStyle
|
7
|
-
|
8
|
-
==
|
9
|
-
|
10
|
-
def needs_parens(self, e: Expr) -> bool:
|
11
|
-
if isinstance(e, (Literal, Ident, Name)):
|
12
|
-
return True
|
13
|
-
elif isinstance(e, Expr):
|
14
|
-
return False
|
15
|
-
else:
|
16
|
-
raise TypeError(e)
|
17
|
-
"""
|
18
|
-
import dataclasses as dc
|
19
|
-
import typing as ta
|
20
|
-
|
21
|
-
from ... import dispatch
|
22
|
-
from ... import lang
|
23
|
-
from ...text import parts as tp
|
24
|
-
from ..params import ParamStyle
|
25
|
-
from ..params import make_params_preparer
|
26
|
-
from .base import Node
|
27
|
-
from .binary import Binary
|
28
|
-
from .binary import BinaryOp
|
29
|
-
from .binary import BinaryOps
|
30
|
-
from .exprs import Literal
|
31
|
-
from .exprs import NameExpr
|
32
|
-
from .idents import Ident
|
33
|
-
from .inserts import Insert
|
34
|
-
from .inserts import Values
|
35
|
-
from .multi import Multi
|
36
|
-
from .multi import MultiKind
|
37
|
-
from .names import Name
|
38
|
-
from .params import Param
|
39
|
-
from .relations import Join
|
40
|
-
from .relations import JoinKind
|
41
|
-
from .relations import Table
|
42
|
-
from .selects import Select
|
43
|
-
from .selects import SelectItem
|
44
|
-
from .unary import Unary
|
45
|
-
from .unary import UnaryOp
|
46
|
-
from .unary import UnaryOps
|
47
|
-
|
48
|
-
|
49
|
-
@dc.dataclass(frozen=True)
|
50
|
-
class RenderedQuery(lang.Final):
|
51
|
-
t: tp.Part
|
52
|
-
args: lang.Args
|
53
|
-
|
54
|
-
|
55
|
-
class Renderer(lang.Abstract):
|
56
|
-
def __init__(
|
57
|
-
self,
|
58
|
-
*,
|
59
|
-
param_style: ParamStyle | None = None,
|
60
|
-
) -> None:
|
61
|
-
super().__init__()
|
62
|
-
|
63
|
-
self._param_style = param_style if param_style is not None else self.default_param_style
|
64
|
-
|
65
|
-
self._params_preparer = make_params_preparer(self._param_style)
|
66
|
-
|
67
|
-
default_param_style: ta.ClassVar[ParamStyle] = ParamStyle.PYFORMAT
|
68
|
-
|
69
|
-
def args(self) -> lang.Args:
|
70
|
-
return self._params_preparer.prepare()
|
71
|
-
|
72
|
-
@dispatch.method
|
73
|
-
def render(self, o: ta.Any) -> tp.Part:
|
74
|
-
raise TypeError(o)
|
75
|
-
|
76
|
-
|
77
|
-
class StdRenderer(Renderer):
|
78
|
-
# parens
|
79
|
-
|
80
|
-
NEEDS_PAREN_TYPES: ta.AbstractSet[type[Node]] = {
|
81
|
-
Binary,
|
82
|
-
# IsNull,
|
83
|
-
# SelectExpr,
|
84
|
-
}
|
85
|
-
|
86
|
-
def needs_paren(self, node: Node) -> bool:
|
87
|
-
return type(node) in self.NEEDS_PAREN_TYPES
|
88
|
-
|
89
|
-
def paren(self, node: Node) -> tp.Part:
|
90
|
-
return tp.Wrap(self.render(node)) if self.needs_paren(node) else self.render(node)
|
91
|
-
|
92
|
-
# binary
|
93
|
-
|
94
|
-
BINARY_OP_TO_STR: ta.ClassVar[ta.Mapping[BinaryOp, str]] = {
|
95
|
-
BinaryOps.EQ: '=',
|
96
|
-
BinaryOps.NE: '!=',
|
97
|
-
BinaryOps.LT: '<',
|
98
|
-
BinaryOps.LE: '<=',
|
99
|
-
BinaryOps.GT: '>',
|
100
|
-
BinaryOps.GE: '>=',
|
101
|
-
|
102
|
-
BinaryOps.ADD: '+',
|
103
|
-
BinaryOps.SUB: '-',
|
104
|
-
BinaryOps.MUL: '*',
|
105
|
-
BinaryOps.DIV: '/',
|
106
|
-
BinaryOps.MOD: '%',
|
107
|
-
|
108
|
-
BinaryOps.CONCAT: '||',
|
109
|
-
}
|
110
|
-
|
111
|
-
@Renderer.render.register
|
112
|
-
def render_binary(self, o: Binary) -> tp.Part:
|
113
|
-
return [
|
114
|
-
self.paren(o.l),
|
115
|
-
self.BINARY_OP_TO_STR[o.op],
|
116
|
-
self.paren(o.r),
|
117
|
-
]
|
118
|
-
|
119
|
-
# exprs
|
120
|
-
|
121
|
-
@Renderer.render.register
|
122
|
-
def render_literal(self, o: Literal) -> tp.Part:
|
123
|
-
return repr(o.v)
|
124
|
-
|
125
|
-
@Renderer.render.register
|
126
|
-
def render_name_expr(self, o: NameExpr) -> tp.Part:
|
127
|
-
return self.render(o.n)
|
128
|
-
|
129
|
-
@Renderer.render.register
|
130
|
-
def render_param(self, o: Param) -> tp.Part:
|
131
|
-
return self._params_preparer.add(o.n if o.n is not None else id(o))
|
132
|
-
|
133
|
-
# idents
|
134
|
-
|
135
|
-
@Renderer.render.register
|
136
|
-
def render_ident(self, o: Ident) -> tp.Part:
|
137
|
-
return f'"{o.s}"'
|
138
|
-
|
139
|
-
# inserts
|
140
|
-
|
141
|
-
@Renderer.render.register
|
142
|
-
def render_values(self, o: Values) -> tp.Part:
|
143
|
-
return [
|
144
|
-
'values',
|
145
|
-
tp.Wrap(tp.List([self.render(v) for v in o.vs])),
|
146
|
-
]
|
147
|
-
|
148
|
-
@Renderer.render.register
|
149
|
-
def render_insert(self, o: Insert) -> tp.Part:
|
150
|
-
return [
|
151
|
-
'insert into',
|
152
|
-
self.render(o.into),
|
153
|
-
tp.Wrap(tp.List([self.render(c) for c in o.columns])),
|
154
|
-
]
|
155
|
-
|
156
|
-
# multis
|
157
|
-
|
158
|
-
MULTI_KIND_TO_STR: ta.ClassVar[ta.Mapping[MultiKind, str]] = {
|
159
|
-
MultiKind.AND: 'and',
|
160
|
-
MultiKind.OR: 'or',
|
161
|
-
}
|
162
|
-
|
163
|
-
@Renderer.render.register
|
164
|
-
def render_multi(self, o: Multi) -> tp.Part:
|
165
|
-
return tp.Wrap(tp.List(
|
166
|
-
[self.render(e) for e in o.es],
|
167
|
-
delimiter=' ' + self.MULTI_KIND_TO_STR[o.k], # FIXME: Part
|
168
|
-
))
|
169
|
-
|
170
|
-
# names
|
171
|
-
|
172
|
-
@Renderer.render.register
|
173
|
-
def render_name(self, o: Name) -> tp.Part:
|
174
|
-
out: list[tp.Part] = []
|
175
|
-
for n, i in enumerate(o.ps):
|
176
|
-
if n:
|
177
|
-
out.append('.')
|
178
|
-
out.append(self.render(i))
|
179
|
-
return tp.Concat(out)
|
180
|
-
|
181
|
-
# relations
|
182
|
-
|
183
|
-
@Renderer.render.register
|
184
|
-
def render_table(self, o: Table) -> tp.Part:
|
185
|
-
return [
|
186
|
-
self.render(o.n),
|
187
|
-
*(['as', self.render(o.a)] if o.a is not None else []),
|
188
|
-
]
|
189
|
-
|
190
|
-
JOIN_KIND_TO_STR: ta.ClassVar[ta.Mapping[JoinKind, str]] = {
|
191
|
-
JoinKind.DEFAULT: 'join',
|
192
|
-
JoinKind.INNER: 'inner join',
|
193
|
-
JoinKind.LEFT: 'left join',
|
194
|
-
JoinKind.LEFT_OUTER: 'left outer join',
|
195
|
-
JoinKind.RIGHT: 'right join',
|
196
|
-
JoinKind.RIGHT_OUTER: 'right outer join',
|
197
|
-
JoinKind.FULL: 'full join',
|
198
|
-
JoinKind.FULL_OUTER: 'full outer join',
|
199
|
-
JoinKind.CROSS: 'cross join',
|
200
|
-
JoinKind.NATURAL: 'natural join',
|
201
|
-
}
|
202
|
-
|
203
|
-
@Renderer.render.register
|
204
|
-
def render_join(self, o: Join) -> tp.Part:
|
205
|
-
return [
|
206
|
-
self.render(o.l),
|
207
|
-
self.JOIN_KIND_TO_STR[o.k],
|
208
|
-
self.render(o.r),
|
209
|
-
*(['on', self.render(o.c)] if o.c is not None else []),
|
210
|
-
]
|
211
|
-
|
212
|
-
# selects
|
213
|
-
|
214
|
-
@Renderer.render.register
|
215
|
-
def render_select_item(self, o: SelectItem) -> tp.Part:
|
216
|
-
return [
|
217
|
-
self.render(o.v),
|
218
|
-
*(['as', self.render(o.a)] if o.a is not None else []),
|
219
|
-
]
|
220
|
-
|
221
|
-
@Renderer.render.register
|
222
|
-
def render_select(self, o: Select) -> tp.Part:
|
223
|
-
return [
|
224
|
-
'select',
|
225
|
-
tp.List([self.render(i) for i in o.items]),
|
226
|
-
*(['from', self.render(o.from_)] if o.from_ is not None else []),
|
227
|
-
*(['where', self.render(o.where)] if o.where is not None else []),
|
228
|
-
]
|
229
|
-
|
230
|
-
# unary
|
231
|
-
|
232
|
-
UNARY_OP_TO_STR: ta.ClassVar[ta.Mapping[UnaryOp, tuple[str, str]]] = {
|
233
|
-
UnaryOps.NOT: ('not ', ''),
|
234
|
-
UnaryOps.IS_NULL: ('', ' is null'),
|
235
|
-
UnaryOps.IS_NOT_NULL: ('', ' is not null'),
|
236
|
-
|
237
|
-
UnaryOps.POS: ('+', ''),
|
238
|
-
UnaryOps.NEG: ('-', ''),
|
239
|
-
}
|
240
|
-
|
241
|
-
@Renderer.render.register
|
242
|
-
def render_unary(self, o: Unary) -> tp.Part:
|
243
|
-
pfx, sfx = self.UNARY_OP_TO_STR[o.op]
|
244
|
-
return tp.Concat([
|
245
|
-
pfx,
|
246
|
-
self.render(o.v),
|
247
|
-
sfx,
|
248
|
-
])
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|