omlish 0.0.0.dev392__py3-none-any.whl → 0.0.0.dev393__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.dev392'
2
- __revision__ = 'b709bee1bc3c60ff875c432a230426a0eb51269f'
1
+ __version__ = '0.0.0.dev393'
2
+ __revision__ = '7624d40b9a78e52aec03b012a4b4f7b060d4f2f0'
3
3
 
4
4
 
5
5
  #
@@ -2,6 +2,13 @@ import dataclasses as dc
2
2
  import typing as ta
3
3
 
4
4
  from ... import check
5
+ from ... import lang
6
+
7
+
8
+ if ta.TYPE_CHECKING:
9
+ from ..metaclass import meta
10
+ else:
11
+ meta = lang.proxy_import('..metaclass.meta', __package__)
5
12
 
6
13
 
7
14
  T = ta.TypeVar('T')
@@ -30,6 +37,9 @@ def update_fields(
30
37
  fields: ta.Iterable[str] | None = None,
31
38
  ) -> ta.Callable[[type[T]], type[T]]:
32
39
  def inner(cls):
40
+ if issubclass(cls, meta.DataMeta):
41
+ raise TypeError('update_fields() cannot be used on DataMeta subclasses')
42
+
33
43
  if fields is None:
34
44
  for a, v in list(cls.__dict__.items()):
35
45
  if isinstance(v, dc.Field):
omlish/lang/__init__.py CHANGED
@@ -254,6 +254,8 @@ from .maysyncs import ( # noqa
254
254
  MaysyncP,
255
255
 
256
256
  make_maysync,
257
+ make_maysync_from_sync,
258
+
257
259
  maysync,
258
260
  )
259
261
 
omlish/lang/maysyncs.py CHANGED
@@ -16,6 +16,16 @@ MaysyncP: ta.TypeAlias = ta.Callable[P, Maywaitable[T]]
16
16
 
17
17
 
18
18
  def make_maysync(
19
+ s: ta.Callable[P, T],
20
+ a: ta.Callable[P, ta.Awaitable[T]],
21
+ ) -> MaysyncP[P, T]:
22
+ return ta.cast('MaysyncP[P, T]', _make_maysync(
23
+ s,
24
+ a,
25
+ ))
26
+
27
+
28
+ def make_maysync_from_sync(
19
29
  s: ta.Callable[P, T],
20
30
  a: ta.Callable[P, ta.Awaitable[T]] | None = None,
21
31
  ) -> MaysyncP[P, T]:
@@ -25,6 +35,9 @@ def make_maysync(
25
35
  ))
26
36
 
27
37
 
38
+ ##
39
+
40
+
28
41
  def maysync(m: ta.Callable[P, ta.Awaitable[T]]) -> MaysyncP[P, T]:
