omlish 0.0.0.dev333__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.dev333'
2
- __revision__ = '6bdf8fd7239d2a0d37ef56577759311e43d08ac3'
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/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
 
@@ -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
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev333
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=0dheu23lnr3-QXTXqGmht7cpWFrK2XfZybnSnnz1y88,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
@@ -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=Dv3a6lLU7ikgvcpvfjrG1BZFC4u-zcDvQUT1buphAVU,1380
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
@@ -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.dev333.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
861
- omlish-0.0.0.dev333.dist-info/METADATA,sha256=eG_IP0glYv3_nrLZkSatlDLoDZLzvPIG7okIfT8_P5Y,4416
862
- omlish-0.0.0.dev333.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
863
- omlish-0.0.0.dev333.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
864
- omlish-0.0.0.dev333.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
865
- omlish-0.0.0.dev333.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,,