omlish 0.0.0.dev432__py3-none-any.whl → 0.0.0.dev434__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 (46) hide show
  1. omlish/__about__.py +3 -3
  2. omlish/asyncs/all.py +0 -13
  3. omlish/inject/__init__.py +152 -126
  4. omlish/inject/binder.py +7 -4
  5. omlish/inject/impl/elements.py +6 -8
  6. omlish/inject/impl/injector.py +58 -32
  7. omlish/inject/impl/inspect.py +1 -0
  8. omlish/inject/impl/maysync.py +44 -0
  9. omlish/inject/impl/multis.py +5 -5
  10. omlish/inject/impl/privates.py +8 -8
  11. omlish/inject/impl/providers.py +24 -31
  12. omlish/inject/impl/providers2.py +43 -0
  13. omlish/inject/impl/scopes.py +19 -25
  14. omlish/inject/impl/sync.py +42 -0
  15. omlish/inject/injector.py +9 -11
  16. omlish/inject/inspect.py +1 -3
  17. omlish/inject/listeners.py +4 -4
  18. omlish/inject/managed.py +52 -20
  19. omlish/inject/maysync.py +27 -0
  20. omlish/inject/providers.py +6 -0
  21. omlish/inject/scopes.py +38 -10
  22. omlish/inject/sync.py +46 -0
  23. omlish/lang/__init__.py +23 -6
  24. omlish/lang/asyncs.py +18 -0
  25. omlish/lang/contextmanagers.py +23 -0
  26. omlish/lang/imports/capture.py +491 -0
  27. omlish/lang/imports/lazy.py +0 -25
  28. omlish/lang/imports/proxy.py +62 -0
  29. omlish/lang/imports/proxyinit.py +28 -518
  30. omlish/lang/resources.py +1 -1
  31. omlish/lite/asyncs.py +21 -0
  32. omlish/lite/maysync.py +21 -0
  33. omlish/logs/contexts.py +4 -3
  34. omlish/logs/std/records.py +29 -19
  35. omlish/logs/typed/bindings.py +84 -37
  36. omlish/logs/typed/types.py +16 -1
  37. omlish/marshal/__init__.py +1 -1
  38. omlish/typedvalues/__init__.py +1 -1
  39. {omlish-0.0.0.dev432.dist-info → omlish-0.0.0.dev434.dist-info}/METADATA +3 -6
  40. {omlish-0.0.0.dev432.dist-info → omlish-0.0.0.dev434.dist-info}/RECORD +44 -39
  41. omlish/asyncs/bridge.py +0 -359
  42. omlish/asyncs/utils.py +0 -18
  43. {omlish-0.0.0.dev432.dist-info → omlish-0.0.0.dev434.dist-info}/WHEEL +0 -0
  44. {omlish-0.0.0.dev432.dist-info → omlish-0.0.0.dev434.dist-info}/entry_points.txt +0 -0
  45. {omlish-0.0.0.dev432.dist-info → omlish-0.0.0.dev434.dist-info}/licenses/LICENSE +0 -0
  46. {omlish-0.0.0.dev432.dist-info → omlish-0.0.0.dev434.dist-info}/top_level.txt +0 -0
@@ -236,22 +236,6 @@ class LoggingContextInfoRecordAdapters:
236
236
  args=rec.args,
237
237
  )
238
238
 
239
- # FIXME: handled specially - all unknown attrs on LogRecord
240
- # class Extra(Adapter[LoggingContextInfos.Extra]):
241
- # _record_attrs: ta.ClassVar[ta.Mapping[str, ta.Union[ta.Any, ta.Tuple[ta.Any, ta.Any]]]] = dict()
242
- #
243
- # def info_to_record(self, info: ta.Optional[LoggingContextInfos.Extra]) -> ta.Mapping[str, ta.Any]:
244
- # # FIXME:
245
- # # if extra is not None:
246
- # # for key in extra:
247
- # # if (key in ["message", "asctime"]) or (key in rv.__dict__):
248
- # # raise KeyError("Attempt to overwrite %r in LogRecord" % key)
249
- # # rv.__dict__[key] = extra[key]
250
- # return dict()
251
- #
252
- # def record_to_info(self, rec: logging.LogRecord) -> ta.Optional[LoggingContextInfos.Extra]:
253
- # return None
254
-
255
239
  class Time(RequiredAdapter[LoggingContextInfos.Time]):
256
240
  info_cls: ta.ClassVar[ta.Type[LoggingContextInfos.Time]] = LoggingContextInfos.Time
257
241
 
@@ -632,13 +616,20 @@ class LoggingContextLogRecord(logging.LogRecord):
632
616
  # - exc_info: LoggingExcInfoTuple | None
633
617
  # - func: str | None = None -> funcName
634
618
  # - sinfo: str | None = None -> stack_info
619
+ #
635
620
 
636
621
  def __init__(self, *, _logging_context: LoggingContext) -> None: # noqa
637
- self._logging_context = _logging_context
622
+ self.__dict__.update(_logging_context=_logging_context)
638
623
 
639
624
  for ad in _LOGGING_CONTEXT_INFO_RECORD_ADAPTERS_:
640
625
  self.__dict__.update(ad.context_to_record(_logging_context))
641
626
 
627
+ _logging_context: LoggingContext
628
+
629
+ # FIXME: track extra
630
+ # def __setattr__(self, key, value):
631
+ # super().__setattr__(key, value)
632
+
642
633
 
643
634
  ##
644
635
 
@@ -651,10 +642,29 @@ class LogRecordLoggingContext(LoggingContext):
651
642
 
652
643
  self._rec = rec
653
644
 
