omlish 0.0.0.dev414__py3-none-any.whl → 0.0.0.dev415__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 (65) hide show
  1. omlish/__about__.py +2 -3
  2. omlish/codecs/registry.py +1 -1
  3. omlish/dataclasses/__init__.py +135 -113
  4. omlish/dataclasses/impl/api/classes/make.py +5 -3
  5. omlish/dataclasses/impl/configs.py +29 -29
  6. omlish/lite/maysyncs.py +1 -0
  7. omlish/manifests/base.py +1 -1
  8. omlish/marshal/__init__.py +98 -57
  9. omlish/marshal/base/__init__.py +0 -0
  10. omlish/marshal/base/contexts.py +75 -0
  11. omlish/marshal/{errors.py → base/errors.py} +1 -1
  12. omlish/marshal/base/options.py +2 -0
  13. omlish/marshal/base/overrides.py +25 -0
  14. omlish/marshal/{registries.py → base/registries.py} +4 -8
  15. omlish/marshal/base/types.py +70 -0
  16. omlish/marshal/{values.py → base/values.py} +1 -13
  17. omlish/marshal/composite/iterables.py +7 -7
  18. omlish/marshal/composite/literals.py +7 -7
  19. omlish/marshal/composite/mappings.py +7 -7
  20. omlish/marshal/composite/maybes.py +7 -7
  21. omlish/marshal/composite/newtypes.py +6 -6
  22. omlish/marshal/composite/optionals.py +7 -7
  23. omlish/marshal/composite/special.py +6 -6
  24. omlish/marshal/composite/wrapped.py +5 -5
  25. omlish/marshal/factories/__init__.py +0 -0
  26. omlish/marshal/factories/func.py +28 -0
  27. omlish/marshal/factories/match.py +34 -0
  28. omlish/marshal/factories/multi.py +55 -0
  29. omlish/marshal/factories/recursive.py +120 -0
  30. omlish/marshal/factories/simple.py +28 -0
  31. omlish/marshal/factories/typecache.py +91 -0
  32. omlish/marshal/factories/typemap.py +65 -0
  33. omlish/marshal/globals.py +7 -7
  34. omlish/marshal/naming.py +1 -1
  35. omlish/marshal/objects/dataclasses.py +7 -7
  36. omlish/marshal/objects/marshal.py +4 -4
  37. omlish/marshal/objects/metadata.py +4 -4
  38. omlish/marshal/objects/namedtuples.py +7 -7
  39. omlish/marshal/objects/unmarshal.py +4 -4
  40. omlish/marshal/polymorphism/marshal.py +4 -4
  41. omlish/marshal/polymorphism/metadata.py +1 -1
  42. omlish/marshal/polymorphism/standard.py +2 -2
  43. omlish/marshal/polymorphism/unions.py +7 -7
  44. omlish/marshal/polymorphism/unmarshal.py +4 -4
  45. omlish/marshal/singular/base64.py +7 -7
  46. omlish/marshal/singular/datetimes.py +7 -7
  47. omlish/marshal/singular/enums.py +7 -7
  48. omlish/marshal/singular/numbers.py +7 -7
  49. omlish/marshal/singular/primitives.py +7 -7
  50. omlish/marshal/singular/uuids.py +7 -7
  51. omlish/marshal/standard.py +8 -8
  52. omlish/marshal/trivial/any.py +7 -7
  53. omlish/marshal/trivial/forbidden.py +7 -7
  54. omlish/marshal/trivial/nop.py +5 -5
  55. {omlish-0.0.0.dev414.dist-info → omlish-0.0.0.dev415.dist-info}/METADATA +1 -1
  56. {omlish-0.0.0.dev414.dist-info → omlish-0.0.0.dev415.dist-info}/RECORD +60 -52
  57. omlish/inject/.dataclasses.json +0 -3
  58. omlish/marshal/.dataclasses.json +0 -3
  59. omlish/marshal/base.py +0 -472
  60. omlish/marshal/factories.py +0 -116
  61. omlish/marshal/proxy.py +0 -26
  62. {omlish-0.0.0.dev414.dist-info → omlish-0.0.0.dev415.dist-info}/WHEEL +0 -0
  63. {omlish-0.0.0.dev414.dist-info → omlish-0.0.0.dev415.dist-info}/entry_points.txt +0 -0
  64. {omlish-0.0.0.dev414.dist-info → omlish-0.0.0.dev415.dist-info}/licenses/LICENSE +0 -0
  65. {omlish-0.0.0.dev414.dist-info → omlish-0.0.0.dev415.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
2
- omlish/__about__.py,sha256=5lJafuAwdynN20SptUoGmCSL1duPAhIzl1epOqICNdM,3601
2
+ omlish/__about__.py,sha256=XApjmdmf3_-YewbzWxs8nlvwRONv4D2GSRsgM19MOXo,3568
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
@@ -72,7 +72,7 @@ omlish/codecs/base.py,sha256=nKAQKF0985xosHIP0mAkUZnr8lfHFj66ShnxL0OfdQE,2193
72
72
  omlish/codecs/bytes.py,sha256=3DxyQQCvFcP3mQ5G93f_mygXEb-7I8buM8EyzUcx2Is,2155
73
73
  omlish/codecs/chain.py,sha256=nbkL2nz0ZqT2lxYwSXktHh1YFTQ4Iii1Hp-fWjis6rc,532
74
74
  omlish/codecs/funcs.py,sha256=or0Jogczuzk7csDTRl-HURMEjl8LXXqxxXYK45xcM5w,855
75
- omlish/codecs/registry.py,sha256=PDfo0UtVZ96SILe5w4piPpWR-cjh1NiixKeSS7LgQKk,4003
75
+ omlish/codecs/registry.py,sha256=y7gjhBY1tTTHZmaK4X02zL5HD_25AAiZ8k27Op69Ag0,4006
76
76
  omlish/codecs/standard.py,sha256=eiZ4u9ep0XrA4Z_D1zJI0vmWyuN8HLrX4Se_r_Cq_ZM,60
77
77
  omlish/codecs/text.py,sha256=P9-xpdiQE3nbI5CzEentf07FBHPzD7_SwOtUQUJ01So,5710
78
78
  omlish/collections/__init__.py,sha256=BIc806ri5Eq-kR03Ya2YfYTRI0g1rn_0haQPUqxXqys,2816
@@ -135,7 +135,7 @@ omlish/daemons/services.py,sha256=laoUeJU7eVHuWl1062FBjPSD7jchOjhpYDc5FT2B3dM,34
135
135
  omlish/daemons/spawning.py,sha256=psR73zOYjMKTqNpx1bMib8uU9wAZz62tw5TaWHrTdyY,5337
136
136
  omlish/daemons/targets.py,sha256=00KmtlknMhQ5PyyVAhWl3rpeTMPym0GxvHHq6mYPZ7c,3051
137
137
  omlish/daemons/waiting.py,sha256=RfgD1L33QQVbD2431dkKZGE4w6DUcGvYeRXXi8puAP4,1676
138
- omlish/dataclasses/__init__.py,sha256=Xkf8vRYt4C0_4H9DP2rjfzkByXNVUxL4EgoSB1p0eho,2162
138
+ omlish/dataclasses/__init__.py,sha256=yzdjXDaa3moImIEjmBd55RUFpMpcsYsoSYkO_fNCL8g,3273
139
139
  omlish/dataclasses/_internals.py,sha256=_THiziiIslUyYC98Y_tZd5aZgvEF3FAGkDSwzRfcDuo,3247
140
140
  omlish/dataclasses/debug.py,sha256=giBiv6aXvX0IagwNCW64qBzNjfOFr3-VmgDy_KYlb-k,29
141
141
  omlish/dataclasses/errors.py,sha256=tyv3WR6az66uGGiq9FIuCHvy1Ef-G7zeMY7mMG6hy2Y,2527
@@ -143,13 +143,13 @@ omlish/dataclasses/inspect.py,sha256=EpVb50CsEUWpn70gkjBa-hI1mr5_VubHTERsofgE-Lw
143
143
  omlish/dataclasses/reflection.py,sha256=6BD2FUiOEtpi_2JREWyVzemjbBJdBMUm8XxQ9SVIKGs,2799
144
144
  omlish/dataclasses/specs.py,sha256=VOY2uCjxLhemBuLd1VXz5KJXmZ48NL3sMJxzOhXmau8,6191
145
145
  omlish/dataclasses/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
146
- omlish/dataclasses/impl/configs.py,sha256=n1MOPGTulIVLMR2e4hbtU1FbHJTAVrOFXOCPU-fujVw,1442
146
+ omlish/dataclasses/impl/configs.py,sha256=-cioTvHsJ2F-lVNF_Hh-p7vh4y2H0gCjSRVHVzk8yKo,1354
147
147
  omlish/dataclasses/impl/utils.py,sha256=jAD6IIILo70aD_s60CaqRU2YvpZxBKy4K5EG-MTiqVo,1871
148
148
  omlish/dataclasses/impl/api/__init__.py,sha256=k5iS9QOwf_f4iOfGffYhnqDOcmEIwEUUTp00u11kIPM,455
149
149
  omlish/dataclasses/impl/api/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
150
  omlish/dataclasses/impl/api/classes/conversion.py,sha256=T1I-aZKui2tv8rknuw9yCvGQLTrFnzTuHDFoezhE0ko,908
151
151
  omlish/dataclasses/impl/api/classes/decorator.py,sha256=LqkAjNFpUeLThnnkzt1tIYKtIf8maDCkjrZzSbABZbg,4067
152
- omlish/dataclasses/impl/api/classes/make.py,sha256=gfYOSWBno3W_5w6YMN2El3EiXuKwN0bu0t5a5GV8Qlo,5165
152
+ omlish/dataclasses/impl/api/classes/make.py,sha256=cRGPRfUQpW2YOHSDFE59-9qOzvWWrZ-4liq1T1U_1fg,5230
153
153
  omlish/dataclasses/impl/api/classes/metadata.py,sha256=sMZgtoZaybfCoBKOVj7hKc-xqfU2Lca9WFrqg8UAAsE,2773
154
154
  omlish/dataclasses/impl/api/classes/params.py,sha256=cJAMxLHgW6xyKURlCnDQpA-TYfOgWpVBCavie-IZTOM,2000
155
155
  omlish/dataclasses/impl/api/fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -358,7 +358,6 @@ omlish/http/coro/server/fdio.py,sha256=qZE4g5y4XESsTObSKyVggI-yzig57gSGJb4Z0rcHv
358
358
  omlish/http/coro/server/server.py,sha256=5gvueSCUzqBqQRf0GJ6wGroD9DiWxQNi6N17MlEtBLU,18660
359
359
  omlish/http/coro/server/simple.py,sha256=j1RZ3niKrgGM2qFnjdYWn_eniZzay5j49Ca4L3u8vO4,3296
360
360
  omlish/http/coro/server/sockets.py,sha256=24gU6wpIZuzYWKQD8UsHyYfTZlbcUFvkqXq5KVgWpQo,2261
361
- omlish/inject/.dataclasses.json,sha256=wXWUy_IR8AolAa2RQnqn_mo2QnmVcvUJmayIykdVl0I,22
362
361
  omlish/inject/__init__.py,sha256=Ou6_wAovmxOpbdhGKsV8GbYRH0_S_h0XQSBDPeYpP0g,1978
363
362
  omlish/inject/binder.py,sha256=woOK7I5fk4K4kDF684Ia003jE_lviGQXacNKAmXqx5M,5114
364
363
  omlish/inject/bindings.py,sha256=PlvOnUREjvc6F8nOJdzl1k9SAf80icRB4qWFqDop87M,536
@@ -490,7 +489,7 @@ omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
490
489
  omlish/lite/logs.py,sha256=CWFG0NKGhqNeEgryF5atN2gkPYbUdTINEw_s1phbINM,51
491
490
  omlish/lite/marshal.py,sha256=K_wnZwfC8cftGILyE3RlmzQEYuZOfzkMLKey41zuwtM,20296
492
491
  omlish/lite/maybes.py,sha256=0p_fzb6yiOjEpvMKaQ53Q6CH1VPW1or7v7Lt1JIKcgM,4359
493
- omlish/lite/maysyncs.py,sha256=-GT3IHaNwiaYNbP7wBB9sLmYPq__udW61SfYlXvG1LQ,14381
492
+ omlish/lite/maysyncs.py,sha256=9_u3sS2VacmfffBjbUYiu5eYG2XJ2lCIpYewwbmvPDc,14391
494
493
  omlish/lite/pycharm.py,sha256=FRHGcCDo42UzZXqNwW_DkhI-6kb_CmJKPiQ8F6mYkLA,1174
495
494
  omlish/lite/reflect.py,sha256=gI-Qlws9V-jND7kvCQFaIhBFrndVpDsikTQ7C6U2z3w,2434
496
495
  omlish/lite/reprs.py,sha256=2Bc7ukhKvYNTKmxPIuv9glZIph13C37y_W4fg9pBnu8,2006
@@ -518,55 +517,64 @@ omlish/logs/standard.py,sha256=w0jS824YDvlzrGgAxKiPk9RoZ5V1b0ADiFsBEpKLuLY,3152
518
517
  omlish/logs/timing.py,sha256=qsQ3DB6swts1pxrFlmLWQzhH-3nzDrq1MUu7PxjjUyU,1519
519
518
  omlish/logs/utils.py,sha256=OkFWf1exmWImmT7BaSiIC7c0Fk9tAis-PRqo8H4ny3c,398
520
519
  omlish/manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
521
- omlish/manifests/base.py,sha256=Dt44a3qppWaxkoi3naFFMetxbxw14qnz2naTKK93GNU,915
520
+ omlish/manifests/base.py,sha256=wW-De-pU3cef-0vGsgo-ypftDwc3tCBxhRAzPtrdark,918
522
521
  omlish/manifests/globals.py,sha256=kVqQ-fT4kc7xWzLHoI731GviitFPv2v2yqw-p7t7Exs,2628
523
522
  omlish/manifests/loading.py,sha256=Br1OyI23pis_FfYju9xoacms608lzB1Zh_IqdVw_7vg,17201
524
523
  omlish/manifests/static.py,sha256=9BaPBLkuzxHmg5A-5k9BjjBFINCdmFOIu06dMFgCfz4,497
525
524
  omlish/manifests/types.py,sha256=NeOGuIVrcbqjCDbQ3MnCxxHAgHnw0CkWJsBzo230PWE,453
526
- omlish/marshal/.dataclasses.json,sha256=wXWUy_IR8AolAa2RQnqn_mo2QnmVcvUJmayIykdVl0I,22
527
- omlish/marshal/__init__.py,sha256=yquxGmP5r4ITDbR1_OCTy1y9Y5vU7SKL1gj467RVJkg,3554
528
- omlish/marshal/base.py,sha256=3GMrhJBcnVrVtlQRQLOMgvV66MciAYpHKEQi5Ns3dIk,11853
529
- omlish/marshal/errors.py,sha256=g5XJyTHd__8lfwQ4KwgK-E5WR6MoNTMrqKP2U_QRQQQ,307
530
- omlish/marshal/factories.py,sha256=Th4Hplv03lvdvW1re53M0lKBZYM22okXfYFL9EwI1sk,2972
531
- omlish/marshal/globals.py,sha256=vNLpwQVt7Nn9sA5bBh7c_JYcUu9-1CLyENq1zBH-rcM,1510
532
- omlish/marshal/naming.py,sha256=ELs-NtWhw6RCSEF_y98cMyzr37pj0DV_bG9yQmto_NA,857
533
- omlish/marshal/proxy.py,sha256=i7xZQN6BSGz4nBM4CTj0S6RcSlDEgrZmX9fbtFpAPco,548
534
- omlish/marshal/registries.py,sha256=BYHimL3kAiTqWR2-FQNO0HbQdvwq0wI1VQL_RSFkek4,2359
535
- omlish/marshal/standard.py,sha256=-Xfovb_T89BCNhgxRbRHVgOzqlQjYRrIDT6lUw67GGA,4812
536
- omlish/marshal/values.py,sha256=ssHiWdg_L6M17kAn8GiGdPW7UeQOm3RDikWkvwblf5I,263
525
+ omlish/marshal/__init__.py,sha256=Y2SKxP4jGU6iCm4hYKYxixu3OBCkcI9B7a6CZad_g34,4678
526
+ omlish/marshal/globals.py,sha256=iAmTeTrIC-BeLgZob5P3J6U9Ac3vGcd79KnyVZnuf_w,1555
527
+ omlish/marshal/naming.py,sha256=Mk5YrbES836_KflNNRoc5Ajd96iMYLQIMERKx1KpT4g,865
528
+ omlish/marshal/standard.py,sha256=k6QAGFNjiypxjI90snJcoGqNoTQ8ZkTzrW7m-Yrn2wk,4906
529
+ omlish/marshal/base/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
530
+ omlish/marshal/base/contexts.py,sha256=e8ivHzDdzwxTDq232PUOemnmcTuGCxuYYurqVcwFC8U,2064
531
+ omlish/marshal/base/errors.py,sha256=jmN3vl_U_hB6L0wAvuO7ORG27vXF7KEUk-1TxxK2mYA,308
532
+ omlish/marshal/base/options.py,sha256=OoDErPmI0kswnqAtr7QYndlPYhIqIDarx833tKFT2R4,23
533
+ omlish/marshal/base/overrides.py,sha256=Nn7xlTHnm8UClvmDu4dk9gMNxWi-ZZ03v9FAOQ0r3qc,722
534
+ omlish/marshal/base/registries.py,sha256=j9xAK-nuE7R6TXWU6FTR97p2Z41F8-rW0c3DPs0iMQE,2334
535
+ omlish/marshal/base/types.py,sha256=bg2EXSyZYI1ETCfcAzm4Ltv9AiqnMFiDWGIF50_CgpA,1514
536
+ omlish/marshal/base/values.py,sha256=QF6OateG5kjRPHYza08wscThhg20oryf-aVQrxjfkC0,212
537
537
  omlish/marshal/composite/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
538
- omlish/marshal/composite/iterables.py,sha256=YdkdWNUe_AzdUqiAsr7z3kaDcPeg7Znj3AuQepY_qaA,2647
539
- omlish/marshal/composite/literals.py,sha256=4V8wrZxWe4UxQhcyMC-746a4U03qsyJ_yV1KKu2D_ks,1637
540
- omlish/marshal/composite/mappings.py,sha256=HoqUKe4kyCYRdMpQMWW0DLPi0-DEsxt-nk4pCQAcLw4,2804
541
- omlish/marshal/composite/maybes.py,sha256=NfQ2cIHHIvohTl4iYPYbEvhNVq3L3JCu2GEbt4DM5DA,2216
542
- omlish/marshal/composite/newtypes.py,sha256=5-te247TiPYf84oFhf59tqIOOByXj8i9KaHT8gn72fU,878
543
- omlish/marshal/composite/optionals.py,sha256=MnecrmrJYjQvYJipIHNCDq78oH09dOjnw5pvaMKqoeU,1537
544
- omlish/marshal/composite/special.py,sha256=s0PcOmDiQyCjoxcdaGSORTqNoXNp6uuBz_NJs2kHzRM,1350
545
- omlish/marshal/composite/wrapped.py,sha256=jOsn3h1vLIqcoSTB-0KObnsdbV8jSVWJYbf7Kg9AUwg,750
538
+ omlish/marshal/composite/iterables.py,sha256=2VU3sh5TBKMVF1cWPXhDeuELPQzrAYovmTNHzoFLeS4,2704
539
+ omlish/marshal/composite/literals.py,sha256=pXngZKSaZ4f-ANr43AsU1ob_Rj7KTjZRQQvNjdMCKRc,1696
540
+ omlish/marshal/composite/mappings.py,sha256=hOQ-_UZCFTqW_y70a4hNJsNsr2J9y3MYIePEymZMj94,2861
541
+ omlish/marshal/composite/maybes.py,sha256=Qy0-bxW3fC3jVvDzszNQogGwGSAwmPt61nTXP06l6cY,2273
542
+ omlish/marshal/composite/newtypes.py,sha256=KiDsuBtF7jbWk7A3wy2LAZvuaG7KJzYNF1Y0jKSOZWU,932
543
+ omlish/marshal/composite/optionals.py,sha256=A-0GUaTL5585mxdNO_FcpnP2KFmJ64MkAwMukqng2ls,1596
544
+ omlish/marshal/composite/special.py,sha256=325cEkzGw2XoMq6W0CvvO7n2Dx9I3mDsjdlZ2tN4Bfs,1402
545
+ omlish/marshal/composite/wrapped.py,sha256=xC8k21wJOpSkpAn7794hBTPBRw-HPC9sOF3WRlUh_BA,785
546
+ omlish/marshal/factories/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
547
+ omlish/marshal/factories/func.py,sha256=6F5Ud9GdplQNR1CEwkT2n5SRx4glmgcNZBBPTc9QmdM,727
548
+ omlish/marshal/factories/match.py,sha256=MALwOa2FyD4PpHfG-iLBdn8-3FMx_wI123RD4xfd79w,893
549
+ omlish/marshal/factories/multi.py,sha256=0chkODC3AGz4wxDq82V69clGRtk1Wjc6O_yOGZxn6bQ,1479
550
+ omlish/marshal/factories/recursive.py,sha256=_U3yLiPI0R1qT5J19It2pFFTFVr-O2rXTBjcK-zPpOY,3143
551
+ omlish/marshal/factories/simple.py,sha256=6ghaGPsj2rBeh85sV84_v3kEq3pZ8hyVEwd4UMoNfBI,576
552
+ omlish/marshal/factories/typecache.py,sha256=BxlC32msLhBuiyJ3OdOe_kIl6ncKe_0SZwXWwCulLCk,2517
553
+ omlish/marshal/factories/typemap.py,sha256=CxScQbRw3VwILGhf38v2yOiof45YJ9p2LQhZ37SHNj8,1606
546
554
  omlish/marshal/objects/__init__.py,sha256=F4wej8L_tedC8ETYxAnmKfdPR9TjsqIus9Z3nZofYuc,182
547
- omlish/marshal/objects/dataclasses.py,sha256=klXXY1zOKh_FYlw6L5ZNPjpXSk0ntUGxSOrm309WoiY,8953
555
+ omlish/marshal/objects/dataclasses.py,sha256=6G1vmhFhJ3LsHxDFDxvSH7q-pZm9_gY4QgNVtebiUzY,9015
548
556
  omlish/marshal/objects/helpers.py,sha256=hj5I1pILt3QFSVkYJNrSO3wiCaalAopEYWPL17Ip4zs,1102
549
- omlish/marshal/objects/marshal.py,sha256=JarKGecMgaFYSUHUj-ZUYVP9HK6u2rjpBb3DWX9Uhh0,2648
550
- omlish/marshal/objects/metadata.py,sha256=b9hxmM0qV_GhgFnA6JXVxjI7odvWaZMGHjrQLgdK9L0,3368
551
- omlish/marshal/objects/namedtuples.py,sha256=8de8L7rwmvr_LLBHHfOl2wHObxc_1yZ8fC_J25yZi7Q,2866
552
- omlish/marshal/objects/unmarshal.py,sha256=IXIl_iokvVCSWYhkRORrWP_sE1DVklnrUErGWg_3MDc,3632
557
+ omlish/marshal/objects/marshal.py,sha256=9Z19aasMNsDn8KBHmUT-XnoP23c5r50CYo0z4IBfUf0,2680
558
+ omlish/marshal/objects/metadata.py,sha256=maGqyQl0GE9xWK17DQjXxhZWRh3nRwH4fgklrA8XVQI,3392
559
+ omlish/marshal/objects/namedtuples.py,sha256=uzOZuEt2IrWtk7uyo13xaWEmFhxRQ3aKAzom05qUfBA,2928
560
+ omlish/marshal/objects/unmarshal.py,sha256=izhtSwqSrlWSOL5uZS3naPxnfq3rhv25uUPN7_rpO08,3664
553
561
  omlish/marshal/polymorphism/__init__.py,sha256=e2UTrSL0qp7w_1vkdxDWd7sXlWhep2KPV49-BB64ma8,130
554
- omlish/marshal/polymorphism/marshal.py,sha256=wVaUxiHMJwyEWfQIE3cuEcJFSMVNJhpdJoa1yRgBPUE,2260
555
- omlish/marshal/polymorphism/metadata.py,sha256=Z-UIH5o6mnl0Tfyq79e2bgKvQueSt9tf-kKgMtSJwt0,3337
556
- omlish/marshal/polymorphism/standard.py,sha256=Gj_fhmkWlY99oYjceP1N9SVOnaPCHRwtO812kJYIuhA,603
557
- omlish/marshal/polymorphism/unions.py,sha256=NDXh2aVCLUFfi10qvIZR39prtHwjndQiVl13XcIKV3k,4386
558
- omlish/marshal/polymorphism/unmarshal.py,sha256=5jJnDarY85PuGTeL_9bwoeHjNIZnfVN3zr5rVhmNoQc,2451
562
+ omlish/marshal/polymorphism/marshal.py,sha256=ZnayCbRj3451U4py1-9dU99PHvjQuQk-ZQDGgzQjF4U,2292
563
+ omlish/marshal/polymorphism/metadata.py,sha256=5RmOlmndn1T66FaxKwzt_UOM6vAQ2hfPT04o--BJH8c,3342
564
+ omlish/marshal/polymorphism/standard.py,sha256=8Gkdss9632RQ4ff1GZaEdI-T_UzAiW-9nLKQawKoa9s,615
565
+ omlish/marshal/polymorphism/unions.py,sha256=AWNyzETvgADOjPmXsHloXgbvjZ4GX9b_iNmD6ZdXsT0,4445
566
+ omlish/marshal/polymorphism/unmarshal.py,sha256=8bLeI9UxUluoIqkRJSJIbdCsKkXjx3myYe9uWs16QjY,2483
559
567
  omlish/marshal/singular/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
560
- omlish/marshal/singular/base64.py,sha256=NutiLaqJn73CcCY94Nf4aL1WvN2dIkblaTqJEzWkHVc,1103
561
- omlish/marshal/singular/datetimes.py,sha256=1PDVFF6TGkGxGUno8TaFGRof0DQUookYf_X2Nl8T4V0,3723
562
- omlish/marshal/singular/enums.py,sha256=TpdOUXUNEHZjI1fWwq1CFxhmRWQ_YodfFG7Vcszccv8,1510
563
- omlish/marshal/singular/numbers.py,sha256=wA2m-IPKOwlBI-NIS0dEDizmLXK2pgaEL5FQbr5_HIM,1685
564
- omlish/marshal/singular/primitives.py,sha256=EZi2AIi_Onw1pekAiL4ujz4w-ASuOGWCu4MUIE_dCnk,1299
565
- omlish/marshal/singular/uuids.py,sha256=rBMn2zwbw8tJoObeyg7E-D3l3OymLg-pguNUqLKGRN0,923
568
+ omlish/marshal/singular/base64.py,sha256=OZ3Ydwy64S0M-xlktYy5MagzyzTOVYayUXblq8ZK-AE,1164
569
+ omlish/marshal/singular/datetimes.py,sha256=nzOf8LRwAB08X80N_NmWuE3rOrYG80ZgIaZO3549WnE,3784
570
+ omlish/marshal/singular/enums.py,sha256=jffB2uIfQWs9cwpDxYUatBU0OkujkjA64oqh7ecSG7E,1569
571
+ omlish/marshal/singular/numbers.py,sha256=32_lSiaQc796u0WsPyiYORiJoaI5qh2IZxiIfF8n360,1746
572
+ omlish/marshal/singular/primitives.py,sha256=T1mRNMin7OOBjsBkAh1xVbHa-VBmtMfL55mhCfiruIg,1360
573
+ omlish/marshal/singular/uuids.py,sha256=J6Swxzm0rFvAMCmErJb4WpSPmnQyts7qOqy43Y1BugI,984
566
574
  omlish/marshal/trivial/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
567
- omlish/marshal/trivial/any.py,sha256=YjbHgUtwktXuFfkPCSQIxdwC6tA70CPA3-msAE4slKs,791
568
- omlish/marshal/trivial/forbidden.py,sha256=w-U_tZB7X0IuFpV4j1DxCQmOL02InmZSICROtq-w3-s,1033
569
- omlish/marshal/trivial/nop.py,sha256=EoxaCbfkLbDfSGdE_xJbH1ghIeYwaptmqq3OGHKgmAg,471
575
+ omlish/marshal/trivial/any.py,sha256=XaqSW0fyq2FVE4PQ4IG0UaXr59kRVGccgZDlsNHrd_Q,852
576
+ omlish/marshal/trivial/forbidden.py,sha256=fkvyBViUjrpfB6JJu47k-yxAvLkJw7JSZqSP-Abr_04,1092
577
+ omlish/marshal/trivial/nop.py,sha256=PDXT0B9RR-ghG6ExuK9BH2J-nHEnoTYGNdVaNAyRzSk,506
570
578
  omlish/math/__init__.py,sha256=0N2LtQYsAit7wXDKa-Dj6XPkVzEviP-tB2BNQoMhzLI,1185
571
579
  omlish/math/bits.py,sha256=pcTuWxNXXfG-CtTITNNbW3YConAkCeU8PLNcglCc43E,533
572
580
  omlish/math/c.py,sha256=JUHHZfVUUE4sb-6_LxJksbcLOLi9za0LdPs4dky5Ba8,308
@@ -909,9 +917,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
909
917
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
910
918
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
911
919
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
912
- omlish-0.0.0.dev414.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
913
- omlish-0.0.0.dev414.dist-info/METADATA,sha256=WyKbSwUeFHk3nrepnSOnkTTwc0AunQSWov7rYWlEjHc,18881
914
- omlish-0.0.0.dev414.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
915
- omlish-0.0.0.dev414.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
916
- omlish-0.0.0.dev414.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
917
- omlish-0.0.0.dev414.dist-info/RECORD,,
920
+ omlish-0.0.0.dev415.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
921
+ omlish-0.0.0.dev415.dist-info/METADATA,sha256=3uvdL3aYGoWbgHsgKXszYQlPn4OF0QZhTEQ322XQdk8,18881
922
+ omlish-0.0.0.dev415.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
923
+ omlish-0.0.0.dev415.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
924
+ omlish-0.0.0.dev415.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
925
+ omlish-0.0.0.dev415.dist-info/RECORD,,
@@ -1,3 +0,0 @@
1
- {
2
- "codegen": true
3
- }
@@ -1,3 +0,0 @@
1
- {
2
- "codegen": true
3
- }
omlish/marshal/base.py DELETED
@@ -1,472 +0,0 @@
1
- """
2
- TODO:
3
- - redacted
4
- - strongly typed MarshalerFactory base class?
5
- - strongly typed Composite/Cached Marshaler/Unmarshaler factories - footgun
6
- - streaming? Start/EndObject, etc..
7
- - lang.Marker - class name, handle type[Foo]
8
- - can't disambiguate from str - can't coexist in bare union
9
- - factories being free MatchFns does more harm than good - in practice these are such big guns you want to write a
10
- class body if only ceremonially
11
-
12
- See:
13
- - https://github.com/python-attrs/cattrs
14
- - https://github.com/jcrist/msgspec
15
- - https://github.com/Fatal1ty/mashumaro
16
- - https://github.com/Kotlin/kotlinx.serialization/blob/master/docs/serializers.md#custom-serializers
17
-
18
- cattrs:
19
- *
20
-
21
- Jackson:
22
- - USE_ANNOTATIONS
23
- - AUTO_DETECT_CREATORS
24
- - AUTO_DETECT_FIELDS
25
- - AUTO_DETECT_GETTERS
26
- - AUTO_DETECT_IS_GETTERS
27
- - AUTO_DETECT_SETTERS
28
- - REQUIRE_SETTERS_FOR_GETTERS
29
- - USE_GETTERS_AS_SETTERS
30
- - INFER_CREATOR_FROM_CONSTRUCTOR_PROPERTIES
31
- - INFER_PROPERTY_MUTATORS
32
- - ALLOW_FINAL_FIELDS_AS_MUTATORS
33
- - ALLOW_VOID_VALUED_PROPERTIES
34
- - CAN_OVERRIDE_ACCESS_MODIFIERS
35
- - OVERRIDE_PUBLIC_ACCESS_MODIFIERS
36
- - SORT_PROPERTIES_ALPHABETICALLY
37
- - USE_WRAPPER_NAME_AS_PROPERTY_NAME
38
- - ACCEPT_CASE_INSENSITIVE_ENUMS
39
- - ACCEPT_CASE_INSENSITIVE_PROPERTIES
40
- - ACCEPT_CASE_INSENSITIVE_VALUES
41
- - ALLOW_EXPLICIT_PROPERTY_RENAMING
42
- - USE_STD_BEAN_NAMING
43
- - ALLOW_COERCION_OF_SCALARS
44
- - DEFAULT_VIEW_INCLUSION
45
- - IGNORE_DUPLICATE_MODULE_REGISTRATIONS
46
- - IGNORE_MERGE_FOR_UNMERGEABLE
47
- - USE_BASE_TYPE_AS_DEFAULT_IMPL
48
- - USE_STATIC_TYPING
49
- - BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES
50
-
51
- https://github.com/yukinarit/pyserde
52
- - datatypes
53
- - typing.Union
54
- - typing.NewType for primitive types
55
- - typing.Any
56
- - typing.Literal
57
- - typing.Generic
58
- - typing.ClassVar
59
- - dataclasses.InitVar
60
- - Enum and IntEnum
61
- - pathlib.Path
62
- - decimal.Decimal
63
- - uuid.UUID
64
- - datetime.date, datetime.time, datetime.datetime
65
- - ipaddress
66
- - numpy types
67
- - Class Attributes
68
- - Field Attributes
69
- - Decorators
70
- - Type Check
71
- - Union Representation
72
- - Forward reference
73
- - PEP563 Postponed Evaluation of Annotations
74
- - PEP585 Type Hinting Generics In Standard Collections
75
- - PEP604 Allow writing union types as X | Y
76
- - PEP681 Data Class Transform
77
- - Case Conversion
78
- - Rename
79
- - Alias
80
- - Skip (de)serialization (skip, skip_if, skip_if_false, skip_if_default)
81
- - Custom field (de)serializer
82
- - Custom class (de)serializer
83
- - Custom global (de)serializer
84
- - Flatten
85
- """
86
- import abc
87
- import typing as ta
88
-
89
- from .. import check
90
- from .. import collections as col
91
- from .. import dataclasses as dc
92
- from .. import lang
93
- from .. import reflect as rfl
94
- from ..funcs import match as mfs
95
- from .errors import UnhandledTypeError
96
- from .factories import RecursiveTypeFactory
97
- from .factories import TypeCacheFactory
98
- from .factories import TypeMapFactory
99
- from .proxy import _Proxy
100
- from .registries import Registry
101
- from .registries import RegistryItem
102
- from .values import Value
103
-
104
-
105
- T = ta.TypeVar('T')
106
-
107
-
108
- ##
109
-
110
-
111
- class Marshaler(lang.Abstract):
112
- @abc.abstractmethod
113
- def marshal(self, ctx: 'MarshalContext', o: ta.Any) -> Value:
114
- raise NotImplementedError
115
-
116
-
117
- class Unmarshaler(lang.Abstract):
118
- @abc.abstractmethod
119
- def unmarshal(self, ctx: 'UnmarshalContext', v: Value) -> ta.Any:
120
- raise NotImplementedError
121
-
122
-
123
- ##
124
-
125
-
126
- MarshalerMaker: ta.TypeAlias = mfs.MatchFn[['MarshalContext', rfl.Type], Marshaler]
127
- UnmarshalerMaker: ta.TypeAlias = mfs.MatchFn[['UnmarshalContext', rfl.Type], Unmarshaler]
128
-
129
-
130
- class MarshalerFactory(lang.Abstract):
131
- @property
132
- @abc.abstractmethod
133
- def make_marshaler(self) -> MarshalerMaker:
134
- raise NotImplementedError
135
-
136
-
137
- class UnmarshalerFactory(lang.Abstract):
138
- @property
139
- @abc.abstractmethod
140
- def make_unmarshaler(self) -> UnmarshalerMaker:
141
- raise NotImplementedError
142
-
143
-
144
- ##
145
-
146
-
147
- @dc.dataclass(frozen=True)
148
- class MarshalerFactory_(MarshalerFactory): # noqa
149
- fn: MarshalerMaker
150
-
151
- @property
152
- def make_marshaler(self) -> MarshalerMaker:
153
- return self.fn
154
-
155
-
156
- @dc.dataclass(frozen=True)
157
- class UnmarshalerFactory_(UnmarshalerFactory): # noqa
158
- fn: UnmarshalerMaker
159
-
160
- @property
161
- def make_unmarshaler(self) -> UnmarshalerMaker:
162
- return self.fn
163
-
164
-
165
- ##
166
-
167
-
168
- class SimpleMarshalerFactory(
169
- MarshalerFactory,
170
- MarshalerMaker,
171
- lang.Abstract,
172
- ):
173
- @property
174
- def make_marshaler(self) -> MarshalerMaker:
175
- return self
176
-
177
-
178
- class SimpleUnmarshalerFactory(
179
- UnmarshalerFactory,
180
- UnmarshalerMaker,
181
- lang.Abstract,
182
- ):
183
- @property
184
- def make_unmarshaler(self) -> UnmarshalerMaker:
185
- return self
186
-
187
-
188
- ##
189
-
190
-
191
- class MarshalerFactoryMatchClass(
192
- MarshalerFactory,
193
- mfs.MatchFnClass[['MarshalContext', rfl.Type], Marshaler],
194
- lang.Abstract,
195
- ):
196
- @property
197
- def make_marshaler(self) -> MarshalerMaker:
198
- return self
199
-
200
-
201
- class UnmarshalerFactoryMatchClass(
202
- UnmarshalerFactory,
203
- mfs.MatchFnClass[['UnmarshalContext', rfl.Type], Unmarshaler],
204
- lang.Abstract,
205
- ):
206
- @property
207
- def make_unmarshaler(self) -> UnmarshalerMaker:
208
- return self
209
-
210
-
211
- ##
212
-
213
-
214
- class MultiMarshalerFactory(MarshalerFactory):
215
- def __init__(
216
- self,
217
- fs: ta.Iterable[MarshalerFactory],
218
- *,
219
- strict: bool = False,
220
- ) -> None:
221
- super().__init__()
222
-
223
- self._fs = list(fs)
224
- self._mmf: mfs.MultiMatchFn[[MarshalContext, rfl.Type], Marshaler] = mfs.MultiMatchFn(
225
- [f.make_marshaler for f in self._fs],
226
- strict=strict,
227
- )
228
-
229
- @property
230
- def make_marshaler(self) -> MarshalerMaker:
231
- return self._mmf
232
-
233
-
234
- class MultiUnmarshalerFactory(UnmarshalerFactory):
235
- def __init__(
236
- self,
237
- fs: ta.Iterable[UnmarshalerFactory],
238
- *,
239
- strict: bool = False,
240
- ) -> None:
241
- super().__init__()
242
-
243
- self._fs = list(fs)
244
- self._mmf: mfs.MultiMatchFn[[UnmarshalContext, rfl.Type], Unmarshaler] = mfs.MultiMatchFn(
245
- [f.make_unmarshaler for f in self._fs],
246
- strict=strict,
247
- )
248
-
249
- @property
250
- def make_unmarshaler(self) -> UnmarshalerMaker:
251
- return self._mmf
252
-
253
-
254
- ##
255
-
256
-
257
- @dc.dataclass(frozen=True)
258
- class TypeMapMarshalerFactory(
259
- TypeMapFactory['MarshalContext', Marshaler],
260
- MarshalerFactory,
261
- ):
262
- @property
263
- def make_marshaler(self) -> MarshalerMaker:
264
- return self
265
-
266
-
267
- @dc.dataclass(frozen=True)
268
- class TypeMapUnmarshalerFactory(
269
- TypeMapFactory['UnmarshalContext', Unmarshaler],
270
- UnmarshalerFactory,
271
- ):
272
- @property
273
- def make_unmarshaler(self) -> UnmarshalerMaker:
274
- return self
275
-
276
-
277
- # class TypeMapMarshalerFactory(MarshalerFactory):
278
- # def __init__(self, m: ta.Mapping[rfl.Type, MarshalerFactory]) -> None:
279
- # super().__init__()
280
- #
281
- # self._m = m
282
- # self._tmf: TypeMapFactory['MarshalContext', Marshaler] = TypeMapFactory({
283
- # t: f.make_marshaler
284
- # for t, f in m.items()
285
- # })
286
- #
287
- # @property
288
- # def make_marshaler(self) -> MarshalerMaker:
289
- # return self._tmf
290
-
291
-
292
- # class TypeMapUnmarshalerFactory(UnmarshalerFactory):
293
- # def __init__(self, m: ta.Mapping[rfl.Type, UnmarshalerFactory]) -> None:
294
- # super().__init__()
295
- #
296
- # self._m = m
297
- # self._tmf: TypeMapFactory[UnmarshalContext, Unmarshaler] = TypeMapFactory({
298
- # t: f.make_unmarshaler
299
- # for t, f in m.items()
300
- # })
301
- #
302
- # @property
303
- # def make_unmarshaler(self) -> UnmarshalerMaker:
304
- # return self._tmf
305
-
306
-
307
- ##
308
-
309
-
310
- class TypeCacheMarshalerFactory(MarshalerFactory):
311
- def __init__(self, f: MarshalerFactory) -> None:
312
- super().__init__()
313
-
314
- self._f = f
315
- self._tcf: TypeCacheFactory[MarshalContext, Marshaler] = TypeCacheFactory(f.make_marshaler)
316
-
317
- @property
318
- def make_marshaler(self) -> MarshalerMaker:
319
- return self._tcf
320
-
321
-
322
- class TypeCacheUnmarshalerFactory(UnmarshalerFactory):
323
- def __init__(self, f: UnmarshalerFactory) -> None:
324
- super().__init__()
325
-
326
- self._f = f
327
- self._tcf: TypeCacheFactory[UnmarshalContext, Unmarshaler] = TypeCacheFactory(f.make_unmarshaler)
328
-
329
- @property
330
- def make_unmarshaler(self) -> UnmarshalerMaker:
331
- return self._tcf
332
-
333
-
334
- ##
335
-
336
-
337
- @dc.dataclass(frozen=True)
338
- class FuncMarshaler(Marshaler, lang.Final):
339
- fn: ta.Callable[['MarshalContext', ta.Any], Value]
340
-
341
- def marshal(self, ctx: 'MarshalContext', o: ta.Any) -> Value:
342
- return self.fn(ctx, o)
343
-
344
-
345
- @dc.dataclass(frozen=True)
346
- class FuncUnmarshaler(Unmarshaler, lang.Final):
347
- fn: ta.Callable[['UnmarshalContext', Value], ta.Any]
348
-
349
- def unmarshal(self, ctx: 'UnmarshalContext', v: Value) -> ta.Any:
350
- return self.fn(ctx, v)
351
-
352
-
353
- ##
354
-
355
-
356
- class Option:
357
- pass
358
-
359
-
360
- ##
361
-
362
-
363
- @dc.dataclass(frozen=True)
364
- class BaseContext(lang.Abstract):
365
- registry: Registry
366
- options: col.TypeMap[Option] = col.TypeMap()
367
-
368
- def _reflect(self, o: ta.Any) -> rfl.Type:
369
- def override(o):
370
- if (ovr := self.registry.get_of(o, ReflectOverride)):
371
- return ovr[-1].rty
372
- return None
373
-
374
- return rfl.Reflector(override=override).type(o)
375
-
376
-
377
- @dc.dataclass(frozen=True)
378
- class MarshalContext(BaseContext, lang.Final):
379
- factory: MarshalerFactory | None = None
380
-
381
- def make(self, o: ta.Any) -> Marshaler:
382
- rty = self._reflect(o)
383
- try:
384
- return check.not_none(self.factory).make_marshaler(self, rty)
385
- except mfs.MatchGuardError:
386
- raise UnhandledTypeError(rty) # noqa
387
-
388
- def marshal(self, obj: ta.Any, ty: ta.Any | None = None) -> Value:
389
- return self.make(ty if ty is not None else type(obj)).marshal(self, obj)
390
-
391
-
392
- @dc.dataclass(frozen=True)
393
- class UnmarshalContext(BaseContext, lang.Final):
394
- factory: UnmarshalerFactory | None = None
395
-
396
- def make(self, o: ta.Any) -> Unmarshaler:
397
- rty = self._reflect(o)
398
- try:
399
- return check.not_none(self.factory).make_unmarshaler(self, rty)
400
- except mfs.MatchGuardError:
401
- raise UnhandledTypeError(rty) # noqa
402
-
403
- @ta.overload
404
- def unmarshal(self, v: Value, ty: type[T]) -> T:
405
- ...
406
-
407
- @ta.overload
408
- def unmarshal(self, v: Value, ty: ta.Any) -> ta.Any:
409
- ...
410
-
411
- def unmarshal(self, v, ty):
412
- return self.make(ty).unmarshal(self, v)
413
-
414
-
415
- ##
416
-
417
-
418
- class _ProxyMarshaler(_Proxy[Marshaler], Marshaler):
419
- def marshal(self, ctx: MarshalContext, o: ta.Any) -> Value:
420
- return self._obj.marshal(ctx, o)
421
-
422
-
423
- class RecursiveMarshalerFactory(MarshalerFactory, lang.Final):
424
- def __init__(self, f: MarshalerFactory) -> None:
425
- super().__init__()
426
-
427
- self._f = f
428
- self._rtf: RecursiveTypeFactory[MarshalContext, Marshaler] = RecursiveTypeFactory(
429
- self._f.make_marshaler, # noqa
430
- _ProxyMarshaler._new, # noqa
431
- )
432
-
433
- @property
434
- def make_marshaler(self) -> MarshalerMaker:
435
- return self._rtf
436
-
437
-
438
- class _ProxyUnmarshaler(_Proxy[Unmarshaler], Unmarshaler):
439
- def unmarshal(self, ctx: UnmarshalContext, v: Value) -> ta.Any:
440
- return self._obj.unmarshal(ctx, v)
441
-
442
-
443
- class RecursiveUnmarshalerFactory(UnmarshalerFactory, lang.Final):
444
- def __init__(self, f: UnmarshalerFactory) -> None:
445
- super().__init__()
446
-
447
- self._f = f
448
- self._rtf: RecursiveTypeFactory[UnmarshalContext, Unmarshaler] = RecursiveTypeFactory(
449
- self._f.make_unmarshaler, # noqa
450
- _ProxyUnmarshaler._new, # noqa
451
- )
452
-
453
- @property
454
- def make_unmarshaler(self) -> UnmarshalerMaker:
455
- return self._rtf
456
-
457
-
458
- ##
459
-
460
-
461
- @dc.dataclass(frozen=True, kw_only=True)
462
- class Override(RegistryItem, lang.Final):
463
- marshaler: Marshaler | None = dc.xfield(None, check_type=(Marshaler, None))
464
- marshaler_factory: MarshalerFactory | None = None
465
-
466
- unmarshaler: Unmarshaler | None = dc.xfield(None, check_type=(Unmarshaler, None))
467
- unmarshaler_factory: UnmarshalerFactory | None = None
468
-
469
-
470
- @dc.dataclass(frozen=True)
471
- class ReflectOverride(RegistryItem, lang.Final):
472
- rty: rfl.Type