omlish 0.0.0.dev332__py3-none-any.whl → 0.0.0.dev334__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/__about__.py CHANGED
@@ -1,5 +1,5 @@
1
- __version__ = '0.0.0.dev332'
2
- __revision__ = '42a95ae3232ef3c42a1fe09b179092ec67297444'
1
+ __version__ = '0.0.0.dev334'
2
+ __revision__ = '94a2a21ea15445a26922d6bc6501c1f500a1b43a'
3
3
 
4
4
 
5
5
  #
@@ -29,6 +29,8 @@ class ClassReflection:
29
29
  def cls(self) -> type:
30
30
  return self._cls
31
31
 
32
+ #
33
+
32
34
  @lang.cached_property
33
35
  def spec(self) -> ClassSpec:
34
36
  if (cs := get_class_spec(self._cls)) is not None:
@@ -60,6 +62,8 @@ class ClassReflection:
60
62
 
61
63
  return cs
62
64
 
65
+ #
66
+
63
67
  @lang.cached_property
64
68
  def fields_inspection(self) -> FieldsInspection:
65
69
  return inspect_fields(self._cls)
@@ -80,6 +84,20 @@ class ClassReflection:
80
84
  def instance_fields(self) -> ta.Sequence[dc.Field]:
81
85
  return [f for f in self.fields.values() if std_field_type(f) is StdFieldType.INSTANCE]
82
86
 
87
+ #
88
+
89
+ @lang.cached_property
90
+ def type_hints(self) -> ta.Mapping[str, ta.Any]:
91
+ return ta.get_type_hints(self._cls)
92
+
93
+ @lang.cached_property
94
+ def field_annotations(self) -> ta.Mapping[str, ta.Any]:
95
+ return {
96
+ f: self.type_hints[f]
97
+ for f in self.fields
98
+ if f in self.type_hints
99
+ }
100
+
83
101
 
84
102
  def reflect(cls: type) -> ClassReflection:
85
103
  return ClassReflection(cls)
@@ -9,6 +9,15 @@ import typing as _ta
9
9
  from ... import lang as _lang
10
10
 
11
11
 