654
- self._infos: ta.Dict[ta.Type[LoggingContextInfo], LoggingContextInfo] = {
655
- type(info): info
645
+ infos: ta.List[LoggingContextInfo] = [
646
+ info
656
647
  for ad in _LOGGING_CONTEXT_INFO_RECORD_ADAPTERS_
657
648
  if (info := ad.record_to_info(rec)) is not None
649
+ ]
650
+
651
+ # FIXME:
652
+ # if extra is not None:
653
+ # for key in extra:
654
+ # if (key in ["message", "asctime"]) or (key in rv.__dict__):
655
+ # raise KeyError("Attempt to overwrite %r in LogRecord" % key)
656
+ # rv.__dict__[key] = extra[key]
657
+
658
+ if (extra := {
659
+ a: v
660
+ for a, v in rec.__dict__.items()
661
+ if a not in _KNOWN_STD_LOGGING_RECORD_ATTR_SET
662
+ }):
663
+ infos.append(LoggingContextInfos.Extra(extra))
664
+
665
+ self._infos: ta.Dict[ta.Type[LoggingContextInfo], LoggingContextInfo] = {
666
+ type(info): info
667
+ for info in infos
658
668
  }
659
669
 
660
670
  def get_info(self, ty: ta.Type[LoggingContextInfoT]) -> ta.Optional[LoggingContextInfoT]:
@@ -16,6 +16,7 @@ from ...lite.abstract import Abstract
16
16
  from .types import TYPED_LOGGER_VALUE_OR_PROVIDER_OR_ABSENT_TYPES
17
17
  from .types import TYPED_LOGGER_VALUE_OR_PROVIDER_TYPES
18
18
  from .types import DefaultTypedLoggerValue
19
+ from .types import MultiTypedLoggerValue
19
20
  from .types import TypedLoggerConstFieldValue
20
21
  from .types import TypedLoggerField
21
22
  from .types import TypedLoggerFieldValue
@@ -92,6 +93,9 @@ class TypedLoggerBindings(Abstract):
92
93
  accept_value: ta.Callable[[ta.Type[TypedLoggerValue], TypedLoggerValueOrProviderOrAbsent], None]
93
94
  accept_values: ta.Callable[[ta.Iterable[ta.Tuple[ta.Type[TypedLoggerValue], TypedLoggerValueOrProviderOrAbsent]]], None] # noqa
94
95
 
96
+ accept_multi_value: ta.Callable[[ta.Type[MultiTypedLoggerValue], MultiTypedLoggerValue], None] # noqa
97
+ accept_multi_values: ta.Callable[[ta.Iterable[ta.Tuple[ta.Type[MultiTypedLoggerValue], MultiTypedLoggerValue]]], None] # noqa
98
+
95
99
  accept_const_values: ta.Callable[[ta.Iterable[ta.Tuple[ta.Type[TypedLoggerValue], TypedLoggerValueOrAbsent]]], None] # noqa
96
100
 
97
101
  accept_value_wrapping: ta.Callable[[ta.Union['TypedLoggerValueWrapper', 'FullTypedLoggerBindings._ValueWrappingState']], None] # noqa
@@ -110,19 +114,11 @@ class FullTypedLoggerBindings(TypedLoggerBindings):
110
114
  self,
111
115
  *items: TypedLoggerBindingItem,
112
116
  override: bool = False,
117
+ override_multis: bool = False,
113
118
  ) -> None:
114
119
  kd: ta.Dict[str, TypedLoggerFieldValue] = {}
115
120
  dup_kd: ta.Dict[str, ta.List[TypedLoggerFieldValue]] = {}
116
121
 
117
- vd: ta.Dict[ta.Type[TypedLoggerValue], TypedLoggerValueOrProviderOrAbsent] = {}
118
- dup_vd: ta.Dict[ta.Type[TypedLoggerValue], ta.List[TypedLoggerValueOrProviderOrAbsent]] = {}
119
-
120
- cvd: ta.Dict[ta.Type[TypedLoggerValue], TypedLoggerValueOrAbsent] = {}
121
-
122
- vwl: ta.List[ta.Union[TypedLoggerValueWrapper, FullTypedLoggerBindings._ValueWrappingState]] = []
123
-
124
- vst: TypedLoggerBindings._Visitor
125
-
126
122
  if not override:
127
123
  def add_kd(kd_k: str, kd_v: TypedLoggerFieldValue) -> None: # noqa
128
124
  if kd_k in kd:
@@ -130,42 +126,71 @@ class FullTypedLoggerBindings(TypedLoggerBindings):
130
126
  else:
131
127
  kd[kd_k] = kd_v
132
128
 
129
+ def add_kds(it: 'ta.Iterable[ta.Tuple[str, TypedLoggerFieldValue]]') -> None: # noqa
130
+ collections.deque(itertools.starmap(add_kd, it), maxlen=0)
131
+
132
+ else:
133
+ add_kd = kd.__setitem__ # type: ignore[assignment]
134
+ add_kds = kd.update # type: ignore[assignment]
135
+
136
+ #
137
+
138
+ vd: ta.Dict[ta.Type[TypedLoggerValue], TypedLoggerValueOrProviderOrAbsent] = {}
139
+ dup_vd: ta.Dict[ta.Type[TypedLoggerValue], ta.List[TypedLoggerValueOrProviderOrAbsent]] = {}
140
+
141
+ if not override:
133
142
  def add_vd(vd_k: 'ta.Type[TypedLoggerValue]', vd_v: TypedLoggerValueOrProviderOrAbsent) -> None: # noqa
134
143
  if vd_k in vd:
135
144
  dup_vd.setdefault(vd_k, []).append(vd_v)
136
145
  else:
137
146
  vd[vd_k] = vd_v
138
147
 
139
- def add_kds(it: 'ta.Iterable[ta.Tuple[str, TypedLoggerFieldValue]]') -> None: # noqa
140
- collections.deque(itertools.starmap(add_kd, it), maxlen=0)
141
-
142
148
  def add_vds(it: 'ta.Iterable[ta.Tuple[ta.Type[TypedLoggerValue], TypedLoggerValueOrProviderOrAbsent]]') -> None: # noqa
143
149
  collections.deque(itertools.starmap(add_vd, it), maxlen=0)
144
150
 
145
- vst = TypedLoggerBindings._Visitor( # noqa
146
- add_kd,
147
- add_kds,
151
+ else:
152
+ add_vd = vd.__setitem__ # type: ignore[assignment]
153
+ add_vds = vd.update # type: ignore[assignment]
148
154
 
149
- add_vd,
150
- add_vds,
155
+ #
151
156
 
152
- cvd.update,
157
+ mvd: ta.Dict[ta.Type[MultiTypedLoggerValue], ta.List[MultiTypedLoggerValue]] = {}
153
158
 
154
- vwl.append,
155
- )
159
+ if override_multis:
160
+ def add_mvd(mvd_k: 'ta.Type[MultiTypedLoggerValue]', mvd_v: MultiTypedLoggerValue) -> None: # noqa
161
+ try:
162
+ mvd_l = mvd[mvd_k]
163
+ except KeyError:
164
+ mvd_l = mvd[mvd_k] = []
165
+ mvd_l.append(mvd_v)
166
+
167
+ def add_mvds(it: 'ta.Iterable[ta.Tuple[ta.Type[MultiTypedLoggerValue], MultiTypedLoggerValue]]') -> None:
168
+ collections.deque(itertools.starmap(add_mvd, it), maxlen=0)
156
169
 
