omlish 0.0.0.dev452__py3-none-any.whl → 0.0.0.dev454__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.
Files changed (61) hide show
  1. omlish/__about__.py +2 -2
  2. omlish/collections/__init__.py +7 -1
  3. omlish/collections/attrregistry.py +182 -0
  4. omlish/collections/identity.py +1 -0
  5. omlish/collections/mappings.py +25 -0
  6. omlish/dataclasses/__init__.py +2 -0
  7. omlish/dispatch/methods.py +50 -140
  8. omlish/dom/rendering.py +1 -1
  9. omlish/funcs/guard.py +225 -0
  10. omlish/graphs/dot/rendering.py +1 -1
  11. omlish/lang/__init__.py +1 -0
  12. omlish/lang/iterables.py +8 -0
  13. omlish/lite/attrops.py +2 -0
  14. omlish/lite/dataclasses.py +30 -0
  15. omlish/lite/maybes.py +8 -0
  16. omlish/marshal/__init__.py +12 -11
  17. omlish/marshal/base/contexts.py +4 -7
  18. omlish/marshal/base/funcs.py +16 -11
  19. omlish/marshal/base/types.py +17 -7
  20. omlish/marshal/composite/iterables.py +31 -20
  21. omlish/marshal/composite/literals.py +14 -18
  22. omlish/marshal/composite/mappings.py +34 -23
  23. omlish/marshal/composite/maybes.py +27 -19
  24. omlish/marshal/composite/newtypes.py +14 -14
  25. omlish/marshal/composite/optionals.py +12 -14
  26. omlish/marshal/composite/special.py +13 -13
  27. omlish/marshal/composite/unions/__init__.py +0 -0
  28. omlish/marshal/composite/unions/literals.py +91 -0
  29. omlish/marshal/composite/unions/primitives.py +101 -0
  30. omlish/marshal/factories/invalidate.py +16 -66
  31. omlish/marshal/factories/method.py +28 -0
  32. omlish/marshal/factories/moduleimport/factories.py +13 -54
  33. omlish/marshal/factories/multi.py +11 -23
  34. omlish/marshal/factories/recursive.py +40 -56
  35. omlish/marshal/factories/typecache.py +23 -75
  36. omlish/marshal/factories/typemap.py +40 -41
  37. omlish/marshal/objects/dataclasses.py +106 -97
  38. omlish/marshal/objects/marshal.py +15 -12
  39. omlish/marshal/objects/namedtuples.py +46 -40
  40. omlish/marshal/objects/unmarshal.py +16 -13
  41. omlish/marshal/polymorphism/marshal.py +6 -9
  42. omlish/marshal/polymorphism/unions.py +15 -9
  43. omlish/marshal/polymorphism/unmarshal.py +6 -8
  44. omlish/marshal/singular/enums.py +12 -18
  45. omlish/marshal/standard.py +8 -8
  46. omlish/marshal/trivial/forbidden.py +19 -24
  47. omlish/os/forkhooks.py +4 -0
  48. omlish/specs/jsonrpc/_marshal.py +33 -24
  49. omlish/specs/openapi/_marshal.py +20 -17
  50. omlish/sql/queries/rendering.py +1 -1
  51. omlish/text/parts.py +2 -2
  52. omlish/typedvalues/marshal.py +81 -55
  53. {omlish-0.0.0.dev452.dist-info → omlish-0.0.0.dev454.dist-info}/METADATA +1 -1
  54. {omlish-0.0.0.dev452.dist-info → omlish-0.0.0.dev454.dist-info}/RECORD +58 -55
  55. omlish/marshal/composite/unions.py +0 -213
  56. omlish/marshal/factories/match.py +0 -34
  57. omlish/marshal/factories/simple.py +0 -28
  58. {omlish-0.0.0.dev452.dist-info → omlish-0.0.0.dev454.dist-info}/WHEEL +0 -0
  59. {omlish-0.0.0.dev452.dist-info → omlish-0.0.0.dev454.dist-info}/entry_points.txt +0 -0
  60. {omlish-0.0.0.dev452.dist-info → omlish-0.0.0.dev454.dist-info}/licenses/LICENSE +0 -0
  61. {omlish-0.0.0.dev452.dist-info → omlish-0.0.0.dev454.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
2
- omlish/__about__.py,sha256=Ia-k2mCoU1psSy7-YOmB-XdT8JnxIXK5ICScX_nTpxs,3613
2
+ omlish/__about__.py,sha256=J8aygU4-P9CXE7Ipp0WIsYvR4qc9tWE54x0wZEXtc3o,3613
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=ZNIMl1kwg3qdei4DiUrJPQe5M81S1e76N-GuNSwLBAE,8683
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
@@ -64,14 +64,15 @@ omlish/codecs/funcs.py,sha256=or0Jogczuzk7csDTRl-HURMEjl8LXXqxxXYK45xcM5w,855
64
64
  omlish/codecs/registry.py,sha256=y7gjhBY1tTTHZmaK4X02zL5HD_25AAiZ8k27Op69Ag0,4006
65
65
  omlish/codecs/standard.py,sha256=eiZ4u9ep0XrA4Z_D1zJI0vmWyuN8HLrX4Se_r_Cq_ZM,60
66
66
  omlish/codecs/text.py,sha256=P9-xpdiQE3nbI5CzEentf07FBHPzD7_SwOtUQUJ01So,5710
67
- omlish/collections/__init__.py,sha256=BIc806ri5Eq-kR03Ya2YfYTRI0g1rn_0haQPUqxXqys,2816
67
+ omlish/collections/__init__.py,sha256=cSNZ670-GaNW_sCazmLi41HPx5tfzMvkHCvPoyebTEY,2934
68
68
  omlish/collections/abc.py,sha256=p9zhL5oNV5WPyWmMn34fWfkuxPQAjOtL7WQA-Xsyhwk,2628
69
+ omlish/collections/attrregistry.py,sha256=SPvIt8rT8nWvEBqf35I8wPgBU55m0u2ssSmNcYHm_FM,5563
69
70
  omlish/collections/bimap.py,sha256=3szDCscPJlFRtkpyVQNWneg4s50mr6Rd0jdTzVEIcnE,1661
70
71
  omlish/collections/coerce.py,sha256=tAls15v_7p5bUN33R7Zbko87KW5toWHl9fRialCqyNY,7030
71
72
  omlish/collections/frozen.py,sha256=drarjcMFpwKhBM01b1Gh6XDcaRaUgpyuxEiqppaKRkU,4220
72
73
  omlish/collections/hasheq.py,sha256=uHypfZlHhicQPvx9OOlpT9MSLwfc_mFil-WaxF9dTOo,3732
73
- omlish/collections/identity.py,sha256=00UAYIjCRhyj73Es0jVNvOloXjRxHcjRxGQeWo75OEo,4834
74
- omlish/collections/mappings.py,sha256=FWDErWR63y3xcjBfxXH58M1yOAqCdMyFWwzBjGAE7UQ,3346
74
+ omlish/collections/identity.py,sha256=Z6yfUg4PnqxWlMUzcy3MSGL7vckkzuMDBaujffQXjMw,4885
75
+ omlish/collections/mappings.py,sha256=c3ojUN9Ca3oGfmMXSFkDQYou5J15obDfgjCvzq3Url4,3833
75
76
  omlish/collections/multimaps.py,sha256=azuif-PeLGvLpCE9_XX5zYx7XtVbsulWq0owvEKNy_g,3897
76
77
  omlish/collections/ordered.py,sha256=jBSj5CamdKJAezXM8GlRd7jjaRDk6BHIeOhlxcC9lJI,2468
77
78
  omlish/collections/ranked.py,sha256=McB8C2UQfUvrbmxGTpBz1-EZuyCLkBFtktzncMdt8_Y,2287
@@ -125,7 +126,7 @@ omlish/daemons/services.py,sha256=laoUeJU7eVHuWl1062FBjPSD7jchOjhpYDc5FT2B3dM,34
125
126
  omlish/daemons/spawning.py,sha256=CsNhWDebyin_CYwWvLWNpY0djF010HjQTHATvw6dk-M,5349
126
127
  omlish/daemons/targets.py,sha256=9nacraBQYPTnTvPwR4B_tdalF4nwFAXZeo4FSVcHoMg,3057
127
128
  omlish/daemons/waiting.py,sha256=fuR51IHdBDRVtfdewcw_0qw8itoXqmtdR_qtkoBChuE,1702
128
- omlish/dataclasses/__init__.py,sha256=BwqZM_u2dFhMS-9NxAmMppk3DqGRkVAb-U-_eJtbEY0,3618
129
+ omlish/dataclasses/__init__.py,sha256=o4FsoqpLkVN55CPrANwpufRgfASxIFPACCpEOYWICpo,3677
129
130
  omlish/dataclasses/_internals.py,sha256=_THiziiIslUyYC98Y_tZd5aZgvEF3FAGkDSwzRfcDuo,3247
130
131
  omlish/dataclasses/debug.py,sha256=giBiv6aXvX0IagwNCW64qBzNjfOFr3-VmgDy_KYlb-k,29
131
132
  omlish/dataclasses/errors.py,sha256=QeJVRmrZQer3m66jSDiuAyfAngCBtocMxfnsoSxzOVw,2520
@@ -217,7 +218,7 @@ omlish/dispatch/__init__.py,sha256=UwVT6SSk5HKk9xF9vc_UJD8BDSIQWSw98Ldx-G-6PC0,1
217
218
  omlish/dispatch/dispatch.py,sha256=TzWihCt9Zr8wfIwVpKHVOOrYFVKpDXRevxYomtEfqYc,3176
218
219
  omlish/dispatch/functions.py,sha256=cwNzGIg2ZIalEgn9I03cnJVbMTHjWloyDTaowlO3UPs,1524
219
220
  omlish/dispatch/impls.py,sha256=3kyLw5yiYXWCN1DiqQbD1czMVrM8v1mpQ8NyD0tUrnk,1870
220
- omlish/dispatch/methods.py,sha256=RJ-gLF2UdCQKZFhiuV4R1N3lRB_dMH3ItiHwmm-s62o,9873
221
+ omlish/dispatch/methods.py,sha256=aberuaB1ujTwhTdTyZQ2j4azNVkO54nEc28k5ZQ--J4,7337
221
222
  omlish/docker/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
222
223
  omlish/docker/all.py,sha256=t5jBNZAzqCoB05-nwCuSZ6C3PBEBD6T3wsIJvIXJaRg,576
223
224
  omlish/docker/cli.py,sha256=ws3ypayxdnp3nWeLww45jHG0Vwr5e4bUbLTqkpejAhc,2570
@@ -232,7 +233,7 @@ omlish/docker/timebomb.py,sha256=EnFt8pJeXkowF_F5NXnN0ogDmxUmVymV4h1CYPwyJr4,356
232
233
  omlish/dom/__init__.py,sha256=RYkv9inuebWIKsRuPXr3j0njgLFKzIo-ujKc4JEp0wc,301
233
234
  omlish/dom/building.py,sha256=VPMbGxv730dYjS_jlrrp0qiZhuGT8OheFamUAgtQdF4,1022
234
235
  omlish/dom/content.py,sha256=1NkE1eb0ITfps-yJ-Lbtm6kGnvUmQy6HWo01gnvSkiU,2775
235
- omlish/dom/rendering.py,sha256=5cQK3A_uifh3Th5v3c0nx-tW8d1KyGL6C9tASPaNVNI,4336
236
+ omlish/dom/rendering.py,sha256=zypSFpZO0pBfPY_ZJXeywovu0pbEtQzLYzn6TZfpRlk,4357
236
237
  omlish/formats/__init__.py,sha256=T0AG1gFnqQ5JiHN0UPQjQ-7g5tnxMIG-mgOvMYExYAM,21
237
238
  omlish/formats/cbor.py,sha256=o_Hbe4kthO9CeXK-FySrw0dHVlrdyTo2Y8PpGRDfZ3c,514
238
239
  omlish/formats/cloudpickle.py,sha256=16si4yUp_pAdDWGECAWf6HLA2PwSANGGgDoMLGZUem8,579
@@ -287,6 +288,7 @@ omlish/formats/toml/writer.py,sha256=9NT8sRy3I9KubxFx56Qbislvrdtbd23rEuBT-GSdUYA
287
288
  omlish/funcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
288
289
  omlish/funcs/builders.py,sha256=ZSBQS2xqriXp5x0t074EEZvuTmMp4Yue2YGBoTLAioo,4044
289
290
  omlish/funcs/genmachine.py,sha256=BOxO1OTjxZ7ewv_WpqYkY8bwlGQIJIjwjvYMflEFa_M,2571
291
+ omlish/funcs/guard.py,sha256=OfxDQRJfnRmVrXOPK2QuUtJ3MN3dxMA_q0gIb7C8m2s,5958
290
292
  omlish/funcs/match.py,sha256=cBtG7kdpWdxvHwlte5CWlBxXSoJSV48joV4bwJJC3pk,6352
291
293
  omlish/funcs/pairs.py,sha256=XhYTJdqooAJKeoGZmEaiKYeFRq5-Dj2_y92IdBl_C20,4371
292
294
  omlish/funcs/pipes.py,sha256=E1dQZMBmgT2qautG1vEqy5v3QBsO2Nzryv33j4YAngA,2520
@@ -297,7 +299,7 @@ omlish/graphs/trees.py,sha256=r_kZw-83c1KXe7fida-CVWNGDX9quPTmhAjJ5I5uKRc,8198
297
299
  omlish/graphs/dot/__init__.py,sha256=Y1MZRQBZkcYyG1Tn7K2FhL8aYbm4v4tk6f5g9AqEkUw,359
298
300
  omlish/graphs/dot/items.py,sha256=GIzUqLHJPR4AVtF141uA8JnyybkRZx6mFYsNJHu_JVg,4087
299
301
  omlish/graphs/dot/make.py,sha256=e-M1IEdh4kHEjJmBxpaEUPxvFLrm5uIXdGxjQZr2HRo,365
300
- omlish/graphs/dot/rendering.py,sha256=IOCEEOqlsRctoIgnz1I9v0ycHHDAr5zYubTXT7v_YwA,3634
302
+ omlish/graphs/dot/rendering.py,sha256=SGSpwswdFqsjEnznQDyryIsXE8bzPXSUFAJHlB2uT2Y,3655
301
303
  omlish/graphs/dot/utils.py,sha256=8cGKIdcM-w1q4ITUYyC0lnYwLqNWuH2OddmmbLxVgEo,806
302
304
  omlish/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
303
305
  omlish/http/all.py,sha256=ChV0KcPN8CKcwlQiWqYyMvmjHuH9qhBsd2kV7-HrFto,1409
@@ -409,7 +411,7 @@ omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,4
409
411
  omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
410
412
  omlish/iterators/transforms.py,sha256=YHVdD9nBkS1k4kogi4Ba0UOTU_pKkuX9jGw1Tqj3UMw,3598
411
413
  omlish/iterators/unique.py,sha256=BSE-eanva8byFCJi09Nt2zzTsVr8LnTqY1PIInGYRs0,1396
412
- omlish/lang/__init__.py,sha256=O-W0CaUsWeFjCuIdED2wiLhfVicEpPbS_DQQB-t0DpE,10702
414
+ omlish/lang/__init__.py,sha256=FiAlQCNPHoJABATaW-eFLEe8h0crfDgt--VFhKDTIJ0,10720
413
415
  omlish/lang/asyncs.py,sha256=iIHJp7nvgJVj7zS0Ji7NsVSzz54vkzrj0Snc83dxe9g,1965
414
416
  omlish/lang/attrstorage.py,sha256=UUnoENCMQF3twBfxBcIKa5mpXsAxWnNYDayhU8xgmpU,5224
415
417
  omlish/lang/casing.py,sha256=3_c7cxQOc4z_YezaU2B4NCTAsPh_kDL4wUTK5kZU6kg,4675
@@ -423,7 +425,7 @@ omlish/lang/enums.py,sha256=F9tflHfaAoV2MpyuhZzpfX9-H55M3zNa9hCszsngEo8,111
423
425
  omlish/lang/errors.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
424
426
  omlish/lang/functions.py,sha256=f7K2SC-09veno_lsUGu0DkZks2gL8VpsmyQMB4Q_i6Q,5663
425
427
  omlish/lang/generators.py,sha256=nJiSmDpsfPiypGzJ8qlOO7-BUnCsrAeDow9mhtGgBio,5196
426
- omlish/lang/iterables.py,sha256=o_s8ouaJrdUqEVl2_bzJk5CVdabmrywXY0gPn7xss3w,3371
428
+ omlish/lang/iterables.py,sha256=5CJNkLyY4Oq43UkiM7KCgV9F6jzrlr9SLiuNx3DAvm8,3608
427
429
  omlish/lang/lazyglobals.py,sha256=YfPtWgNEa0ULtbIiQIQ12pbafUwd6INQRw_PFcAabjo,2282
428
430
  omlish/lang/maybes.py,sha256=8GUpqJvyx9y5PQBQBBx6yTSE5WKsMbXMHPt4_vojKUw,209
429
431
  omlish/lang/maysync.py,sha256=S2Q_rGC4AxRa1UsGJdSzZsYpgOcX9Y8ZmYGA9v8OWn8,1635
@@ -468,17 +470,17 @@ omlish/lite/__init__.py,sha256=cyZEpGob7XjU8DohyNxVe5CQRk4CQ5vrHL42OdhQb8w,148
468
470
  omlish/lite/abstract.py,sha256=Z3kLviPNGLkmA8m8BZILzWxez_sP18OyzgMP3-c2-RI,4068
469
471
  omlish/lite/args.py,sha256=ILJXAiN3KjIoJwY42aKpYPngUdxHIy9ssVIExFVz3fE,978
470
472
  omlish/lite/asyncs.py,sha256=ITnHvg1gq4Wl6PmhwK6DTKriNLBfxFfiVLE9QL6LEHk,3254
471
- omlish/lite/attrops.py,sha256=FD4QFnNqDyLCbVPIP8Zq-6gCZoqHgrH-0z4200huL9U,11243
473
+ omlish/lite/attrops.py,sha256=02DNBjOl27NjznkwolgPwtWpA1q3UPUuwOjHsgG4oLo,11381
472
474
  omlish/lite/cached.py,sha256=AF0PdB2k4h2dyNc5tzrmnNrb9zKnoMPQU3WA8KrhS_o,3108
473
475
  omlish/lite/check.py,sha256=ytCkwZoKfOlJqylL-AGm8C2WfsWJd2q3kFbnZCzX3_M,13844
474
476
  omlish/lite/configs.py,sha256=4-1uVxo-aNV7vMKa7PVNhM610eejG1WepB42-Dw2xQI,914
475
477
  omlish/lite/contextmanagers.py,sha256=usDzBoNqJi98AccVlwgZoMvoBXOe9wyx2MreZtWhJy4,5863
476
- omlish/lite/dataclasses.py,sha256=W0352jGrqVvHre_kUxNfmfwMUDcHBMT-xbRJFW-lIIc,3872
478
+ omlish/lite/dataclasses.py,sha256=sBsClTxr5nmoahgXzruyZS6GqEWYGmDs8YvAXOIMl74,4814
477
479
  omlish/lite/imports.py,sha256=GyEDKL-WuHtdOKIL-cc8aFd0-bHwZFDEjAB52ItabX0,1341
478
480
  omlish/lite/inject.py,sha256=BQgjBj2mzJgMimLam-loSpQzcb31-8NYPVRQgHVv3cQ,29159
479
481
  omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
480
482
  omlish/lite/marshal.py,sha256=oVqVwqTArFUj9lYhmKg_MVgnqlCAUvOnYgtU3bBu_bk,23020
481
- omlish/lite/maybes.py,sha256=sJ4dawgBxlZ4oB9dZ3bhBb_8AOJlIW0nVIFgFZ1huXE,4384
483
+ omlish/lite/maybes.py,sha256=NCnMZaSbIfvOMqz69aYmmvZQDd0c61QjG3ju7uJc8t8,4531
482
484
  omlish/lite/maysync.py,sha256=Otd-xqWaMzY9xBF5SiLKxu4kG_GaWGk8qTGFDAHXDm4,14803
483
485
  omlish/lite/objects.py,sha256=HzN_4J6w6WDLKDrW8jSNUKgfAR5vUsB42rtSCu04oqQ,1921
484
486
  omlish/lite/pycharm.py,sha256=fdSTwtdqGRL0P9IkCrDAPqQkJsegq1NfYyVG2N6cy4w,1174
@@ -526,64 +528,65 @@ omlish/manifests/globals.py,sha256=kVqQ-fT4kc7xWzLHoI731GviitFPv2v2yqw-p7t7Exs,2
526
528
  omlish/manifests/loading.py,sha256=s6KnhdFQCsI2i0Rus1sMU0so2v8dUBnk59BJkSnxGt8,17514
527
529
  omlish/manifests/static.py,sha256=9BaPBLkuzxHmg5A-5k9BjjBFINCdmFOIu06dMFgCfz4,497
528
530
  omlish/manifests/types.py,sha256=NeOGuIVrcbqjCDbQ3MnCxxHAgHnw0CkWJsBzo230PWE,453
529
- omlish/marshal/__init__.py,sha256=HLC2svV0fqgDhAk2RJ7WWrfn7co45VwXjIZXYuYOJ6g,6340
531
+ omlish/marshal/__init__.py,sha256=NYAgvE_LM32NhxKYAXzUntpenu-d5iFOFDzDtm99MGo,6464
530
532
  omlish/marshal/globals.py,sha256=Q6G18hcUwUDDNnpyRPnR5Tn_XZpZCSIEXo09nYSOaNU,2236
531
533
  omlish/marshal/naming.py,sha256=Mk5YrbES836_KflNNRoc5Ajd96iMYLQIMERKx1KpT4g,865
532
- omlish/marshal/standard.py,sha256=UUdg74AMalPafWdQTR_kUY_n46a5G4iRo3BJfniniL8,6870
534
+ omlish/marshal/standard.py,sha256=8Qy5L3qMHO-V_fu78tM62wMcGpF0kgrFrxn06IRbFXQ,6906
533
535
  omlish/marshal/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
534
536
  omlish/marshal/base/configs.py,sha256=y_JRghQgu8mJjPspSZcJQLhjevEuJE2kyxCdu3wGKvo,271
535
- omlish/marshal/base/contexts.py,sha256=yt-CNl2MH-TLiNtTQOvGU7-6AvJcwNf8ggBInKTRnbs,2292
537
+ omlish/marshal/base/contexts.py,sha256=kqfw0TLz70dfaRCZyjH12js6wzsk7BoGPHfDXoRv_YY,2222
536
538
  omlish/marshal/base/errors.py,sha256=jmN3vl_U_hB6L0wAvuO7ORG27vXF7KEUk-1TxxK2mYA,308
537
- omlish/marshal/base/funcs.py,sha256=OeSb8T3R0HZmEnAI4lOhI1HPRurTAezzV3TZWdGGK9s,1558
539
+ omlish/marshal/base/funcs.py,sha256=Tc_v3hhj61n6_ieQETe1vaYrN7sByZ4Xv5AzacsqGzQ,1634
538
540
  omlish/marshal/base/options.py,sha256=OoDErPmI0kswnqAtr7QYndlPYhIqIDarx833tKFT2R4,23
539
541
  omlish/marshal/base/overrides.py,sha256=543hP4_y2JRThUOamCE0dPfgucbepVV8e_YF-_PJk6U,993
540
542
  omlish/marshal/base/registries.py,sha256=NRH5X4nE_aF7vcTi4_5qqQpYbYru2Ud6aD0eKfuJ_Ws,5903
541
- omlish/marshal/base/types.py,sha256=DBczbVhz9z9zM4uux43KUnCEJUIW_JqVNyXMxPd--Cs,2472
543
+ omlish/marshal/base/types.py,sha256=YcA8smfVkIWNfMV4y6FEqQBJoFfwz1AOiHvbaaD27kE,3032
542
544
  omlish/marshal/base/values.py,sha256=QF6OateG5kjRPHYza08wscThhg20oryf-aVQrxjfkC0,212
543
545
  omlish/marshal/composite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
544
- omlish/marshal/composite/iterables.py,sha256=2VU3sh5TBKMVF1cWPXhDeuELPQzrAYovmTNHzoFLeS4,2704
545
- omlish/marshal/composite/literals.py,sha256=HB2uhkom3D214PqBlE2WXXu7Hjl18V65E7J2TJK-cYM,1840
546
- omlish/marshal/composite/mappings.py,sha256=hOQ-_UZCFTqW_y70a4hNJsNsr2J9y3MYIePEymZMj94,2861
547
- omlish/marshal/composite/maybes.py,sha256=Qy0-bxW3fC3jVvDzszNQogGwGSAwmPt61nTXP06l6cY,2273
548
- omlish/marshal/composite/newtypes.py,sha256=KiDsuBtF7jbWk7A3wy2LAZvuaG7KJzYNF1Y0jKSOZWU,932
549
- omlish/marshal/composite/optionals.py,sha256=A-0GUaTL5585mxdNO_FcpnP2KFmJ64MkAwMukqng2ls,1596
550
- omlish/marshal/composite/special.py,sha256=325cEkzGw2XoMq6W0CvvO7n2Dx9I3mDsjdlZ2tN4Bfs,1402
551
- omlish/marshal/composite/unions.py,sha256=qUVAbUS16YI1toRmq0liyuMUQSq1d2Ox5mAW0zYCdog,6058
546
+ omlish/marshal/composite/iterables.py,sha256=b9REKCYhbPSj2VwUG8wRjonrENExIE1fjHTd3hHYsYc,2974
547
+ omlish/marshal/composite/literals.py,sha256=jbPi5A7xgRja3GdiwPwFtIkP_Z-Smb1m3yDnEWIYU9w,1716
548
+ omlish/marshal/composite/mappings.py,sha256=U1ONUxnJj9oaduJ4Gh2bOzAfcAtAdp-pn1RWndYJlng,3127
549
+ omlish/marshal/composite/maybes.py,sha256=d2z2lrzbfMJ7Vtn7UmUk4BkbSSP-8sHt8K4d0Xbo3tc,2531
550
+ omlish/marshal/composite/newtypes.py,sha256=uOPpcbq3Rb_0VavwqEREhxteNNNHZnUh7W3wcn_EWNk,923
551
+ omlish/marshal/composite/optionals.py,sha256=Y0YkHoXhhUkmWhEyeevtq9tXS9UfGcKVGl--MvjB7iI,1570
552
+ omlish/marshal/composite/special.py,sha256=u9jMgs_6ozyoFin8pLDsvjrEip98zxRlai0HliHmVjU,1314
552
553
  omlish/marshal/composite/wrapped.py,sha256=xC8k21wJOpSkpAn7794hBTPBRw-HPC9sOF3WRlUh_BA,785
554
+ omlish/marshal/composite/unions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
555
+ omlish/marshal/composite/unions/literals.py,sha256=nDEseg440hPNZy0avkTzlTWuEJlBH2Z729wAtpSvZf0,2648
556
+ omlish/marshal/composite/unions/primitives.py,sha256=vsWNjtjjy49Z-WX3hZzRGUHfmToh4-7A8KT7plIzcZ8,2821
553
557
  omlish/marshal/factories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
554
- omlish/marshal/factories/invalidate.py,sha256=Jo0aGNg94LqkexVYnbwxeOscgiLC1ap_kzAgWPvRaKE,3053
555
- omlish/marshal/factories/match.py,sha256=MALwOa2FyD4PpHfG-iLBdn8-3FMx_wI123RD4xfd79w,893
556
- omlish/marshal/factories/multi.py,sha256=0chkODC3AGz4wxDq82V69clGRtk1Wjc6O_yOGZxn6bQ,1479
557
- omlish/marshal/factories/recursive.py,sha256=_U3yLiPI0R1qT5J19It2pFFTFVr-O2rXTBjcK-zPpOY,3143
558
- omlish/marshal/factories/simple.py,sha256=6ghaGPsj2rBeh85sV84_v3kEq3pZ8hyVEwd4UMoNfBI,576
559
- omlish/marshal/factories/typecache.py,sha256=Q8VMGsXJMycKGIuA9NYT6h6NmcNUB8-5A_qmV1V_ztM,2813
560
- omlish/marshal/factories/typemap.py,sha256=CxScQbRw3VwILGhf38v2yOiof45YJ9p2LQhZ37SHNj8,1606
558
+ omlish/marshal/factories/invalidate.py,sha256=DmnyOaVSMmlHRjoLtxbpPynCI6vxIeSE6K6Gt2CzHhY,1959
559
+ omlish/marshal/factories/method.py,sha256=ZyyLTn7y7K1yLZI-UowWZHa_hTs1F93v3Jc5sdPMg4E,884
560
+ omlish/marshal/factories/multi.py,sha256=TBabfvqNe9z94egP8z3CGmcx21-c_aVEEA6-IJj-rp0,1251
561
+ omlish/marshal/factories/recursive.py,sha256=W24-Td1TylXxDjOCz9So-GYAtOhkNzuO78NKHo5GBgs,2868
562
+ omlish/marshal/factories/typecache.py,sha256=JwRRTnTgTa-AEtPbfjJg2t4n2TAmvxvFOI5UerUeRZc,1659
563
+ omlish/marshal/factories/typemap.py,sha256=aNxAHsdwuaeACR3Ll0WZ2EMqJN-pnSiZ5g45Rq4QQ5k,1967
561
564
  omlish/marshal/factories/moduleimport/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
562
565
  omlish/marshal/factories/moduleimport/configs.py,sha256=8g6FSPmyo0IOYSWYp5kqfJACZxL9SvzlHzrSzucNZyg,538
563
- omlish/marshal/factories/moduleimport/factories.py,sha256=6q3h8V2uOQKXZUNFnrpK2Zo2Huo920cvk6CL-W3U4gE,3198
566
+ omlish/marshal/factories/moduleimport/factories.py,sha256=PaXmv83xIBqWB8fwJglXMM9Mr2tzLmK_nhjsKSKUVCA,2376
564
567
  omlish/marshal/objects/__init__.py,sha256=F4wej8L_tedC8ETYxAnmKfdPR9TjsqIus9Z3nZofYuc,182
565
- omlish/marshal/objects/dataclasses.py,sha256=JbtI0aciUH6_eqw9qDz2O9NlbndgSvV9Cxn7SrPG7xM,9511
568
+ omlish/marshal/objects/dataclasses.py,sha256=R_rxgmo5qo3XoC7h00VbFWtCkEBgY-UzigHDYDgwYC4,10014
566
569
  omlish/marshal/objects/helpers.py,sha256=hj5I1pILt3QFSVkYJNrSO3wiCaalAopEYWPL17Ip4zs,1102
567
- omlish/marshal/objects/marshal.py,sha256=9Z19aasMNsDn8KBHmUT-XnoP23c5r50CYo0z4IBfUf0,2680
570
+ omlish/marshal/objects/marshal.py,sha256=KNxAUUzwJs3Ttn4hELjy_9NRUugtW9zXQI8Nz4vVNiE,2744
568
571
  omlish/marshal/objects/metadata.py,sha256=maGqyQl0GE9xWK17DQjXxhZWRh3nRwH4fgklrA8XVQI,3392
569
- omlish/marshal/objects/namedtuples.py,sha256=uzOZuEt2IrWtk7uyo13xaWEmFhxRQ3aKAzom05qUfBA,2928
570
- omlish/marshal/objects/unmarshal.py,sha256=izhtSwqSrlWSOL5uZS3naPxnfq3rhv25uUPN7_rpO08,3664
572
+ omlish/marshal/objects/namedtuples.py,sha256=FHJFi84462vrkDvEsBAb9B7FmAS7I_ACx4vm4HnT5xU,3118
573
+ omlish/marshal/objects/unmarshal.py,sha256=LI0HKaCvUpoERFs2Mmi8g37P2WweWXrVLiZgYzJg7Vo,3734
571
574
  omlish/marshal/polymorphism/__init__.py,sha256=e2UTrSL0qp7w_1vkdxDWd7sXlWhep2KPV49-BB64ma8,130
572
- omlish/marshal/polymorphism/marshal.py,sha256=ZnayCbRj3451U4py1-9dU99PHvjQuQk-ZQDGgzQjF4U,2292
575
+ omlish/marshal/polymorphism/marshal.py,sha256=YgxQKDKC2Jq3mD3IYbBwzT6zsW8Lbi-zibbOK_noABc,2221
573
576
  omlish/marshal/polymorphism/metadata.py,sha256=s5lNTzvP487niVorDUy6RFeTB7hde89ENgm-7I_MQg0,3622
574
577
  omlish/marshal/polymorphism/standard.py,sha256=sfxKVjFG8tUam_U75_rFMY2-JSWw_l1_HBg2MrXjQHE,1096
575
- omlish/marshal/polymorphism/unions.py,sha256=YoeDteNF3vKipGCvJDKamkykXQJ43K6R1zxM725T0YU,1963
576
- omlish/marshal/polymorphism/unmarshal.py,sha256=8bLeI9UxUluoIqkRJSJIbdCsKkXjx3myYe9uWs16QjY,2483
578
+ omlish/marshal/polymorphism/unions.py,sha256=tYE5hJBqd5NRAWsw93hnWJdjzp0wVR9pdIgMr2I9oX4,2163
579
+ omlish/marshal/polymorphism/unmarshal.py,sha256=Zu65a26OttpMi1udRe32i1l1das-_Om_L-af_XbathU,2434
577
580
  omlish/marshal/singular/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
578
581
  omlish/marshal/singular/base64.py,sha256=OZ3Ydwy64S0M-xlktYy5MagzyzTOVYayUXblq8ZK-AE,1164
579
582
  omlish/marshal/singular/datetimes.py,sha256=nzOf8LRwAB08X80N_NmWuE3rOrYG80ZgIaZO3549WnE,3784
580
- omlish/marshal/singular/enums.py,sha256=jffB2uIfQWs9cwpDxYUatBU0OkujkjA64oqh7ecSG7E,1569
583
+ omlish/marshal/singular/enums.py,sha256=l7qaW68dGjUQ6JfB8KQSoPOglDRFGzCJGNv6hj0Nxug,1377
581
584
  omlish/marshal/singular/numbers.py,sha256=32_lSiaQc796u0WsPyiYORiJoaI5qh2IZxiIfF8n360,1746
582
585
  omlish/marshal/singular/primitives.py,sha256=T1mRNMin7OOBjsBkAh1xVbHa-VBmtMfL55mhCfiruIg,1360
583
586
  omlish/marshal/singular/uuids.py,sha256=J6Swxzm0rFvAMCmErJb4WpSPmnQyts7qOqy43Y1BugI,984
584
587
  omlish/marshal/trivial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
585
588
  omlish/marshal/trivial/any.py,sha256=XaqSW0fyq2FVE4PQ4IG0UaXr59kRVGccgZDlsNHrd_Q,852
586
- omlish/marshal/trivial/forbidden.py,sha256=fkvyBViUjrpfB6JJu47k-yxAvLkJw7JSZqSP-Abr_04,1092
589
+ omlish/marshal/trivial/forbidden.py,sha256=v56LLiXA9ZeYASE4bI56yZTRpyrQIKRGJWVjcPQNCNo,1194
587
590
  omlish/marshal/trivial/nop.py,sha256=PDXT0B9RR-ghG6ExuK9BH2J-nHEnoTYGNdVaNAyRzSk,506
588
591
  omlish/math/__init__.py,sha256=bcdEEM3l4YNPJvTY_gD-7ARa5HEBNFTfvkVDTTzaNOQ,1531
589
592
  omlish/math/bits.py,sha256=pcTuWxNXXfG-CtTITNNbW3YConAkCeU8PLNcglCc43E,533
@@ -602,7 +605,7 @@ omlish/os/environ.py,sha256=fDjnSO2Qz6lpvICx54JZpdPF-BxL4zKAWU3x_6UTxCI,3681
602
605
  omlish/os/fcntl.py,sha256=EUa4TkeqdKix-uIweRitIZsgT9ohY7OQ5QiIhUW9S0c,1512
603
606
  omlish/os/filemodes.py,sha256=JjHXZ7_BUQRphlA6_DkQoRSOEXxQUWWoKiS2-54rMVo,4586
604
607
  omlish/os/files.py,sha256=PmFQIesLmpYORm4dMKTkj2PeS8iu-KbfPmjZHaabeVc,1117
605
- omlish/os/forkhooks.py,sha256=atbKbHjDgPownKIyRu8F_DfpSceNSYvkc53WHa_1s84,5697
608
+ omlish/os/forkhooks.py,sha256=T9BALcFeffR3xJbekSuYUvftwiXiwnO7N8dvtbmo98I,5761
606
609
  omlish/os/journald.py,sha256=RS6Vjlm1N-J7I6h39A5onmKueCA4ViRhrlDam2523V0,3921
607
610
  omlish/os/linux.py,sha256=CfnYR1vJooo74OfeiSB6EaB1KN5SLz9x3b1KXtJIRQ4,18949
608
611
  omlish/os/mangle.py,sha256=1Z_gYNiRiHn7wAA8tGEumra3lD4r9Isn581Ml2auJZI,531
@@ -661,7 +664,7 @@ omlish/specs/jmespath/parser.py,sha256=uNk9_xQ9cZJC1h5naoH1HMbCs4B0WhV2jN5AvhdKT
661
664
  omlish/specs/jmespath/scope.py,sha256=gsVjmAVF0b7s2SevWb0rBbURayiMSIuXfzO4v1ONIrY,1595
662
665
  omlish/specs/jmespath/visitor.py,sha256=6OCi7oa4IsGW5fCqAeFuXYEwn-aLKuMrNMFtQKSpJWo,16951
663
666
  omlish/specs/jsonrpc/__init__.py,sha256=u2kcJeo6YWEvFYf7OqDNKThszGLSmXYFNJpqXmXgm1M,504
664
- omlish/specs/jsonrpc/_marshal.py,sha256=I4mw9uGwrlNe5xXoJixpefPuP-fh2QiDZsTBI4gAQZI,1856
667
+ omlish/specs/jsonrpc/_marshal.py,sha256=Z85o3XHUlzPN37J6CcM2yqhHNtX6pARHf9VfV2cv5Ds,2058
665
668
  omlish/specs/jsonrpc/conns.py,sha256=zvWnBHuSoGnvbGVk72Usp4IFsLscrzPozqR2hmFjnDI,7029
666
669
  omlish/specs/jsonrpc/errors.py,sha256=WxEU7k1TqeZAo_H6eU0LcrXSd-Gi_3fTvtxjXZ9qKww,712
667
670
  omlish/specs/jsonrpc/types.py,sha256=Se9ecG-_k-kY_Qlt9QD2t3y26oY4sXTcskp6XZfVans,3054
@@ -691,7 +694,7 @@ omlish/specs/jsonschema/schemas/draft202012/vocabularies/meta-data.json,sha256=j
691
694
  omlish/specs/jsonschema/schemas/draft202012/vocabularies/unevaluated.json,sha256=Lb-8tzmUtnCwl2SSre4f_7RsIWgnhNL1pMpWH54tDLQ,506
692
695
  omlish/specs/jsonschema/schemas/draft202012/vocabularies/validation.json,sha256=cBCjHlQfMtK-ch4t40jfdcmzaHaj7TBId_wKvaHTelg,2834
693
696
  omlish/specs/openapi/__init__.py,sha256=KS7OHPBlXwBeTvmsUQy0VMzKYdz2RyH3qLF3bU0NXUw,147
694
- omlish/specs/openapi/_marshal.py,sha256=PYx4Jj8bxnimUwuFi6Y5-Nj1HternkSSx-Rovn-Wp2k,4450
697
+ omlish/specs/openapi/_marshal.py,sha256=DFO1dbUnaxg_G9ke24vIGAU-4IgJcBR1mtIIcsVL6so,4510
695
698
  omlish/specs/openapi/openapi.py,sha256=6KGY_d8HOyG7ssHIWM40MCXgIMzNLiLKHYNggTSpAYM,12027
696
699
  omlish/sql/__init__.py,sha256=JjgIiP2YfiHHIANP7qgkJUG0IMIRzzvKntyhdDKeNdY,384
697
700
  omlish/sql/abc.py,sha256=3hrCjB4jnPVMef_YXClCblzYUZ9l9yaxJJdd5_Nu9GM,4043
@@ -730,7 +733,7 @@ omlish/sql/queries/names.py,sha256=25kPRYse_ivI17lMD9st04k7QQMOGf5plb4b8yZFpUI,2
730
733
  omlish/sql/queries/ops.py,sha256=pDZ_2Jo_Fa8DDbtYkc6-9eehkWsZPI-jh-KFlubcY6Y,134
731
734
  omlish/sql/queries/params.py,sha256=ocjaJbhv_5LWgxdjoZg8vyAWDZxsij4cKH8Lx4hXMT0,1261
732
735
  omlish/sql/queries/relations.py,sha256=P0qBqNICyeig9sEZAYLZcTXcI1YFiBe6REm6jNhpHUI,2630
733
- omlish/sql/queries/rendering.py,sha256=3Ocw52DDDsUavEmb8xH-2Mhp-3pZCXsJVXFuVTOUBqk,7779
736
+ omlish/sql/queries/rendering.py,sha256=Kc7GqLKnuzfeVv4MPTkjYb6-n4fTBLOKo4QjfPc-WBY,7800
734
737
  omlish/sql/queries/selects.py,sha256=XNisb2draHURYhbZsTFw7DJQaN1Zfo2Znm-Ty0lHNTo,1773
735
738
  omlish/sql/queries/std.py,sha256=FdJkXD7oiuj8mtVzvbsL1ZocEEAfaSdOsfTVB1YhtrE,699
736
739
  omlish/sql/queries/stmts.py,sha256=pBqwD7dRlqMu6uh6vR3xaWOEgbZCcFWbOQ9ryYd17T4,441
@@ -808,7 +811,7 @@ omlish/text/indent.py,sha256=BWVVaHs_B1ppwHJJIxKCDG3iCutkYy5e1qr59Z_Suzg,1524
808
811
  omlish/text/linecache.py,sha256=hRYlEhD63ZfA6_ZOTkQIcnON-3W56QMAhcG3vEJqj9M,1858
809
812
  omlish/text/mangle.py,sha256=k7mYavVgxJ2ENV2wfjw3c9u3hqH5NeVpjoxYbyaYC0Y,2796
810
813
  omlish/text/minja.py,sha256=7UKNalkWpTG_364OIo7p5ym--uiNPR2RFBW_W8rrO4I,9194
811
- omlish/text/parts.py,sha256=MpiCUyfpcL4PLb2Etj8V7Yj4qofhy0xVwBrIL6RfNdg,6646
814
+ omlish/text/parts.py,sha256=MFi-ANxXlBiOMqW2y2S0BRg6xDwPYxSXSfrYPM3rtcE,6669
812
815
  omlish/text/random.py,sha256=8feS5JE_tSjYlMl-lp0j93kCfzBae9AM2cXlRLebXMA,199
813
816
  omlish/text/templating.py,sha256=i-HU7W-GtKdnBhEG3mnSey5ig7vV0q02D3pVzMoOzJY,3318
814
817
  omlish/text/go/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -819,13 +822,13 @@ omlish/typedvalues/collection.py,sha256=CK4Vk9kJqAt2V8o6I4zGyv2u9DKov12uSvsGdqEd
819
822
  omlish/typedvalues/consumer.py,sha256=lDOE-O_sgGbOvbcBg2g5ZRaV2WixnuEYxFsJBaj18oU,4690
820
823
  omlish/typedvalues/generic.py,sha256=ft-x4X3k1oFirtYnDfsvrI3ZQikWM8lGLrvrOEbcGq0,742
821
824
  omlish/typedvalues/holder.py,sha256=vu-umn-h1nvUqmtV5T9ZfQ_OoOYsERu8PhI2N48Ryns,1133
822
- omlish/typedvalues/marshal.py,sha256=TWwqiGROaQwcxglGiBt_t5D9AvlWsy3ELm7do-nPeao,4968
825
+ omlish/typedvalues/marshal.py,sha256=HKlUzFhOfJgxLADRHOIcwlr-UbGSSuUHkNgUX070k0E,5954
823
826
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
824
827
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
825
828
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
826
- omlish-0.0.0.dev452.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
827
- omlish-0.0.0.dev452.dist-info/METADATA,sha256=6HeJlCFmWua6YWGrp4v6KNC037N-n4-CEcHqBzCBUqc,19003
828
- omlish-0.0.0.dev452.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
829
- omlish-0.0.0.dev452.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
830
- omlish-0.0.0.dev452.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
831
- omlish-0.0.0.dev452.dist-info/RECORD,,
829
+ omlish-0.0.0.dev454.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
830
+ omlish-0.0.0.dev454.dist-info/METADATA,sha256=N5zehQbu1WtUkkeeT84dmZqYu8lVV354n5GZT0MZmd8,19003
831
+ omlish-0.0.0.dev454.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
832
+ omlish-0.0.0.dev454.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
833
+ omlish-0.0.0.dev454.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
834
+ omlish-0.0.0.dev454.dist-info/RECORD,,
@@ -1,213 +0,0 @@
1
- import typing as ta
2
-
3
- from ... import check
4
- from ... import collections as col
5
- from ... import dataclasses as dc
6
- from ... import lang
7
- from ... import reflect as rfl
8
- from ...funcs import match as mfs
9
- from ..base.contexts import MarshalContext
10
- from ..base.contexts import UnmarshalContext
11
- from ..base.types import Marshaler
12
- from ..base.types import Unmarshaler
13
- from ..base.values import Value
14
- from ..factories.simple import SimpleMarshalerFactory
15
- from ..factories.simple import SimpleUnmarshalerFactory
16
-
17
-
18
- ##
19
-
20
-
21
- class MatchUnionMarshaler(Marshaler):
22
- mmf: mfs.MultiMatchFn[[UnmarshalContext, Value], ta.Any]
23
-
24
- def marshal(self, ctx: MarshalContext, o: ta.Any) -> Value:
25
- try:
26
- m = self.mmf.match(ctx, o)
27
- except mfs.AmbiguousMatchesError:
28
- raise ValueError(o) # noqa
29
- return m.fn(ctx, o)
30
-
31
-
32
- class MatchUnionUnmarshaler(Unmarshaler):
33
- mmf: mfs.MultiMatchFn[[UnmarshalContext, Value], ta.Any]
34
-
35
- def unmarshal(self, ctx: UnmarshalContext, v: Value) -> ta.Any:
36
- try:
37
- m = self.mmf.match(ctx, v)
38
- except mfs.AmbiguousMatchesError:
39
- raise ValueError(v) # noqa
40
- return m.fn(ctx, v)
41
-
42
-
43
- ##
44
-
45
-
46
- PRIMITIVE_UNION_TYPES: tuple[type, ...] = (
47
- float,
48
- int,
49
- str,
50
- bool,
51
- )
52
-
53
-
54
- class DestructuredPrimitiveUnionType(ta.NamedTuple):
55
- prim: ta.Sequence[type]
56
- non_prim: ta.Sequence[rfl.Type]
57
-
58
-
59
- def _destructure_primitive_union_type(
60
- rty: rfl.Type,
61
- prim_tys: ta.Container[type] = PRIMITIVE_UNION_TYPES,
62
- ) -> DestructuredPrimitiveUnionType | None:
63
- if not isinstance(rty, rfl.Union):
64
- return None
65
-
66
- pr = col.partition(rty.args, lambda a: isinstance(a, type) and a in prim_tys)
67
- if not pr.t or len(pr.f) > 1:
68
- return None
69
-
70
- return DestructuredPrimitiveUnionType(*pr) # type: ignore[arg-type]
71
-
72
-
73
- #
74
-
75
-
76
- @dc.dataclass(frozen=True)
77
- class PrimitiveUnionMarshaler(Marshaler):
78
- tys: ta.Sequence[type]
79
- x: Marshaler | None = None
80
-
81
- def marshal(self, ctx: MarshalContext, o: ta.Any) -> Value:
82
- if type(o) not in self.tys:
83
- if self.x is not None:
84
- return self.x.marshal(ctx, o)
85
- raise TypeError(o)
86
- return o
87
-
88
-
89
- @dc.dataclass(frozen=True)
90
- class PrimitiveUnionMarshalerFactory(SimpleMarshalerFactory):
91
- tys: ta.Sequence[type] = PRIMITIVE_UNION_TYPES
92
-
93
- def guard(self, ctx: MarshalContext, rty: rfl.Type) -> bool:
94
- return _destructure_primitive_union_type(rty, self.tys) is not None
95
-
96
- def fn(self, ctx: MarshalContext, rty: rfl.Type) -> Marshaler:
97
- prim, non_prim = check.not_none(_destructure_primitive_union_type(rty, self.tys))
98
- return PrimitiveUnionMarshaler(
99
- prim,
100
- ctx.make(check.single(non_prim)) if non_prim else None,
101
- )
102
-
103
-
104
- #
105
-
106
-
107
- @dc.dataclass(frozen=True)
108
- class PrimitiveUnionUnmarshaler(Unmarshaler):
109
- tys: ta.Sequence[type]
110
- x: Unmarshaler | None = None
111
-
112
- def unmarshal(self, ctx: UnmarshalContext, v: Value) -> ta.Any:
113
- if type(v) not in self.tys:
114
- if self.x is not None:
115
- return self.x.unmarshal(ctx, v)
116
- raise TypeError(v)
117
- return v
118
-
119
-
120
- @dc.dataclass(frozen=True)
121
- class PrimitiveUnionUnmarshalerFactory(SimpleUnmarshalerFactory):
122
- tys: ta.Sequence[type] = PRIMITIVE_UNION_TYPES
123
-
124
- def guard(self, ctx: UnmarshalContext, rty: rfl.Type) -> bool:
125
- return _destructure_primitive_union_type(rty, self.tys) is not None
126
-
127
- def fn(self, ctx: UnmarshalContext, rty: rfl.Type) -> Unmarshaler:
128
- prim, non_prim = check.not_none(_destructure_primitive_union_type(rty, self.tys))
129
- return PrimitiveUnionUnmarshaler(
130
- prim,
131
- ctx.make(check.single(non_prim)) if non_prim else None,
132
- )
133
-
134
-
135
- ##
136
-
137
-
138
- LITERAL_UNION_TYPES: tuple[type, ...] = (
139
- int,
140
- str,
141
- )
142
-
143
-
144
- class DestructuredLiteralUnionType(ta.NamedTuple):
145
- v_ty: type
146
- lit: rfl.Literal
147
- non_lit: rfl.Type
148
-
149
-
150
- def _destructure_literal_union_type(rty: rfl.Type) -> DestructuredLiteralUnionType | None:
151
- if not isinstance(rty, rfl.Union):
152
- return None
153
- lits, non_lits = col.partition(rty.args, lang.isinstance_of(rfl.Literal)) # noqa
154
- if len(lits) != 1 or len(non_lits) != 1:
155
- return None
156
- lit = check.isinstance(check.single(lits), rfl.Literal)
157
- v_tys = set(map(type, lit.args))
158
- if len(v_tys) != 1:
159
- return None
160
- [v_ty] = v_tys
161
- if v_ty in rty.args or v_ty not in LITERAL_UNION_TYPES:
162
- return None
163
- return DestructuredLiteralUnionType(v_ty, lit, check.single(non_lits))
164
-
165
-
166
- #
167
-
168
-
169
- @dc.dataclass(frozen=True)
170
- class LiteralUnionMarshaler(Marshaler):
171
- v_ty: type
172
- l: Marshaler
173
- x: Marshaler
174
-
175
- def marshal(self, ctx: MarshalContext, o: ta.Any | None) -> Value:
176
- if isinstance(o, self.v_ty):
177
- return self.l.marshal(ctx, o)
178
- else:
179
- return self.x.marshal(ctx, o)
180
-
181
-
182
- class LiteralUnionMarshalerFactory(SimpleMarshalerFactory):
183
- def guard(self, ctx: MarshalContext, rty: rfl.Type) -> bool:
184
- return _destructure_literal_union_type(rty) is not None
185
-
186
- def fn(self, ctx: MarshalContext, rty: rfl.Type) -> Marshaler:
187
- ds = check.not_none(_destructure_literal_union_type(rty))
188
- return LiteralUnionMarshaler(ds.v_ty, ctx.make(ds.lit), ctx.make(ds.non_lit))
189
-
190
-
191
- #
192
-
193
-
194
- @dc.dataclass(frozen=True)
195
- class LiteralUnionUnmarshaler(Unmarshaler):
196
- v_ty: type
197
- l: Unmarshaler
198
- x: Unmarshaler
199
-
200
- def unmarshal(self, ctx: UnmarshalContext, v: Value) -> ta.Any | None:
201
- if isinstance(v, self.v_ty):
202
- return self.l.unmarshal(ctx, v) # type: ignore[arg-type]
203
- else:
204
- return self.x.unmarshal(ctx, v)
205
-
206
-
207
- class LiteralUnionUnmarshalerFactory(SimpleUnmarshalerFactory):
208
- def guard(self, ctx: UnmarshalContext, rty: rfl.Type) -> bool:
209
- return _destructure_literal_union_type(rty) is not None
210
-
211
- def fn(self, ctx: UnmarshalContext, rty: rfl.Type) -> Unmarshaler:
212
- ds = check.not_none(_destructure_literal_union_type(rty))
213
- return LiteralUnionUnmarshaler(ds.v_ty, ctx.make(ds.lit), ctx.make(ds.non_lit))
@@ -1,34 +0,0 @@
1
- from ... import lang
2
- from ... import reflect as rfl
3
- from ...funcs import match as mfs
4
- from ..base.contexts import MarshalContext
5
- from ..base.contexts import UnmarshalContext
6
- from ..base.types import Marshaler
7
- from ..base.types import MarshalerFactory
8
- from ..base.types import MarshalerMaker
9
- from ..base.types import Unmarshaler
10
- from ..base.types import UnmarshalerFactory
11
- from ..base.types import UnmarshalerMaker
12
-
13
-
14
- ##
15
-
16
-
17
- class MarshalerFactoryMatchClass(
18
- MarshalerFactory,
19
- mfs.MatchFnClass[[MarshalContext, rfl.Type], Marshaler],
20
- lang.Abstract,
21
- ):
22
- @property
23
- def make_marshaler(self) -> MarshalerMaker:
24
- return self # noqa
25
-
26
-
27
- class UnmarshalerFactoryMatchClass(
28
- UnmarshalerFactory,
29
- mfs.MatchFnClass[[UnmarshalContext, rfl.Type], Unmarshaler],
30
- lang.Abstract,
31
- ):
32
- @property
33
- def make_unmarshaler(self) -> UnmarshalerMaker:
34
- return self # noqa
@@ -1,28 +0,0 @@
1
- from ... import lang
2
- from ..base.types import MarshalerFactory
3
- from ..base.types import MarshalerMaker
4
- from ..base.types import UnmarshalerFactory
5
- from ..base.types import UnmarshalerMaker
6
-
7
-
8
- ##
9
-
10
-
11
- class SimpleMarshalerFactory(
12
- MarshalerFactory,
13
- MarshalerMaker,
14
- lang.Abstract,
15
- ):
16
- @property
17
- def make_marshaler(self) -> MarshalerMaker:
18
- return self # noqa
19
-
20
-
21
- class SimpleUnmarshalerFactory(
22
- UnmarshalerFactory,
23
- UnmarshalerMaker,
24
- lang.Abstract,
25
- ):
26
- @property
27
- def make_unmarshaler(self) -> UnmarshalerMaker:
28
- return self # noqa