12
+ from .backends import ( # noqa
13
+ Backend,
14
+
15
+ DEFAULT_BACKED,
16
+
17
+ StdBackend,
18
+ STD_BACKEND,
19
+ )
20
+
12
21
  from .consts import ( # noqa
13
22
  COMPACT_KWARGS,
14
23
  COMPACT_SEPARATORS,
@@ -5,3 +5,8 @@ from .base import ( # noqa
5
5
  from .default import ( # noqa
6
6
  DEFAULT_BACKED,
7
7
  )
8
+
9
+ from .std import ( # noqa
10
+ StdBackend,
11
+ STD_BACKEND,
12
+ )
omlish/funcs/match.py CHANGED
@@ -196,9 +196,7 @@ cached = CachedMatchFn
196
196
  class MatchFnClass(MatchFn[P, T]):
197
197
  _cls_match_fn: ta.ClassVar[MultiMatchFn]
198
198
 
199
- def __init__(self) -> None:
200
- super().__init__()
201
- self.__match_fn: MatchFn[P, T] | None = None
199
+ __match_fn: MatchFn[P, T] | None = None
202
200
 
203
201
  @property
204
202
  def _match_fn(self) -> MatchFn[P, T]:
omlish/marshal/global_.py CHANGED
@@ -29,7 +29,7 @@ def global_marshaler_factory() -> MarshalerFactory:
29
29
  return new_standard_marshaler_factory()
30
30
 
31
31
 
32
- def marshal(obj: ta.Any, ty: type | None = None, **kwargs: ta.Any) -> Value:
32
+ def marshal(obj: ta.Any, ty: ta.Any | None = None, **kwargs: ta.Any) -> Value:
33
33
  mc = MarshalContext(GLOBAL_REGISTRY, factory=global_marshaler_factory(), **kwargs)
34
34
  return mc.make(ty if ty is not None else type(obj)).marshal(mc, obj)
35
35
 
@@ -42,7 +42,17 @@ def global_unmarshaler_factory() -> UnmarshalerFactory:
42
42
  return new_standard_unmarshaler_factory()
43
43
 
44
44
 
45
+ @ta.overload
45
46
  def unmarshal(v: Value, ty: type[T], **kwargs: ta.Any) -> T:
47
+ ...
48
+
49
+
50
+ @ta.overload
51
+ def unmarshal(v: Value, ty: ta.Any, **kwargs: ta.Any) -> ta.Any:
52
+ ...
53
+
54
+
55
+ def unmarshal(v, ty, **kwargs):
46
56
  uc = UnmarshalContext(GLOBAL_REGISTRY, factory=global_unmarshaler_factory(), **kwargs)
47
57
  return uc.make(ty).unmarshal(uc, v)
48
58
 
@@ -64,3 +64,11 @@ from .types import ( # noqa
64
64
  JsonType,
65
65
  TYPE_SETS_BY_JSON_TYPE,
66
66
  )
67
+
68
+
69
+ ##
70
+
71
+
72
+ from ...lang.imports import _register_conditional_import # noqa
73
+
74
+ _register_conditional_import('...marshal', '.marshal', __package__)
@@ -0,0 +1,29 @@
1
+ import typing as ta
2
+
3
+ from ... import check
4
+ from ... import lang
5
+ from ... import marshal as msh
6
+ from .keywords.base import Keywords
7
+ from .keywords.parse import KeywordParser
8
+ from .keywords.render import render_keywords
9
+
10
+
11
+ ##
12
+
13
+
14
+ class _KeywordsMarshaler(msh.Marshaler):
15
+ def marshal(self, ctx: msh.MarshalContext, o: ta.Any) -> msh.Value:
16
+ return render_keywords(check.isinstance(o, Keywords))
17
+
18
+
19
+ class _KeywordsUnmarshaler(msh.Unmarshaler):
20
+ def unmarshal(self, ctx: msh.UnmarshalContext, v: msh.Value) -> ta.Any:
21
+ return KeywordParser(allow_unknown=True).parse_keywords(check.isinstance(v, ta.Mapping))
22
+
23
+
24
+ @lang.static_init
25
+ def _install_standard_marshalling() -> None:
26
+ msh.install_standard_factories(
27
+ msh.TypeMapMarshalerFactory({Keywords: _KeywordsMarshaler()}),
28
+ msh.TypeMapUnmarshalerFactory({Keywords: _KeywordsUnmarshaler()}),
29
+ )
@@ -6,10 +6,12 @@ from ... import lang
6
6
  from ... import marshal as msh
7
7
  from ... import reflect as rfl
8
8
  from ...funcs import match as mfs
9
+ from .. import jsonschema as jsch
9
10
  from .openapi import Reference
11
+ from .openapi import Schema
10
12
 
11
13
 
12
- #
14
+ ##
13
15
 
14
16
 
15
17
  def _reference_union_arg(rty: rfl.Type) -> rfl.Type | None:
@@ -19,6 +21,9 @@ def _reference_union_arg(rty: rfl.Type) -> rfl.Type | None:
19
21
  return None
20
22
 
21
23
 
24
+ #
25
+
26
+
22
27
  @dc.dataclass(frozen=True)
23
28
  class _ReferenceUnionMarshaler(msh.Marshaler):
24
29
  m: msh.Marshaler
@@ -37,6 +42,9 @@ class _ReferenceUnionMarshalerFactory(msh.MarshalerFactoryMatchClass):
37
42
  return _ReferenceUnionMarshaler(ctx.make(check.not_none(_reference_union_arg(rty))), ctx.make(Reference))
38
43
 
39
44
 
45
+ #
46
+
47
+
40
48
  @dc.dataclass(frozen=True)
41
49
  class _ReferenceUnionUnmarshaler(msh.Unmarshaler):
42
50
  u: msh.Unmarshaler
@@ -57,9 +65,84 @@ class _ReferenceUnionUnmarshalerFactory(msh.UnmarshalerFactoryMatchClass):
57
65
  return _ReferenceUnionUnmarshaler(ctx.make(check.not_none(_reference_union_arg(rty))), ctx.make(Reference))
58
66
 
59
67
 
68
+ ##
69
+
70
+
71
+ @dc.dataclass(frozen=True)
72
+ class _SchemaMarshaler(msh.Marshaler):
73
+ m_dct: ta.Mapping[str, tuple[str, msh.Marshaler]]
74
+ kw_m: msh.Marshaler
75
+
76
+ def marshal(self, ctx: msh.MarshalContext, o: ta.Any) -> msh.Value:
77
+ sch: Schema = check.isinstance(o, Schema)
78
+ dct = {}
79
+ for f, (k, fm) in self.m_dct.items():
80
+ fv = getattr(sch, f)
81
+ if fv is None:
82
+ continue
83
+ dct[k] = fm.marshal(ctx, fv)
84
+ if sch.keywords is not None:
85
+ dct.update(keywords=self.kw_m.marshal(ctx, sch.keywords))
86
+ return dct
87
+
88
+
89
+ class _SchemaMarshalerFactory(msh.MarshalerFactoryMatchClass):
90
+ @mfs.simple(lambda _, ctx, rty: rty is Schema)
91
+ def _build(self, ctx: msh.MarshalContext, rty: rfl.Type) -> msh.Marshaler:
92
+ return _SchemaMarshaler(
93
+ {
94
+ f: (msh.translate_name(f, msh.Naming.LOW_CAMEL), ctx.make(rfl.type_(a)))
95
+ for f, a in dc.reflect(Schema).field_annotations.items()
96
+ if f != 'keywords'
97
+ },
98
+ ctx.make(jsch.Keywords),
99
+ )
100
+
101
+
102
+ #
103
+
104
+
105
+ @dc.dataclass(frozen=True)
106
+ class _SchemaUnmarshaler(msh.Unmarshaler):
107
+ u_dct: ta.Mapping[str, tuple[str, msh.Unmarshaler]]
108
+ kw_u: msh.Unmarshaler
109
+
110
+ def unmarshal(self, ctx: msh.UnmarshalContext, v: msh.Value) -> ta.Any:
111
+ dct = dict(check.isinstance(v, ta.Mapping))
112
+ kw = {}
113
+ for k, (f, fu) in self.u_dct.items():
114
+ try:
115
+ kv = dct.pop(k)
116
+ except KeyError:
117
+ continue
118
+ kw[f] = fu.unmarshal(ctx, kv)
119
+ if dct:
120
+ kw.update(keywords=self.kw_u.unmarshal(ctx, dct))
121
+ return Schema(**kw)
122
+
123
+
124
+ class _SchemaUnmarshalerFactory(msh.UnmarshalerFactoryMatchClass):
125
+ @mfs.simple(lambda _, ctx, rty: rty is Schema)
126
+ def _build(self, ctx: msh.UnmarshalContext, rty: rfl.Type) -> msh.Unmarshaler:
127
+ return _SchemaUnmarshaler(
128
+ {
129
+ msh.translate_name(f, msh.Naming.LOW_CAMEL): (f, ctx.make(rfl.type_(a)))
130
+ for f, a in dc.reflect(Schema).field_annotations.items()
131
+ if f != 'keywords'
132
+ },
133
+ ctx.make(jsch.Keywords),
134
+ )
135
+
136
+
137
+ ##
138
+
139
+
60
140
  @lang.static_init
61
141
  def _install_standard_marshalling() -> None:
62
142
  msh.install_standard_factories(
63
143
  _ReferenceUnionMarshalerFactory(),
64
144
  _ReferenceUnionUnmarshalerFactory(),
145
+
146
+ _SchemaMarshalerFactory(),
147
+ _SchemaUnmarshalerFactory(),
65
148
  )
@@ -7,6 +7,7 @@ from ... import check
7
7
  from ... import dataclasses as dc
8
8
  from ... import marshal as msh
9
9
  from ...formats import json
10
+ from .. import jsonschema as jsch
10
11
 
11
12
 
12
13
  ##
@@ -76,7 +77,6 @@ class Discriminator:
76
77
 
77
78
 
78
79
  @dc.dataclass(frozen=True)
79
- @msh.update_object_metadata(field_naming=msh.Naming.LOW_CAMEL, unknown_field='x')
80
80
  class Schema:
81
81
  """https://swagger.io/specification/#schema-object"""
82
82
 
@@ -85,31 +85,7 @@ class Schema:
85
85
  external_docs: ta.Optional['ExternalDocumentation'] = None
86
86
  example: ta.Any | None = None
87
87
 
88
- # FIXME: HACK: this is a jsonschema lol - these are just hacked on
89
-
90
- type: str | None = None
91
- format: str | None = None
92
- one_of: ta.Any = None
93
- all_of: ta.Any = None
94
- default: ta.Any = None
95
- enum: ta.Any = None
96
- items: ta.Any = None
97
- required: ta.Any = None
98
- properties: ta.Any = None
99
- description: str | None = None
100
- title: str | None = None
101
- deprecated: bool | None = None
102
- nullable: bool | None = None
103
- additional_properties: ta.Any = None
104
-
105
- #
106
-
107
- x: ta.Mapping[str, ta.Any] | None = None
108
-
109
- @dc.init
110
- def _check_x(self) -> None:
111
- for k in self.x or {}:
112
- check.arg(k.startswith('x-'))
88
+ keywords: jsch.Keywords | None = None
113
89
 
114
90
 
115
91
  @dc.dataclass(frozen=True)
@@ -230,7 +206,7 @@ class ParameterCommon:
230
206
  style: str | None = None
231
207
  explode: bool | None = None
232
208
  allow_reserved: bool | None = None
233
- schema: Schema | None = None
209
+ schema: Schema | Reference | None = None
234
210
  example: ta.Any = None
235
211
  examples: ta.Mapping[str, Example | Reference] | None = None
236
212
 
@@ -96,30 +96,44 @@ def _build_typed_values_impls(rty: rfl.Type) -> msh.Impls:
96
96
  return msh.Impls(tv_impls)
97
97
 
98
98
 
99
+ #
100
+
101
+
102
+ def build_typed_values_marshaler(ctx: msh.MarshalContext, rty: rfl.Type) -> msh.Marshaler:
103
+ tv_m = msh.make_polymorphism_marshaler(
104
+ msh.Impls(_build_typed_values_impls(rty)),
105
+ msh.WrapperTypeTagging(),
106
+ ctx,
107
+ )
108
+ return msh.IterableMarshaler(tv_m)
109
+
110
+
99
111
  class TypedValuesMarshalerFactory(msh.MarshalerFactoryMatchClass):
100
112
  @mfs.simple(lambda _, ctx, rty: isinstance(rty, rfl.Generic) and rty.cls is TypedValues)
101
113
  def _build(self, ctx: msh.MarshalContext, rty: rfl.Type) -> msh.Marshaler:
102
- tv_m = msh.make_polymorphism_marshaler(
103
- msh.Impls(_build_typed_values_impls(rty)),
104
- msh.WrapperTypeTagging(),
105
- ctx,
106
- )
107
- return msh.IterableMarshaler(tv_m)
114
+ return build_typed_values_marshaler(ctx, rty)
108
115
 
109
116
  @mfs.simple(lambda _, ctx, rty: rty is TypedValues)
110
117
  def _build_concrete(self, ctx: msh.MarshalContext, rty: rfl.Type) -> msh.Marshaler:
111
118
  raise NotImplementedError
112
119
 
113
120
 
121
+ #
122
+
123
+
124
+ def build_typed_values_unmarshaler(ctx: msh.UnmarshalContext, rty: rfl.Type) -> msh.Unmarshaler:
125
+ tv_u = msh.make_polymorphism_unmarshaler(
126
+ msh.Impls(_build_typed_values_impls(rty)),
127
+ msh.WrapperTypeTagging(),
128
+ ctx,
129
+ )
130
+ return msh.IterableUnmarshaler(lambda it: TypedValues(*it), tv_u) # noqa
131
+
132
+
114
133
  class TypedValuesUnmarshalerFactory(msh.UnmarshalerFactoryMatchClass):
115
134
  @mfs.simple(lambda _, ctx, rty: isinstance(rty, rfl.Generic) and rty.cls is TypedValues)
116
135
  def _build(self, ctx: msh.UnmarshalContext, rty: rfl.Type) -> msh.Unmarshaler:
117
- tv_u = msh.make_polymorphism_unmarshaler(
118
- msh.Impls(_build_typed_values_impls(rty)),
119
- msh.WrapperTypeTagging(),
120
- ctx,
121
- )
122
- return msh.IterableUnmarshaler(lambda it: TypedValues(*it), tv_u) # noqa
136
+ return build_typed_values_unmarshaler(ctx, rty)
123
137
 
124
138
  @mfs.simple(lambda _, ctx, rty: rty is TypedValues)
125
139
  def _build_concrete(self, ctx: msh.UnmarshalContext, rty: rfl.Type) -> msh.Unmarshaler:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev332
3
+ Version: 0.0.0.dev334
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=orgsRvtpHu8tdhaCvlP9v3P495OJopYYiHKjK68WtWg,8587
2
- omlish/__about__.py,sha256=r6XTgLXcL6l8jSyx01oleAawjO4edY2vAJ_QO-jMZvY,3478
2
+ omlish/__about__.py,sha256=PGELc-IWonEnbSdy9g9Y972xiTIxoswSoUSwZonf5FU,3478
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
@@ -140,7 +140,7 @@ omlish/dataclasses/debug.py,sha256=giBiv6aXvX0IagwNCW64qBzNjfOFr3-VmgDy_KYlb-k,2
140
140
  omlish/dataclasses/errors.py,sha256=tyv3WR6az66uGGiq9FIuCHvy1Ef-G7zeMY7mMG6hy2Y,2527
141
141
  omlish/dataclasses/inspect.py,sha256=BlpPghVCU3w_YDnONEqqE99YHzJM2q3eoqe39YX25Ko,4596
142
142
  omlish/dataclasses/internals.py,sha256=vIGCZnStgD3ef4drYRtVOrxhxmAPa0vJpo4pXcDcQvM,3073
143
- omlish/dataclasses/reflection.py,sha256=FSSTiS7pGTmDrYNkS6fZzaMSe8qtSvDv5Pgz0T55qXg,2404
143
+ omlish/dataclasses/reflection.py,sha256=r0cZWIajIyPeacwR6PGfJGbL8dg7jHXZSvJjey81rPo,2766
144
144
  omlish/dataclasses/specs.py,sha256=JFpMILJhxiWYmfTD4TDl03O13o1i0Rwgf14WpI7U9go,6193
145
145
  omlish/dataclasses/utils.py,sha256=gv6za6oJYBr1VaeGd7oXqq9lhBs_sxkpC27XYzJggno,1870
146
146
  omlish/dataclasses/api/__init__.py,sha256=k5iS9QOwf_f4iOfGffYhnqDOcmEIwEUUTp00u11kIPM,455
@@ -260,7 +260,7 @@ omlish/formats/edn/values.py,sha256=jf0g88KJIMALxcuH51SoaMWg1HqTUqc1ugldmyyXWoc,
260
260
  omlish/formats/ini/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
261
261
  omlish/formats/ini/codec.py,sha256=omuFg0kiDksv8rRlWd_v32ebzEcKlgmiPgGID3bRi2M,631
262
262
  omlish/formats/ini/sections.py,sha256=7wYyZdVTQbMPFpjQEACKJfAEPzUBrogINsrvFgxJoZ0,1015
263
- omlish/formats/json/__init__.py,sha256=HXFv4VDTBhx0k5U4JYWZqxziBwzJoPX51QK3xIboT8U,786
263
+ omlish/formats/json/__init__.py,sha256=MAvDQlUgn6DlVZaL03539tYfdtU0cT1Y9Rcy9yBhjYs,889
264
264
  omlish/formats/json/codecs.py,sha256=E5KErfqsgGZq763ixXLT3qysbk5MIsypT92xG5aSaIs,796
265
265
  omlish/formats/json/consts.py,sha256=A0cTAGGLyjo-gcYIQrL4JIaardI0yPMhQoNmh42BaRg,387
266
266
  omlish/formats/json/encoding.py,sha256=iwoYyJePibgvRDZ6e9b2OlXmOBJEczquRNoiffVf3hE,502
@@ -268,7 +268,7 @@ omlish/formats/json/json.py,sha256=Mdqv2vdMi7gp96eV0BIYH5UdWpjWfsh-tSMZeywG-08,3
268
268
  omlish/formats/json/literals.py,sha256=MMou9UIoztL9EyX2Zhv3Kzfq8eaKMfGNCFhL16n-fTk,7532
269
269
  omlish/formats/json/rendering.py,sha256=0S_ppr5ihkUW7PP0mipZXHr72otqwUCNfanwopcboag,4571
270
270
  omlish/formats/json/types.py,sha256=ueO9-uOU2eVWowJf0LH1fHFLjZ6fTIZyq9qybcLQaiQ,147
271
- omlish/formats/json/backends/__init__.py,sha256=gnaNDCxy_KmmPUPDnjxO5_WjuWxLGbI9FYWx8ZJuQUU,97
271
+ omlish/formats/json/backends/__init__.py,sha256=foi543hIIODpUfvlwVMtkWDGhZSRGaC3BBxdIrinofo,160
272
272
  omlish/formats/json/backends/base.py,sha256=WqtyoM82pyM0NyqpPwndrebr1bUVU1QlpmVQNrcAO8c,1114
273
273
  omlish/formats/json/backends/default.py,sha256=a-eM-Y1IHdpYvZFjazwq_orRncjtYR7BKxP_2kpEXog,322
274
274
  omlish/formats/json/backends/jiter.py,sha256=8qv_XWGpcupPtVm6Z_egHio_iY1Kk8eqkvXTF6fVZr4,1193
@@ -300,7 +300,7 @@ omlish/formats/toml/parser.py,sha256=0laC7Br_Colk8QxgmuU_pPg6fhcAQ2rMB2saSlLm9S0
300
300
  omlish/formats/toml/writer.py,sha256=HIp6XvriXaPTLqyLe-fkIiEf1Pyhsp0TcOg5rFBpO3g,3226
301
301
  omlish/funcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
302
  omlish/funcs/genmachine.py,sha256=D9dChaliNBIjYE6lJP5ctcVQUCffNBhceyaaLvBJ7ns,2578
303
- omlish/funcs/match.py,sha256=gMLZn1enNiFvQaWrQubY300M1BrmdKWzeePihBS7Ywc,6153
303
+ omlish/funcs/match.py,sha256=MAzpWkdIvhdoQTm-R2ivRDkfG8--RmdusiRF137cKEM,6085
304
304
  omlish/funcs/pairs.py,sha256=VCkZjDmJGtR76BsejsHNfb4TcpHCtkkmak-zWDFchAo,3904
305
305
  omlish/funcs/pipes.py,sha256=E7Sz8Aj8ke_vCs5AMNwg1I36kRdHVGTnzxVQaDyn43U,2490
306
306
  omlish/graphs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -492,7 +492,7 @@ omlish/marshal/__init__.py,sha256=7jIXe9wQv-if1iRUuU6a4MdHScTLFFL8X2JwHaNTAxI,33
492
492
  omlish/marshal/base.py,sha256=Q0ZRsz5z0NTI6PeWPc9mdMstJryDDbeIAdpKH9-SDps,11427
493
493
  omlish/marshal/errors.py,sha256=g5XJyTHd__8lfwQ4KwgK-E5WR6MoNTMrqKP2U_QRQQQ,307
494
494
  omlish/marshal/factories.py,sha256=Q926jSVjaQLEmStnHLhm_c_vqEysN1LnDCwAsFLIzXw,2970
495
- omlish/marshal/global_.py,sha256=sdBC6PbP77iUAYZ9GIYyAFrbmg14bp6iU3f1l5tpOSE,1378
495
+ omlish/marshal/global_.py,sha256=nTJmC17O8SJNURScIdYqEY72h-dRy6D-SaDSUQCp-cY,1523
496
496
  omlish/marshal/naming.py,sha256=7jQ204u_Kpc3-OGr-ctUHSv997DdWYRLh643qLHJhks,852
497
497
  omlish/marshal/proxy.py,sha256=puKJpwPpuDlMOIrKMcLTRLJyMiL6n_Xs-p59AuDEymA,543
498
498
  omlish/marshal/registries.py,sha256=FvC6qXHCizNB2QmU_N3orxW7iqfGYkiUXYYdTRWS6HA,2353
@@ -628,7 +628,8 @@ omlish/specs/jsonrpc/conns.py,sha256=zvWnBHuSoGnvbGVk72Usp4IFsLscrzPozqR2hmFjnDI
628
628
  omlish/specs/jsonrpc/errors.py,sha256=-Zgmlo6bV6J8w5f8h9axQgLquIFBHDgIwcpufEH5NsE,707
629
629
  omlish/specs/jsonrpc/marshal.py,sha256=HM736piPGnBZrg8CMLDX-L5fZpegyF6l6JUjzLoSDtk,1852
630
630
  omlish/specs/jsonrpc/types.py,sha256=Se9ecG-_k-kY_Qlt9QD2t3y26oY4sXTcskp6XZfVans,3054
631
- omlish/specs/jsonschema/__init__.py,sha256=rdHG_0kKn64qizk0UI5S2uXV2hzf5vxnt4SXRw9yGuU,1086
631
+ omlish/specs/jsonschema/__init__.py,sha256=-A5mPI3NPcGxqTfux9gvV56O6GbQG9MytAGB98E-1DU,1227
632
+ omlish/specs/jsonschema/marshal.py,sha256=-pmBtNnKC0sxGg3TMVWngTbSSAwG1zQyt0D6aZutd84,873
632
633
  omlish/specs/jsonschema/types.py,sha256=_H7ma99hD3_Xu42BFGHOXRI5p79tY8WBX8QE36k7lbw,472
633
634
  omlish/specs/jsonschema/keywords/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
634
635
  omlish/specs/jsonschema/keywords/base.py,sha256=QjkMrKw58j99r-Ug2I4Y-SGbyKSTVho5FUP_lWDQ4wA,3010
@@ -653,8 +654,8 @@ omlish/specs/jsonschema/schemas/draft202012/vocabularies/meta-data.json,sha256=j
653
654
  omlish/specs/jsonschema/schemas/draft202012/vocabularies/unevaluated.json,sha256=Lb-8tzmUtnCwl2SSre4f_7RsIWgnhNL1pMpWH54tDLQ,506
654
655
  omlish/specs/jsonschema/schemas/draft202012/vocabularies/validation.json,sha256=cBCjHlQfMtK-ch4t40jfdcmzaHaj7TBId_wKvaHTelg,2834
655
656
  omlish/specs/openapi/__init__.py,sha256=mIx7Askk3FNxGE1CDLBQUOOrRGYaqW7cPGVW4_nAFF4,187
656
- omlish/specs/openapi/marshal.py,sha256=XAKKmyuqVKw5y8RE8WlQFfNpmmX8tYIaKipmOWGmFwc,2101
657
- omlish/specs/openapi/openapi.py,sha256=y4h04jeB7ORJSVrcy7apaBdpwLjIyscv1Ub5SderH2c,12682
657
+ omlish/specs/openapi/marshal.py,sha256=6CB2LCwFfU5rstqkgN_j4Z5rbnba2glzOxcSd01uffI,4451
658
+ omlish/specs/openapi/openapi.py,sha256=6KGY_d8HOyG7ssHIWM40MCXgIMzNLiLKHYNggTSpAYM,12027
658
659
  omlish/specs/proto/Protobuf3.g4,sha256=chDrovFsuZaHf5W35WZNts3jOa1ssPwvWiJR4yVIgjw,5552
659
660
  omlish/specs/proto/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
660
661
  omlish/specs/proto/nodes.py,sha256=nwA6KyU9pZHLE9cO9dh46qTl6vfYJ8SjuUDlLBuoOms,776
@@ -854,12 +855,12 @@ omlish/typedvalues/collection.py,sha256=TjNuEEyTXbGfbsk7nvBB_Jhgz94R5JSs0u6ocNAl
854
855
  omlish/typedvalues/consumer.py,sha256=peDQAgriSyBx_Hc8QHAhEgYy0oSS52qQ_7Tqdssl2AE,4375
855
856
  omlish/typedvalues/generic.py,sha256=ft-x4X3k1oFirtYnDfsvrI3ZQikWM8lGLrvrOEbcGq0,742
856
857
  omlish/typedvalues/holder.py,sha256=vu-umn-h1nvUqmtV5T9ZfQ_OoOYsERu8PhI2N48Ryns,1133
857
- omlish/typedvalues/marshal.py,sha256=pGA4qzAmpqJTeUya4sTSNEkuXoyUdg5l_XTotR8v9SU,4694
858
+ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0,4956
858
859
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
859
860
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
860
- omlish-0.0.0.dev332.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
861
- omlish-0.0.0.dev332.dist-info/METADATA,sha256=OxcNh3fpYssk2Yi1ivKcjcmtZbBWFloHT6Zr8LoQtw8,4416
862
- omlish-0.0.0.dev332.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
863
- omlish-0.0.0.dev332.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
864
- omlish-0.0.0.dev332.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
865
- omlish-0.0.0.dev332.dist-info/RECORD,,
861
+ omlish-0.0.0.dev334.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
862
+ omlish-0.0.0.dev334.dist-info/METADATA,sha256=PQVRplnQdzBebIw1s5NvsTM-U5O9KJluBfmJYhT5h6o,4416
863
+ omlish-0.0.0.dev334.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
864
+ omlish-0.0.0.dev334.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
865
+ omlish-0.0.0.dev334.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
866
+ omlish-0.0.0.dev334.dist-info/RECORD,,