157
170
  else:
158
- vst = TypedLoggerBindings._Visitor( # noqa
159
- kd.__setitem__,
160
- kd.update,
171
+ add_mvd = mvd.__setitem__ # type: ignore[assignment]
172
+ add_mvds = mvd.update # type: ignore[assignment]
173
+
174
+ #
161
175
 
162
- vd.__setitem__,
163
- vd.update,
176
+ cvd: ta.Dict[ta.Type[TypedLoggerValue], TypedLoggerValueOrAbsent] = {}
164
177
 
165
- cvd.update,
178
+ vwl: ta.List[ta.Union[TypedLoggerValueWrapper, FullTypedLoggerBindings._ValueWrappingState]] = []
166
179
 
167
- vwl.append,
168
- )
180
+ vst = TypedLoggerBindings._Visitor( # noqa
181
+ add_kd,
182
+ add_kds,
183
+
184
+ add_vd,
185
+ add_vds,
186
+
187
+ add_mvd,
188
+ add_mvds,
189
+
190
+ cvd.update,
191
+
192
+ vwl.append,
193
+ )
169
194
 
170
195
  for o in items:
171
196
  o._typed_logger_visit_bindings(vst) # noqa
@@ -288,18 +313,22 @@ class ChainTypedLoggerBindings(TypedLoggerBindings):
288
313
  kd: ta.Dict[str, TypedLoggerFieldValue] = {}
289
314
  dup_kd: ta.Dict[str, ta.List[TypedLoggerFieldValue]] = {}
290
315
 
291
- vd: ta.Dict[ta.Type[TypedLoggerValue], TypedLoggerValueOrProviderOrAbsent] = {}
292
- dup_vd: ta.Dict[ta.Type[TypedLoggerValue], ta.List[TypedLoggerValueOrProviderOrAbsent]] = {}
293
-
294
- pcv = dict(parent.const_value_map)
295
- cvd: ta.Dict[ta.Type[TypedLoggerValue], TypedLoggerValueOrAbsent] = {}
296
-
297
316
  def add_kd(kd_k: str, kd_v: TypedLoggerFieldValue) -> None: # noqa
298
317
  if kd_k in kd:
299
318
  dup_kd.setdefault(kd_k, []).append(kd_v)
300
319
  else:
301
320
  kd[kd_k] = kd_v
302
321
 
322
+ def add_kds(it: 'ta.Iterable[ta.Tuple[str, TypedLoggerFieldValue]]') -> None: # noqa
323
+ collections.deque(itertools.starmap(add_kd, it), maxlen=0)
324
+
325
+ #
326
+
327
+ vd: ta.Dict[ta.Type[TypedLoggerValue], TypedLoggerValueOrProviderOrAbsent] = {}
328
+ dup_vd: ta.Dict[ta.Type[TypedLoggerValue], ta.List[TypedLoggerValueOrProviderOrAbsent]] = {}
329
+
330
+ pcv = dict(parent.const_value_map)
331
+
303
332
  def add_vd(vd_k: 'ta.Type[TypedLoggerValue]', vd_v: TypedLoggerValueOrProviderOrAbsent) -> None: # noqa
304
333
  if vd_k in vd:
305
334
  dup_vd.setdefault(vd_k, []).append(vd_v)
@@ -307,12 +336,27 @@ class ChainTypedLoggerBindings(TypedLoggerBindings):
307
336
  vd[vd_k] = vd_v
308
337
  pcv.pop(vd_k, None)
309
338
 
310
- def add_kds(it: 'ta.Iterable[ta.Tuple[str, TypedLoggerFieldValue]]') -> None: # noqa
311
- collections.deque(itertools.starmap(add_kd, it), maxlen=0)
312
-
313
339
  def add_vds(it: 'ta.Iterable[ta.Tuple[ta.Type[TypedLoggerValue], TypedLoggerValueOrProviderOrAbsent]]') -> None: # noqa
314
340
  collections.deque(itertools.starmap(add_vd, it), maxlen=0)
315
341
 
342
+ #
343
+
344
+ mvd: ta.Dict[ta.Type[MultiTypedLoggerValue], ta.List[MultiTypedLoggerValue]] = {}
345
+
346
+ def add_mvd(mvd_k: 'ta.Type[MultiTypedLoggerValue]', mvd_v: MultiTypedLoggerValue) -> None: # noqa
347
+ try:
348
+ mvd_l = mvd[mvd_k]
349
+ except KeyError:
350
+ mvd_l = mvd[mvd_k] = []
351
+ mvd_l.append(mvd_v)
352
+
353
+ def add_mvds(it: 'ta.Iterable[ta.Tuple[ta.Type[MultiTypedLoggerValue], MultiTypedLoggerValue]]') -> None:
354
+ collections.deque(itertools.starmap(add_mvd, it), maxlen=0)
355
+
356
+ #
357
+
358
+ cvd: ta.Dict[ta.Type[TypedLoggerValue], TypedLoggerValueOrAbsent] = {}
359
+
316
360
  def bad_type(*args, **kwargs): # noqa
317
361
  raise ChainTypedLoggerBindingsUnhandledItemError
318
362
 
@@ -323,6 +367,9 @@ class ChainTypedLoggerBindings(TypedLoggerBindings):
323
367
  add_vd,
324
368
  add_vds,
325
369
 
370
+ add_mvd,
371
+ add_mvds,
372
+
326
373
  cvd.update,
327
374
 
328
375
  bad_type,
@@ -181,7 +181,6 @@ class TypedLoggerValue(Abstract, ta.Generic[T]):
181
181
  def _typed_logger_unwrap_field_value(self, ctx: 'TypedLoggerContext') -> UnwrappedTypedLoggerFieldValue: # noqa
182
182
  return self._v
183
183
 
184
- @ta.final
185
184
  def _typed_logger_visit_bindings(self, vst: 'TypedLoggerBindings._Visitor') -> None: # noqa
186
185
  vst.accept_values(((type(self), self),))
187
186
  vst.accept_const_values(((type(self), self),))
@@ -233,6 +232,22 @@ class DefaultTypedLoggerValue(TypedLoggerValue[T], Abstract):
233
232
  return (cls.default_provider().provide_value(ctx),)
234
233
 
235
234
 
