omlish 0.0.0.dev333__py3-none-any.whl → 0.0.0.dev335__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 +2 -2
- omlish/dataclasses/reflection.py +18 -0
- omlish/formats/json/__init__.py +9 -0
- omlish/formats/json/backends/__init__.py +5 -0
- omlish/marshal/global_.py +10 -0
- omlish/specs/jsonschema/__init__.py +8 -0
- omlish/specs/jsonschema/marshal.py +29 -0
- omlish/specs/openapi/marshal.py +84 -1
- omlish/specs/openapi/openapi.py +3 -27
- {omlish-0.0.0.dev333.dist-info → omlish-0.0.0.dev335.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev333.dist-info → omlish-0.0.0.dev335.dist-info}/RECORD +15 -14
- {omlish-0.0.0.dev333.dist-info → omlish-0.0.0.dev335.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev333.dist-info → omlish-0.0.0.dev335.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev333.dist-info → omlish-0.0.0.dev335.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev333.dist-info → omlish-0.0.0.dev335.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
omlish/dataclasses/reflection.py
CHANGED
@@ -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)
|
omlish/formats/json/__init__.py
CHANGED
omlish/marshal/global_.py
CHANGED
@@ -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
|
|
@@ -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
|
+
)
|
omlish/specs/openapi/marshal.py
CHANGED
@@ -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
|
)
|
omlish/specs/openapi/openapi.py
CHANGED
@@ -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
|
-
|
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
|
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.manifests.json,sha256=orgsRvtpHu8tdhaCvlP9v3P495OJopYYiHKjK68WtWg,8587
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=H-aNkbPszpa6awU7KHxFKYgjg-Cbj5UcLXu6RGHn5n0,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=
|
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=
|
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=
|
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
|
@@ -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=
|
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
|
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=
|
657
|
-
omlish/specs/openapi/openapi.py,sha256=
|
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
|
@@ -857,9 +858,9 @@ omlish/typedvalues/holder.py,sha256=vu-umn-h1nvUqmtV5T9ZfQ_OoOYsERu8PhI2N48Ryns,
|
|
857
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.
|
861
|
-
omlish-0.0.0.
|
862
|
-
omlish-0.0.0.
|
863
|
-
omlish-0.0.0.
|
864
|
-
omlish-0.0.0.
|
865
|
-
omlish-0.0.0.
|
861
|
+
omlish-0.0.0.dev335.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
862
|
+
omlish-0.0.0.dev335.dist-info/METADATA,sha256=iYf3Stk7331KK-5TJNBTAylpuR2OF5O3Lte6wAllk_4,4416
|
863
|
+
omlish-0.0.0.dev335.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
864
|
+
omlish-0.0.0.dev335.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
865
|
+
omlish-0.0.0.dev335.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
866
|
+
omlish-0.0.0.dev335.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|