29
42
  return ta.cast('MaysyncP[P, T]', _maysync(
30
43
  m,
omlish/lite/maysyncs.py CHANGED
@@ -1,4 +1,4 @@
1
- # ruff: noqa: UP045
1
+ # ruff: noqa: UP006 UP045
2
2
  # @omlish-lite
3
3
  """
4
4
  TODO:
@@ -34,8 +34,22 @@ class Maywaitable(ta.Protocol[T_co]):
34
34
  Maysync = ta.Callable[..., Maywaitable[T]] # ta.TypeAlias # omlish-amalg-typing-no-move
35
35
 
36
36
 
37
- class Maysync_(abc.ABC): # noqa
38
- pass
37
+ class Maysync_(abc.ABC, ta.Generic[T]): # noqa
38
+ @ta.final
39
+ def cast(self) -> Maysync[T]:
40
+ return ta.cast('Maysync[T]', self)
41
+
42
+ class FnPair(ta.NamedTuple):
43
+ s: ta.Callable[..., ta.Any]
44
+ a: ta.Callable[..., ta.Awaitable[ta.Any]]
45
+
46
+ @abc.abstractmethod
47
+ def fn_pair(self) -> ta.Optional[FnPair]:
48
+ raise NotImplementedError
49
+
50
+ @abc.abstractmethod
51
+ def __call__(self, *args, **kwargs): # -> Maywaitable[T]
52
+ raise NotImplementedError
39
53
 
40
54
 
41
55
  ##
@@ -49,16 +63,19 @@ class _Maywaitable(abc.ABC, ta.Generic[_MaysyncX, T]):
49
63
  *args: ta.Any,
50
64
  **kwargs: ta.Any,
51
65
  ) -> None:
52
- self.x = x
53
- self.args = args
54
- self.kwargs = kwargs
66
+ self._x = x
67
+ self._args = args
68
+ self._kwargs = kwargs
69
+
70
+ def __repr__(self) -> str:
71
+ return f'{self.__class__.__name__}@{id(self):x}({self._x!r})'
55
72
 
56
73
  @ta.final
57
74
  def m(self) -> ta.Awaitable[T]:
58
75
  return _MaysyncFuture(_MaysyncOp(
59
- ta.cast(ta.Any, self.x),
60
- *self.args,
61
- **self.kwargs,
76
+ ta.cast(ta.Any, self._x),
77
+ self._args,
78
+ self._kwargs,
62
79
  ))
63
80
 
64
81
 
@@ -76,13 +93,22 @@ class _FnMaysync(Maysync_, ta.Generic[T]):
76
93
  raise TypeError(s)
77
94
  if a is None:
78
95
  raise TypeError(a)
79
- self.s = s
80
- self.a = a
96
+ self._s = s
97
+ self._a = a
98
+
99
+ def __repr__(self) -> str:
100
+ return f'{self.__class__.__name__}@{id(self):x}({self._s!r}, {self._a!r})'
101
+
102
+ def fn_pair(self) -> ta.Optional[Maysync_.FnPair]:
103
+ return Maysync_.FnPair(
104
+ self._s,
105
+ self._a,
106
+ )
81
107
 
82
108
  def __get__(self, instance, owner=None):
83
109
  return _FnMaysync(
84
- self.s.__get__(instance, owner), # noqa
85
- self.a.__get__(instance, owner), # noqa
110
+ self._s.__get__(instance, owner), # noqa
111
+ self._a.__get__(instance, owner), # noqa
86
112
  )
87
113
 
88
114
  def __call__(self, *args, **kwargs):
@@ -92,10 +118,10 @@ class _FnMaysync(Maysync_, ta.Generic[T]):
92
118
  @ta.final
93
119
  class _FnMaywaitable(_Maywaitable[_FnMaysync[T], T]):
94
120
  def s(self) -> T:
95
- return self.x.s(*self.args, **self.kwargs)
121
+ return self._x._s(*self._args, **self._kwargs) # noqa
96
122
 
97
123
  async def a(self) -> T:
98
- return await self.x.a(*self.args, **self.kwargs)
124
+ return await self._x._a(*self._args, **self._kwargs) # noqa
99
125
 
100
126
 
101
127
  def make_maysync(
@@ -114,13 +140,19 @@ class _MgMaysync(Maysync_, ta.Generic[T]):
114
140
  self,
115
141
  mg: ta.Callable[..., _MaysyncGen[T]],
116
142
  ) -> None:
117
- self.mg = mg
143
+ self._mg = mg
118
144
 
119
145
  functools.update_wrapper(self, mg, updated=())
120
146
 
147
+ def __repr__(self) -> str:
148
+ return f'{self.__class__.__name__}@{id(self):x}({self._mg!r})'
149
+
150
+ def fn_pair(self) -> ta.Optional[Maysync_.FnPair]:
151
+ return None
152
+
121
153
  def __get__(self, instance, owner=None):
122
154
  return _MgMaysync(
123
- self.mg.__get__(instance, owner), # noqa
155
+ self._mg.__get__(instance, owner), # noqa
124
156
  )
125
157
 
126
158
  def __call__(self, *args, **kwargs):
@@ -130,7 +162,7 @@ class _MgMaysync(Maysync_, ta.Generic[T]):
130
162
  @ta.final
131
163
  class _MgMaywaitable(_Maywaitable[_MgMaysync[T], T]):
132
164
  def s(self) -> T:
133
- g = self.x.mg(*self.args, **self.kwargs)
165
+ g = self._x._mg(*self._args, **self._kwargs) # noqa
134
166
 
135
167
  i: ta.Any = None
136
168
  e: ta.Any = None
@@ -158,7 +190,7 @@ class _MgMaywaitable(_Maywaitable[_MgMaysync[T], T]):
158
190
  del o
159
191
 
160
192
  async def a(self) -> T:
161
- g = self.x.mg(*self.args, **self.kwargs)
193
+ g = self._x._mg(*self._args, **self._kwargs) # noqa
162
194
 
163
195
  i: ta.Any = None
164
196
  e: ta.Any = None
@@ -189,17 +221,20 @@ class _MgMaywaitable(_Maywaitable[_MgMaysync[T], T]):
189
221
  @ta.final
190
222
  class _MgMaysyncFn:
191
223
  def __init__(self, m):
192
- self.m = m
224
+ self._m = m
193
225
 
194
226
  functools.update_wrapper(self, m, updated=())
195
227
 
228
+ def __repr__(self) -> str:
229
+ return f'{self.__class__.__name__}@{id(self):x}({self._m!r})'
230
+
196
231
  def __get__(self, instance, owner=None):
197
232
  return _MgMaysyncFn(
198
- self.m.__get__(instance, owner),
233
+ self._m.__get__(instance, owner),
199
234
  )
200
235
 
201
236
  def __call__(self, *args, **kwargs):
202
- a = self.m(*args, **kwargs).__await__()
237
+ a = self._m(*args, **kwargs).__await__()
203
238
  try:
204
239
  g = iter(a)
205
240
  try:
@@ -240,13 +275,16 @@ class _MaysyncOp:
240
275
  def __init__(
241
276
  self,
242
277
  x: Maysync[T],
243
- *args: ta.Any,
244
- **kwargs: ta.Any,
278
+ args: ta.Tuple[ta.Any, ...],
279
+ kwargs: ta.Mapping[str, ta.Any],
245
280
  ) -> None:
246
281
  self.x = x
247
282
  self.args = args
248
283
  self.kwargs = kwargs
249
284
 
285
+ def __repr__(self) -> str:
286
+ return f'{self.__class__.__name__}@{id(self):x}({self.x!r})'
287
+
250
288
 
251
289
  class _MaysyncFutureNotAwaitedError(RuntimeError):
252
290
  pass
@@ -260,6 +298,9 @@ class _MaysyncFuture(ta.Generic[T]):
260
298
  ) -> None:
261
299
  self.op = op
262
300
 
301
+ def __repr__(self) -> str:
302
+ return f'{self.__class__.__name__}@{id(self):x}({self.op!r}, done={self.done!r})'
303
+
263
304
  done: bool = False
264
305
  result: T
265
306
  error: ta.Optional[BaseException] = None
@@ -1,6 +1,5 @@
1
1
  """
2
2
  TODO:
3
- - join
4
3
  - subquery
5
4
  """
6
5
  import enum
@@ -8,6 +7,7 @@ import typing as ta
8
7
 
9
8
  from ... import dataclasses as dc
10
9
  from ... import lang
10
+ from ... import marshal as msh
11
11
  from .base import Node
12
12
  from .exprs import CanExpr
13
13
  from .exprs import Expr
@@ -29,7 +29,7 @@ class Relation(Node, lang.Abstract):
29
29
 
30
30
  class Table(Relation, lang.Final):
31
31
  n: Name
32
- a: Ident | None = dc.xfield(None, repr_fn=dc.opt_repr)
32
+ a: Ident | None = dc.xfield(None, repr_fn=dc.opt_repr) | msh.with_field_metadata(omit_if=lang.is_none)
33
33
 
34
34
 
35
35
  #
@@ -50,7 +50,7 @@ class Join(Relation, lang.Final):
50
50
  l: Relation
51
51
  r: Relation
52
52
 
53
- c: Expr | None = None
53
+ c: Expr | None = dc.xfield(None, repr_fn=dc.opt_repr) | msh.with_field_metadata(omit_if=lang.is_none)
54
54
 
55
55
 
56
56
  ##
@@ -2,6 +2,7 @@ import typing as ta
2
2
 
3
3
  from ... import dataclasses as dc
4
4
  from ... import lang
5
+ from ... import marshal as msh
5
6
  from .base import Node
6
7
  from .exprs import CanExpr
7
8
  from .exprs import Expr
@@ -26,7 +27,7 @@ class AllSelectItem(SelectItem, lang.Final):
26
27
 
27
28
  class ExprSelectItem(SelectItem, lang.Final):
28
29
  v: Expr
29
- a: Ident | None = dc.xfield(None, repr_fn=dc.opt_repr)
30
+ a: Ident | None = dc.xfield(None, repr_fn=dc.opt_repr) | msh.with_field_metadata(omit_if=lang.is_none)
30
31
 
31
32
 
32
33
  ##
@@ -34,8 +35,8 @@ class ExprSelectItem(SelectItem, lang.Final):
34
35
 
35
36
  class Select(Stmt, lang.Final):
36
37
  items: ta.Sequence[SelectItem] = dc.xfield(coerce=tuple)
37
- from_: Relation | None = dc.xfield(None, repr_fn=dc.opt_repr)
38
- where: Expr | None = dc.xfield(None, repr_fn=dc.opt_repr)
38
+ from_: Relation | None = dc.xfield(None, repr_fn=dc.opt_repr) | msh.with_field_metadata(name='from', omit_if=lang.is_none) # noqa
39
+ where: Expr | None = dc.xfield(None, repr_fn=dc.opt_repr) | msh.with_field_metadata(omit_if=lang.is_none)
39
40
 
40
41
 
41
42
  CanSelectItem: ta.TypeAlias = SelectItem | CanExpr
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev392
3
+ Version: 0.0.0.dev393
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.manifests.json,sha256=aT8yZ-Zh-9wfHl5Ym5ouiWC1i0cy7Q7RlhzavB6VLPI,8587
2
- omlish/__about__.py,sha256=XdAI-aCVCwAxt0sgNLHpPlE2oWfpMedlrB4gF020R7g,3543
2
+ omlish/__about__.py,sha256=Ecs9Y68M7tY4vQsy6795a2JDqG9iRNujk3WD8bB9QRY,3543
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
@@ -198,7 +198,7 @@ omlish/dataclasses/processing/registry.py,sha256=iNDHwW1gsq8gTMi4XvNBBzab0OYdSKv
198
198
  omlish/dataclasses/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
199
199
  omlish/dataclasses/tools/as_.py,sha256=3mTFXf563Z4ZZnbCzJHv83WizOYBs2mpigJCamxTlpQ,2893
200
200
  omlish/dataclasses/tools/iter.py,sha256=JQUFG4Gn-xthhJ3OEqXLOWkq2KhRMuIqvEow0HcFPZg,540
201
- omlish/dataclasses/tools/modifiers.py,sha256=xo6D4yl58HhJrFwV1JeoNrLrgC4MUA6SAXCGoyV-gnM,1212
201
+ omlish/dataclasses/tools/modifiers.py,sha256=VpE16fYDIQo7dpT0oUbCuqr9WohMohmFdKHhVVjkQqE,1486
202
202
  omlish/dataclasses/tools/only_.py,sha256=hPpqzr9YW09YmlX_QJNU2aePHYJEIrbGCPwmnvVS_to,849
203
203
  omlish/dataclasses/tools/replace.py,sha256=izM9lPT6AhEtjqn22auqaofa0j69KO7iootF-2Uj4cY,396
204
204
  omlish/dataclasses/tools/repr.py,sha256=KFvF6uv2YYIKq8O3ZNbEAS1tqRQALsJ-SUlBNPd5_GI,190
@@ -420,7 +420,7 @@ omlish/iterators/iterators.py,sha256=RxW35yQ5ed8vBQ22IqpDXFx-i5JiLQdp7-pkMZXhJJ8
420
420
  omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,472
421
421
  omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
422
422
  omlish/iterators/unique.py,sha256=Nw0pSaNEcHAkve0ugfLPvJcirDOn9ECyC5wIL8JlJKI,1395
423
- omlish/lang/__init__.py,sha256=ZkDWvp1jUTbw2-sDzUij4hYH4RtjnTBLHMPjrw-4ORk,6785
423
+ omlish/lang/__init__.py,sha256=JAtUfF-W0qW4BdJz2hgXRBdjUGl43ZLUghbM_bffoIM,6814
424
424
  omlish/lang/attrs.py,sha256=zFiVuGVOq88x45464T_LxDa-ZEq_RD9zJLq2zeVEBDc,5105
425
425
  omlish/lang/casing.py,sha256=cFUlbDdXLhwnWwcYx4qnM5c4zGX7hIRUfcjiZbxUD28,4636
426
426
  omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
@@ -435,7 +435,7 @@ omlish/lang/functions.py,sha256=aLdxhmqG0Pj9tBgsKdoCu_q15r82WIkNqDDSPQU19L8,5689
435
435
  omlish/lang/generators.py,sha256=a4D5HU_mySs2T2z3xCmE_s3t4QJkj0YRrK4-hhpGd0A,5197
436
436
  omlish/lang/imports.py,sha256=y9W9Y-d_cQ35QCLuSIPoa6vnEqSErFCz8b-34IH128U,10552
437
437
  omlish/lang/iterables.py,sha256=y1SX2Co3VsOeX2wlfFF7K3rwLvF7Dtre7VY6EpfwAwA,3338
438
- omlish/lang/maysyncs.py,sha256=rUeOFpoqVSbQ_YcPvky4IDBDnpm67K26ADYCNfjMSQY,683
438
+ omlish/lang/maysyncs.py,sha256=kULOW2M9PFhLd1TdtmGGQstPgrJpl--JUv9FOHWl4f8,894
439
439
  omlish/lang/objects.py,sha256=ZsibJwNp1EXorbaObm9TlCNtuuM65snCmVb7H4_llqI,6116
440
440
  omlish/lang/outcomes.py,sha256=0PqxoKaGbBXU9UYZ6AE2QSq94Z-gFDt6wYdp0KomNQw,8712
441
441
  omlish/lang/overrides.py,sha256=IBzK6ljfLX6TLgIyKTSjhqTLcuKRkQNVtEOnBLS4nuA,2095
@@ -478,7 +478,7 @@ omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
478
478
  omlish/lite/logs.py,sha256=CWFG0NKGhqNeEgryF5atN2gkPYbUdTINEw_s1phbINM,51
479
479
  omlish/lite/marshal.py,sha256=JD_8ox5-yeIo7MZ6iipCdiVxx33So52M02AtvFlRGC8,20392
480
480
  omlish/lite/maybes.py,sha256=0p_fzb6yiOjEpvMKaQ53Q6CH1VPW1or7v7Lt1JIKcgM,4359
481
- omlish/lite/maysyncs.py,sha256=ltB3CQ_zYl2PiTmHjtpeErZDFpNwj27JhO6_3xBmnfk,5852
481
+ omlish/lite/maysyncs.py,sha256=MT3zF5kQ5rNlWU7db9Q_uXSM8K2C8LK85PIgdBsJyGE,7251
482
482
  omlish/lite/pycharm.py,sha256=FRHGcCDo42UzZXqNwW_DkhI-6kb_CmJKPiQ8F6mYkLA,1174
483
483
  omlish/lite/reflect.py,sha256=pzOY2PPuHH0omdtglkN6DheXDrGopdL3PtTJnejyLFU,2189
484
484
  omlish/lite/reprs.py,sha256=Tiqf_ciD8FfS0ury7FcJ5G21yY342fW0vPacYlb8EO4,2014
@@ -733,9 +733,9 @@ omlish/sql/queries/multi.py,sha256=7x6x-4jnPzxA6ZasBjnjFuhHFpWt5rGCua3UvuTMIJ0,8
733
733
  omlish/sql/queries/names.py,sha256=ko5ADruhhma9xfm4T7-UEd2uXRgGchfUeiz-xgiZlFE,2207
734
734
  omlish/sql/queries/ops.py,sha256=pDZ_2Jo_Fa8DDbtYkc6-9eehkWsZPI-jh-KFlubcY6Y,134
735
735
  omlish/sql/queries/params.py,sha256=_4Cg2MWfcU0EGcVkyOfbyJ5MA4PDUexNlaGEiqmt8Ls,1268
736
- omlish/sql/queries/relations.py,sha256=_uOFcv_bfS0jfAexagxNMqMftmDWuWWWeRMzEQ3g_Oc,2479
736
+ omlish/sql/queries/relations.py,sha256=P0qBqNICyeig9sEZAYLZcTXcI1YFiBe6REm6jNhpHUI,2630
737
737
  omlish/sql/queries/rendering.py,sha256=3Ocw52DDDsUavEmb8xH-2Mhp-3pZCXsJVXFuVTOUBqk,7779
738
- omlish/sql/queries/selects.py,sha256=5CD4qmlv5hysQKmoZuF1bbikA-VcC9opN94Ea1QE3mU,1577
738
+ omlish/sql/queries/selects.py,sha256=XNisb2draHURYhbZsTFw7DJQaN1Zfo2Znm-Ty0lHNTo,1773
739
739
  omlish/sql/queries/std.py,sha256=FdJkXD7oiuj8mtVzvbsL1ZocEEAfaSdOsfTVB1YhtrE,699
740
740
  omlish/sql/queries/stmts.py,sha256=pBqwD7dRlqMu6uh6vR3xaWOEgbZCcFWbOQ9ryYd17T4,441
741
741
  omlish/sql/queries/unary.py,sha256=MEYBDZn_H0bexmUrJeONOv5-gIpYowUaXOsEHeQM4ks,1144
@@ -895,9 +895,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
895
895
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
896
896
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
897
897
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
898
- omlish-0.0.0.dev392.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
899
- omlish-0.0.0.dev392.dist-info/METADATA,sha256=TK9eckhnzTzWGHYKBnCjqN88cxzp2WejWEtJat98x_s,18825
900
- omlish-0.0.0.dev392.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
901
- omlish-0.0.0.dev392.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
902
- omlish-0.0.0.dev392.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
903
- omlish-0.0.0.dev392.dist-info/RECORD,,
898
+ omlish-0.0.0.dev393.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
899
+ omlish-0.0.0.dev393.dist-info/METADATA,sha256=siHQt0dS0bqBCCqnpqhdYepmt0xzBPGtMcJ3GNXPZAw,18825
900
+ omlish-0.0.0.dev393.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
901
+ omlish-0.0.0.dev393.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
902
+ omlish-0.0.0.dev393.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
903
+ omlish-0.0.0.dev393.dist-info/RECORD,,