235
+ class MultiTypedLoggerValue(TypedLoggerValue[T], Abstract):
236
+ """
237
+ Note: There is no DefaultMultiTypedLoggerValue.
238
+ """
239
+
240
+ @classmethod
241
+ @abc.abstractmethod
242
+ def merge_values(cls, *values: T) -> T:
243
+ raise NotImplementedError
244
+
245
+ #
246
+
247
+ def _typed_logger_visit_bindings(self, vst: 'TypedLoggerBindings._Visitor') -> None: # noqa
248
+ vst.accept_multi_values(((type(self), self),))
249
+
250
+
236
251
  ##
237
252
 
238
253
 
@@ -32,7 +32,7 @@ _dc.init_package(
32
32
  from .. import lang as _lang # noqa
33
33
 
34
34
 
35
- with _lang.auto_proxy_init(globals()) as _api_cap:
35
+ with _lang.auto_proxy_init(globals()):
36
36
  ##
37
37
 
38
38
  from .base.configs import ( # noqa
@@ -1,7 +1,7 @@
1
1
  from .. import lang as _lang
2
2
 
3
3
 
4
- with _lang.auto_proxy_init(globals()) as _api_cap:
4
+ with _lang.auto_proxy_init(globals()):
5
5
  ##
6
6
 
7
7
  from .accessor import ( # noqa
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev432
3
+ Version: 0.0.0.dev434
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -18,7 +18,7 @@ Provides-Extra: all
18
18
  Requires-Dist: anyio~=4.10; extra == "all"
19
19
  Requires-Dist: sniffio~=1.3; extra == "all"
20
20
  Requires-Dist: greenlet~=3.2; extra == "all"
21
- Requires-Dist: trio~=0.30; extra == "all"
21
+ Requires-Dist: trio~=0.31; extra == "all"
22
22
  Requires-Dist: trio-asyncio~=0.15; extra == "all"
23
23
  Requires-Dist: lz4~=4.4; extra == "all"
24
24
  Requires-Dist: python-snappy~=0.7; extra == "all"
@@ -58,7 +58,7 @@ Provides-Extra: async
58
58
  Requires-Dist: anyio~=4.10; extra == "async"
59
59
  Requires-Dist: sniffio~=1.3; extra == "async"
60
60
  Requires-Dist: greenlet~=3.2; extra == "async"
61
- Requires-Dist: trio~=0.30; extra == "async"
61
+ Requires-Dist: trio~=0.31; extra == "async"
62
62
  Requires-Dist: trio-asyncio~=0.15; extra == "async"
63
63
  Provides-Extra: compress
64
64
  Requires-Dist: lz4~=4.4; extra == "compress"
@@ -294,9 +294,6 @@ examples are:
294
294
  - **pytest** - What is used for all standard testing - as lite code has no dependencies of any kind its testing uses
295
295
  stdlib's [unittest](https://docs.python.org/3/library/unittest.html).
296
296
  - **wrapt** - For (optionally-enabled) injector circular proxies.
297
- - **greenlet** - For some gnarly stuff like the
298
- [sync<->async bridge](https://github.com/wrmsr/omlish/blob/master/omlish/asyncs/bridge.py) and the
299
- [io trampoline](https://github.com/wrmsr/omlish/blob/master/omextra/io/trampoline.py).
300
297
  - **sqlalchemy** - Parts of the codebase use SQLAlchemy for db stuff, but it is being migrated away from in favor of the
301
298
  internal api. It will however likely still remain as an optional dep for the api adapter.
302
299
 
@@ -1,5 +1,5 @@
1
1
  omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
2
- omlish/__about__.py,sha256=3-_QYxv_HRPE-514v1MBZ6PctnESC50f34-uw3VRp7U,3575
2
+ omlish/__about__.py,sha256=m7yiLBUWx0CVlaZfQTSqMs9tncfitfDQ8RfhF4ieLow,3575
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
4
  omlish/c3.py,sha256=ZNIMl1kwg3qdei4DiUrJPQe5M81S1e76N-GuNSwLBAE,8683
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
@@ -19,13 +19,11 @@ omlish/argparse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
19
19
  omlish/argparse/all.py,sha256=NeeMM5MIebY7XDAHaCxUzeesEoUYwsf5i9PrBUcO1cI,1057
20
20
  omlish/argparse/cli.py,sha256=60cfq_WFLwL3YsIQxGAQ7XDi-LzNjH33RavcKdRnhUU,8737
21
21
  omlish/asyncs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
22
- omlish/asyncs/all.py,sha256=cS7dTWR8l3vF0oWYYiV9JXp0YGxOecVyCuJ2fydAPU0,526
23
- omlish/asyncs/bridge.py,sha256=BPwEeiv3iG0uMk23PIWFkdGLyiBq_x3qnzheV7ysOqY,10129
22
+ omlish/asyncs/all.py,sha256=zE9zBNepDSczQ-QhnzwFz59IZIex3HuUqfKIgwbJLgY,329
24
23
  omlish/asyncs/buffers.py,sha256=_Ds4Aa1bUWQwQTGmcYsKLjcJ_d5HgbSkPTFrG9y-eMQ,1424
25
24
  omlish/asyncs/flavors.py,sha256=1mNxGNRVmjUHzA13K5ht8vdJv4CLEmzYTQ6BZXr1520,4866
26
25
  omlish/asyncs/trio.py,sha256=fmZ5b_lKdVV8NQ3euCUutWgnkqTFzSnOjvJSA_jvmrE,367
27
26
  omlish/asyncs/trio_asyncio.py,sha256=b6H5H32pB79Uz5xvWEmuhXTJgTAeKFHBHzocv_Rpt5A,1332
28
- omlish/asyncs/utils.py,sha256=-oaa6nheDxMOxVDTfRylWZGlyOja3UVJEV2IibJXQv4,369
29
27
  omlish/asyncs/anyio/__init__.py,sha256=AkwRD3XFWmEzBeHV-eAzwpA4F04bl7xyyapigrxMR8g,1747
30
28
  omlish/asyncs/anyio/backends.py,sha256=jJIymWoiedaEJJm82gvKiJ41EWLQZ-bcyNHpbDpKKi4,1584
31
29
  omlish/asyncs/anyio/futures.py,sha256=Nm1gLerZEnHk-rlsmr0UfK168IWIK6zA8EebZFtoY_E,2052
@@ -350,38 +348,43 @@ omlish/http/coro/server/fdio.py,sha256=qZE4g5y4XESsTObSKyVggI-yzig57gSGJb4Z0rcHv
350
348
  omlish/http/coro/server/server.py,sha256=lkpcx4cb0mwDFYpP3MvW6mX0_1fKXUI8snm_bycyUwo,18681
351
349
  omlish/http/coro/server/simple.py,sha256=j1RZ3niKrgGM2qFnjdYWn_eniZzay5j49Ca4L3u8vO4,3296
352
350
  omlish/http/coro/server/sockets.py,sha256=24gU6wpIZuzYWKQD8UsHyYfTZlbcUFvkqXq5KVgWpQo,2261
353
- omlish/inject/__init__.py,sha256=dRTx6sIuWzUD7enaWRCOoehTz4g26nRblb8N-gpiwUQ,2074
354
- omlish/inject/binder.py,sha256=woOK7I5fk4K4kDF684Ia003jE_lviGQXacNKAmXqx5M,5114
351
+ omlish/inject/__init__.py,sha256=1s_2338tLi2VWKy8HijBSkAlkanVY1uZ8iZec8SOEws,2929
352
+ omlish/inject/binder.py,sha256=_TNPGcqtaVqCLoxMx2LBVSvZWmAUs4JcxAqnCpy7PG0,5253
355
353
  omlish/inject/bindings.py,sha256=PlvOnUREjvc6F8nOJdzl1k9SAf80icRB4qWFqDop87M,536
356
354
  omlish/inject/eagers.py,sha256=JBY7PcjXt-Rg9scQ1ol9xpcoTLXkXC_Ie9uwTWdzUkA,340
357
355
  omlish/inject/elements.py,sha256=y4luEO_-eOlVnLcUDiNGSyMXee4pusl46ZGr0JFhbcY,1405
358
356
  omlish/inject/errors.py,sha256=_wkN2tF55gQzmMOMKJC_9jYHBZzaBiCDcyqI9Sf2UZs,626
359
- omlish/inject/injector.py,sha256=fyvaRoJXo_oibx1_IiGkncP9oXnZSKtDm7-ULNKRXHE,1071
360
- omlish/inject/inspect.py,sha256=Uq4KMloGWF_YS2mgZbrx-JXhZQnYHHKJSr68i9yoBVc,597
357
+ omlish/inject/injector.py,sha256=j78j4ArahsY_C3vgOIhzv29pDjp0o97yvmxHIr7jk2E,1125
358
+ omlish/inject/inspect.py,sha256=FWGEtxiFV_Sqqza9xnbYm4JgV2LE4D0s5iszV9Nd5_M,547
361
359
  omlish/inject/keys.py,sha256=7jnI2cw7cvLlzZAfe5SC50O3oPOpOB6iGZGTigyfQvs,682
362
- omlish/inject/listeners.py,sha256=Ffaun2fVWAgAwKgLdgziJynG_jhAWaaPEsy-2I2Cmpw,599
360
+ omlish/inject/listeners.py,sha256=bav7-uzfpajFAmH_snM0PW2oCfMavmhbE6R4-gjOmJ8,620
363
361
  omlish/inject/lite.py,sha256=AFOCj_SznDCPjkiVSKdFXL2hH1q2o4kaDnzkxRWDpsI,2615
364
- omlish/inject/managed.py,sha256=-9aBm1vRPOjNz4kgOmpt8S2T55s727t9RiggFBH8maU,2096
362
+ omlish/inject/managed.py,sha256=DKU4f_-20TXM51zrGU2XP-IX6Pzg8H9JfVJTIZH_-T8,2930
363
+ omlish/inject/maysync.py,sha256=xsVl2p-urkflKTFVQW86c3BJ6bnNeJrWC-u-UcSF1gU,441
365
364
  omlish/inject/multis.py,sha256=Dn63jE8P5ahSKc1IDBdzzx6ByBCgVOth5t4frG9m4UA,3336
366
365
  omlish/inject/origins.py,sha256=-qXa18rIIkNwBdTrvASRDjgPYnoY6n6OPC222jJDrXg,551
367
366
  omlish/inject/overrides.py,sha256=ybEcq9cDf6kvqu5mqnwi6Evj0MFjKNeE3r0oUlGw5E4,546
368
367
  omlish/inject/privates.py,sha256=CyE-hvQ-F_uyCzcwfdiYVtfm9IF1WZvMDOYilFyZmWk,658
369
- omlish/inject/providers.py,sha256=GDjSEN6iLsc-Tdu_OCPvFHWu4yP0Vn0pAyH_xjw1DPg,783
370
- omlish/inject/scopes.py,sha256=3N7rnX7LyFabDfiN-qC9M-l9EPbPQuf8dBvdVNkaSr8,1891
368
+ omlish/inject/providers.py,sha256=Usvi0YgjS5jrAqQFhzeU2artxRSTM4zIoz72lac1PEA,931
369
+ omlish/inject/scopes.py,sha256=p1uOUMtlzhIWH0HC08HCIxeWYIHb2i9O-Rhgzp32Csw,2576
370
+ omlish/inject/sync.py,sha256=c60h6CSzk4XDOy4peZ9BuJypsp-OTFh_ZnF50LmxMTg,1007
371
371
  omlish/inject/tags.py,sha256=gRDLa-WdZc9DC7KwwmoIPAi8g_qdGpRWuMT7HCd7CL0,433
372
372
  omlish/inject/types.py,sha256=Z-ZEdgtCpHBNrbxxKaMVvfeD7hYXdL4rC7A9_VGxZ6g,256
373
373
  omlish/inject/utils.py,sha256=Gc2qq45KgkyqDt03WSvOEZBCiuqQ6ESwplx5ZRBcY5M,413
374
374
  omlish/inject/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
375
375
  omlish/inject/impl/bindings.py,sha256=xSvUcoDz8NH-aNHPwBPEZsFg73K2WcF_A63npVbGt_k,420
376
- omlish/inject/impl/elements.py,sha256=PM_055moROskSTQqmohEa6I0tt1OQ-VRNArXCMG6vyk,5947
377
- omlish/inject/impl/injector.py,sha256=agM5NKugC9du_vBgawL9H_02A76GPQFjG-3cQVjz25s,7600
378
- omlish/inject/impl/inspect.py,sha256=reXkNsjyvJXva5379tHTWklVK0vzqGLP0BgI_4VVPgQ,3116
379
- omlish/inject/impl/multis.py,sha256=Y287xntr1wBNYpwQBc0f_Ca7UkXjkscKhgGHZK_zdbg,2053
376
+ omlish/inject/impl/elements.py,sha256=5wb_JCyfEKrJ1Y6TIZVS-gwgmLTZIUXZ_TV735RKcEM,5901
377
+ omlish/inject/impl/injector.py,sha256=0e8Il9ObzWMDBJDLQk9RRBkK83mk-nIRlKU_LtmQfLI,8266
378
+ omlish/inject/impl/inspect.py,sha256=HLhz5DfP9dwvbIYnwqsfR9ADjCoWs9q4Gh7J4BpImf4,3135
379
+ omlish/inject/impl/maysync.py,sha256=7GWjrvJStOx85BCvk8IJAmmkoGkChFAAi2h7j2pe6Qs,1207
380
+ omlish/inject/impl/multis.py,sha256=fa31UdkBYdAulfYdrkU1klDZicuQRyaBDbG28kaw8SI,2092
380
381
  omlish/inject/impl/origins.py,sha256=dgGdkoMN6I4DZrWjlpZYijeFsrF6Up1WPq_QSAgTtuQ,1676
381
- omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCFQ,2613
382
- omlish/inject/impl/providers.py,sha256=G3qUYlk05-xzvF6BiEGrtFNfzLYMC9lebOg_Wl1oFL4,2273
382
+ omlish/inject/impl/privates.py,sha256=uxMAl0MOPu-MeLd-q1DySu7J5FcdRVL1B0XgC4dnB6I,2667
383
+ omlish/inject/impl/providers.py,sha256=qqPUF9qZZ-CGTTc7ZPskjexM2aK8xdY0gLPMshB5VKw,2127
384
+ omlish/inject/impl/providers2.py,sha256=NOIbX_sTAL8uXf-lMoOiFTFZQMe6ywLU7nIghgF_ISw,1326
383
385
  omlish/inject/impl/proxy.py,sha256=S1qNn-5pbsAj9hhasQZ9nnFSCX8SuAYCcBOZ6BtKxlk,1641
384
- omlish/inject/impl/scopes.py,sha256=sL250qM4-hCwwO28GdynM02OMb09FMmIvo_ifYhNhj0,5909
386
+ omlish/inject/impl/scopes.py,sha256=5AMVzO9HgJT7yNwBCG2us9pUxQZpySsalb0qI2ZMeJ4,5876
387
+ omlish/inject/impl/sync.py,sha256=v0FrcMfEFIT358AmAuERvzJ3o19r6DLZj6_0hjuW5Dk,1090
385
388
  omlish/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
386
389
  omlish/io/abc.py,sha256=M40QB2udYpCEqmlxCcHv6FlJYJY6ymmJQBlaklYv0U8,1256
387
390
  omlish/io/buffers.py,sha256=WRuojN-EICJ9eIhy6U2Tw2-oTBIwHTBhN86wQiD2s88,7293
@@ -415,14 +418,14 @@ omlish/iterators/iterators.py,sha256=RxW35yQ5ed8vBQ22IqpDXFx-i5JiLQdp7-pkMZXhJJ8
415
418
  omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,472
416
419
  omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
417
420
  omlish/iterators/unique.py,sha256=BSE-eanva8byFCJi09Nt2zzTsVr8LnTqY1PIInGYRs0,1396
418
- omlish/lang/__init__.py,sha256=Ty5DkVFyGztlpYVEcEP1yTvLbflRFTo6IThN8dPMnbI,10096
419
- omlish/lang/asyncs.py,sha256=rfpLE2ZacVKGYB9DSFuMBurQzkPRjB1qljcS3sIuSsw,1767
421
+ omlish/lang/__init__.py,sha256=HqVWUkrUArOsjGoWrL-Ck6Zz2U6kKpj2DzbpHed-k1o,10431
422
+ omlish/lang/asyncs.py,sha256=LV_4I3-WbLY8-SUXYJvKlzfL-Hd5ASFOlyPi3uMJYJk,2266
420
423
  omlish/lang/attrstorage.py,sha256=UUnoENCMQF3twBfxBcIKa5mpXsAxWnNYDayhU8xgmpU,5224
421
424
  omlish/lang/casing.py,sha256=3_c7cxQOc4z_YezaU2B4NCTAsPh_kDL4wUTK5kZU6kg,4675
422
425
  omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
423
426
  omlish/lang/collections.py,sha256=kVMp1JJ6ycvKzuiOmf2ZF5Eg2mm3vJGPjkUcV_IACMk,2528
424
427
  omlish/lang/comparison.py,sha256=MOwEG0Yny-jBPHO9kQto9FSRyeNpQW24UABsghkrHxY,1356
425
- omlish/lang/contextmanagers.py,sha256=daUaNgoFHSMaz2E9FVqgPLQOLrGf9BjMHtanVnyWvDI,9036
428
+ omlish/lang/contextmanagers.py,sha256=jkQ9YHhQySYHPH0BrWxBrNzMuG7IpSWcPvcdfMIBE4A,9578
426
429
  omlish/lang/datetimes.py,sha256=01tg21QOx-PWDlm-CSFTalym3vpqF0EKzeinmtcVNoU,379
427
430
  omlish/lang/descriptors.py,sha256=sVJ1Pr4ihp26Tu9UCvDSyfSf-DhBnFGnbpYIFF32c7g,6877
428
431
  omlish/lang/enums.py,sha256=F9tflHfaAoV2MpyuhZzpfX9-H55M3zNa9hCszsngEo8,111
@@ -439,7 +442,7 @@ omlish/lang/overrides.py,sha256=IBzK6ljfLX6TLgIyKTSjhqTLcuKRkQNVtEOnBLS4nuA,2095
439
442
  omlish/lang/params.py,sha256=sfbNoGrKCsAtubFufj_uh_WKshIgA8fqJ4PmLH1PH00,6639
440
443
  omlish/lang/recursion.py,sha256=1VfSqzKO-8Is3t9LKw0W4jwPfE0aBS70EUlbUxAx4eE,1900
441
444
  omlish/lang/resolving.py,sha256=nMosn-rcYjI8t6b35oICDyPw6t6-HvWj5jMdkfn1jfA,1612
442
- omlish/lang/resources.py,sha256=QtuybNgdw5e2QL3jtKi-5ENH98JemsMRi21A40tYrzA,2844
445
+ omlish/lang/resources.py,sha256=awfh33Uxkd9Ho-5Z3d9CPWQE3gjktV0XWM6XbdG0ejA,2845
443
446
  omlish/lang/strings.py,sha256=TY-v0iGu6BxEKb99YS-VmIJqc-sTAqMv7mCDJQALMnI,4550
444
447
  omlish/lang/sys.py,sha256=KPe1UOXk1VxlOYt_aLmhN0KqsA4wnP-4nm4WEwO49pw,411
445
448
  omlish/lang/typing.py,sha256=ZN4t8oGSSknf_T1HbfqVQ7Y9OOZ1RkikYihNxdBlTFQ,3733
@@ -455,9 +458,11 @@ omlish/lang/classes/restrict.py,sha256=CUyvLpMYiQwTjpzo5sdG_lQxdeEIq2z2xSVNrsI9K
455
458
  omlish/lang/classes/simple.py,sha256=3AJSs-plVg2flq4SC6I39LxP0nBaB241puv3D5YCP5I,2973
456
459
  omlish/lang/classes/virtual.py,sha256=J4y-uiv1RaP2rfFeptXqQ1a4MRek0TMlAFFraO_lzhs,3397
457
460
  omlish/lang/imports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
461
+ omlish/lang/imports/capture.py,sha256=hy9hgUmY1e9ElS6NfMuFdm-uY4hdnzQ7uBvuUVW4i-Y,15078
458
462
  omlish/lang/imports/conditional.py,sha256=R-E47QD95mMonPImWlrde3rnJrFKCCkYz71c94W05sc,1006
459
- omlish/lang/imports/lazy.py,sha256=Fhtb5tSAttff6G2pZdF8bh__GZlqJWHaMKtA8KubuX4,1479
460
- omlish/lang/imports/proxyinit.py,sha256=VrCnc4XNfwiJU18GNc3tFGxHSx5QxgyAfqyuJiCH66Y,19721
463
+ omlish/lang/imports/lazy.py,sha256=Eefs9hkj5surMdwgxX_Q3BOqPcox10v0sKT5rKIQknc,808
464
+ omlish/lang/imports/proxy.py,sha256=6c4L-njdAOsGrhi-gdv_R3nHBEiPS7BWHaBU7-YOBfk,1553
465
+ omlish/lang/imports/proxyinit.py,sha256=W7_FxDxe4aAQLUxNF1U6-2JROwK75HgRGEGidDKB-t0,4400
461
466
  omlish/lang/imports/resolving.py,sha256=DeRarn35Fryg5JhVhy8wbiC9lvr58AnllI9B_reswUE,2085
462
467
  omlish/lang/imports/traversal.py,sha256=pbFQIa880NGjSfcLsno2vE_G41_CLwDHb-7gWg2J3BI,2855
463
468
  omlish/lifecycles/__init__.py,sha256=zOuvV4pErPwxcKUSgshmME2Duw9GrjwckpNmW3FPKng,810
@@ -471,7 +476,7 @@ omlish/lifecycles/transitions.py,sha256=3IFdWGtAeoy3XRlIyW7yCKV4e4Iof9ytkqklGMRF
471
476
  omlish/lite/__init__.py,sha256=cyZEpGob7XjU8DohyNxVe5CQRk4CQ5vrHL42OdhQb8w,148
472
477
  omlish/lite/abstract.py,sha256=Z3kLviPNGLkmA8m8BZILzWxez_sP18OyzgMP3-c2-RI,4068
473
478
  omlish/lite/args.py,sha256=ILJXAiN3KjIoJwY42aKpYPngUdxHIy9ssVIExFVz3fE,978
474
- omlish/lite/asyncs.py,sha256=MMRbC38mbsgBPovGLjq4iBdn74DjMVzGc4nVZxN_DUY,441
479
+ omlish/lite/asyncs.py,sha256=sTXTUTTVI8m1a1P6NxObQKk-NFKlmpcnNbucr4Fg-NU,937
475
480
  omlish/lite/attrops.py,sha256=bUa2ILC4Z89-B1IWSac9XV_VvjKDnQXKDR0mZ6e9SMk,8764
476
481
  omlish/lite/cached.py,sha256=ocQcppTwGdSnKPYMz75VoH526UUT8YtDJeRczBX0-wI,1306
477
482
  omlish/lite/check.py,sha256=ytCkwZoKfOlJqylL-AGm8C2WfsWJd2q3kFbnZCzX3_M,13844
@@ -483,7 +488,7 @@ omlish/lite/inject.py,sha256=Z0d3dnjxt9czMFwWk_y-Yl7yItCUa5Nf1YRu4GkMA5k,29045
483
488
  omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
484
489
  omlish/lite/marshal.py,sha256=J0VNr9_LjGLjxKW0wlZtIFnh_US7zwstCmtpe9Pk_D0,22969
485
490
  omlish/lite/maybes.py,sha256=NusCpK0FVqkIutw6_Wldn69G5VyKYhat7SegBIQmGpk,4412
486
- omlish/lite/maysync.py,sha256=bxq6NSooAc70oACqRAWHDSgs6alrxSv1tiaRKTs32qA,14417
491
+ omlish/lite/maysync.py,sha256=NiltEfX_mc7jWgWZ9XAqkDzMlLVprTAZvXRObXJT_IE,14926
487
492
  omlish/lite/objects.py,sha256=HzN_4J6w6WDLKDrW8jSNUKgfAR5vUsB42rtSCu04oqQ,1921
488
493
  omlish/lite/pycharm.py,sha256=FRHGcCDo42UzZXqNwW_DkhI-6kb_CmJKPiQ8F6mYkLA,1174
489
494
  omlish/lite/reflect.py,sha256=aTRQJ-hgnyRxr0dFxivUTScmUgP7zcw_iDQZIsarG24,2119
@@ -499,7 +504,7 @@ omlish/lite/wrappers.py,sha256=d00Ls2kFHuogKd5wEBaU65VNCN10YXIZtiwu1mbMpmA,530
499
504
  omlish/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
500
505
  omlish/logs/all.py,sha256=GqST35bRnHgpGmQXvtHih7kLaw5DcFgB32uxPGAsgSI,1717
501
506
  omlish/logs/base.py,sha256=Z1hfwYS2LgMJxFIyHiOvYa2meu2MH3kQDkhaWRNzt0M,5698
502
- omlish/logs/contexts.py,sha256=bTja5uA2V2VMoPnPrBxRfzUDgD0giRA0RVbtwrp3Xv4,4797
507
+ omlish/logs/contexts.py,sha256=qMX-BrOKmYIBOXIlSntKJT9mcsRryTqfcTFp9K1GJmE,4836
503
508
  omlish/logs/formatters.py,sha256=g8oGfP_ok0nrW9opIIh5LqcQTmdufWFGO-9pRKX4m3Q,242
504
509
  omlish/logs/infos.py,sha256=Nr2SbyI978vP5BTiVZsXUBdy2k0CUiwggcW-wewJHmo,11560
505
510
  omlish/logs/levels.py,sha256=Eze-k_LPgFzbNMnG10F2bRKfL3veQpIxiegvN5rGeWM,2909
@@ -517,11 +522,11 @@ omlish/logs/std/json.py,sha256=QJ5lywLsRsPyVno2nk2kOw-Z1z3bfrDiZzqcRUdWUMY,1382
517
522
  omlish/logs/std/loggers.py,sha256=hJIEC5BGaDOxgikTYKJ_qA_moS4CcHLMDAVKFDDKdHo,1144
518
523
  omlish/logs/std/noisy.py,sha256=hWpbseerZqlHdEPEajDTSmcRhx8LmmNAxz_7GBZAO9s,353
519
524
  omlish/logs/std/proxy.py,sha256=9MVV5kbj9nwl3KZGtrYCIb5XTpv33f33zZ7P_B58fX0,2394
520
- omlish/logs/std/records.py,sha256=NbprlkTQV8Y89nP2c27m3nE0OY3SWmQHCl-o_rQfs50,25476
525
+ omlish/logs/std/records.py,sha256=oI3eVPzoCNPRiEh2hA8BDKp1vM3uetYecek1AB0B3UA,25426
521
526
  omlish/logs/typed/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
522
- omlish/logs/typed/bindings.py,sha256=H_B-3LTGFlBIWYDJ8rei1VMfInE8KrBwRo3bJ_BgFj8,18184
527
+ omlish/logs/typed/bindings.py,sha256=7F6zPZKJ0cclg58xIMMrOG-vLv1KJ5dsXGwg9glSZFg,19919
523
528
  omlish/logs/typed/contexts.py,sha256=MU1RqHtmYbnxoLfLhMZbTbRd-WfYEyeVo7_3VnG3rY0,4027
524
- omlish/logs/typed/types.py,sha256=DQKDT2v4bG1Cgv_LrhvTIHWBAIODs9b8E5jNI4jTRpU,14442
529
+ omlish/logs/typed/types.py,sha256=VTxsDN7qN9-WnwxOBI7OFH1taOuLscTpm3t8edJpNik,14838
525
530
  omlish/logs/typed/values.py,sha256=s8x-P6tYq-BrhoA98Z5tfi70Tl1hHhcxOd1qao_h6ps,3278
526
531
  omlish/manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
527
532
  omlish/manifests/base.py,sha256=wW-De-pU3cef-0vGsgo-ypftDwc3tCBxhRAzPtrdark,918
@@ -529,7 +534,7 @@ omlish/manifests/globals.py,sha256=kVqQ-fT4kc7xWzLHoI731GviitFPv2v2yqw-p7t7Exs,2
529
534
  omlish/manifests/loading.py,sha256=s6KnhdFQCsI2i0Rus1sMU0so2v8dUBnk59BJkSnxGt8,17514
530
535
  omlish/manifests/static.py,sha256=9BaPBLkuzxHmg5A-5k9BjjBFINCdmFOIu06dMFgCfz4,497
531
536
  omlish/manifests/types.py,sha256=NeOGuIVrcbqjCDbQ3MnCxxHAgHnw0CkWJsBzo230PWE,453
532
- omlish/marshal/__init__.py,sha256=cdRll_tPZaTBIY0yLejCXZdZB3fUVkIoDMb8aESLkl8,5981
537
+ omlish/marshal/__init__.py,sha256=_QPYoxtmqfd2szwSuPtbIU8RwTIh_5gTJm--yvVWMcY,5969
533
538
  omlish/marshal/globals.py,sha256=Q6G18hcUwUDDNnpyRPnR5Tn_XZpZCSIEXo09nYSOaNU,2236
534
539
  omlish/marshal/naming.py,sha256=Mk5YrbES836_KflNNRoc5Ajd96iMYLQIMERKx1KpT4g,865
535
540
  omlish/marshal/standard.py,sha256=6L4FK7QVgVFAf2jkTQlCvN-15DWK49VCNlNwCBea3-8,6674
@@ -882,7 +887,7 @@ omlish/text/antlr/_runtime/xpath/XPathLexer.py,sha256=WvGKQjQnu7pX5C4CFKtsCzba2B
882
887
  omlish/text/antlr/_runtime/xpath/__init__.py,sha256=lMd_BbXYdlDhZQN_q0TKN978XW5G0pq618F0NaLkpFE,71
883
888
  omlish/text/go/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
884
889
  omlish/text/go/quoting.py,sha256=zbcPEDWsdj7GAemtu0x8nwMqpIu2C_5iInSwn6mMWlE,9142
885
- omlish/typedvalues/__init__.py,sha256=F3cUtl4Cm1StZxRBkFIRjuw3wPjEch8HdQZVG3a9AyU,948
890
+ omlish/typedvalues/__init__.py,sha256=dQpM8VaON8S7dUv1LBwhyBDjUVo7EW475a9DpnDQz1E,936
886
891
  omlish/typedvalues/accessor.py,sha256=2PQVoFrrCTOcZACAQ28GOvF9xhKyKz27GMSfS0xq5Pc,3184
887
892
  omlish/typedvalues/collection.py,sha256=CK4Vk9kJqAt2V8o6I4zGyv2u9DKov12uSvsGdqEd2Ws,5793
888
893
  omlish/typedvalues/consumer.py,sha256=lDOE-O_sgGbOvbcBg2g5ZRaV2WixnuEYxFsJBaj18oU,4690
@@ -892,9 +897,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
892
897
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
893
898
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
894
899
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
895
- omlish-0.0.0.dev432.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
896
- omlish-0.0.0.dev432.dist-info/METADATA,sha256=bfGoM5Z4MjOp8DULPuEbClTLTNoyTilZ3sKRe-c5SRk,19243
897
- omlish-0.0.0.dev432.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
898
- omlish-0.0.0.dev432.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
899
- omlish-0.0.0.dev432.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
900
- omlish-0.0.0.dev432.dist-info/RECORD,,
900
+ omlish-0.0.0.dev434.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
901
+ omlish-0.0.0.dev434.dist-info/METADATA,sha256=fQJYAY6N-2PAgl3mzD4PjfFG_SymockqND184l4ForI,19005
902
+ omlish-0.0.0.dev434.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
903
+ omlish-0.0.0.dev434.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
904
+ omlish-0.0.0.dev434.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
905
+ omlish-0.0.0.dev434.dist-info/RECORD,,