omlish 0.0.0.dev432__py3-none-any.whl → 0.0.0.dev433__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.
@@ -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.dev433
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"
@@ -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=Zv_1p0fhbJrF6QKOgRP0K5IQT7b_xpYlyQIa4fTot7w,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
@@ -415,7 +415,7 @@ omlish/iterators/iterators.py,sha256=RxW35yQ5ed8vBQ22IqpDXFx-i5JiLQdp7-pkMZXhJJ8
415
415
  omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,472
416
416
  omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
417
417
  omlish/iterators/unique.py,sha256=BSE-eanva8byFCJi09Nt2zzTsVr8LnTqY1PIInGYRs0,1396
418
- omlish/lang/__init__.py,sha256=Ty5DkVFyGztlpYVEcEP1yTvLbflRFTo6IThN8dPMnbI,10096
418
+ omlish/lang/__init__.py,sha256=lgRNRbIwj0FAU6PH4MMU9fqP5A1NI9wcHHWK8LjFyBg,10222
419
419
  omlish/lang/asyncs.py,sha256=rfpLE2ZacVKGYB9DSFuMBurQzkPRjB1qljcS3sIuSsw,1767
420
420
  omlish/lang/attrstorage.py,sha256=UUnoENCMQF3twBfxBcIKa5mpXsAxWnNYDayhU8xgmpU,5224
421
421
  omlish/lang/casing.py,sha256=3_c7cxQOc4z_YezaU2B4NCTAsPh_kDL4wUTK5kZU6kg,4675
@@ -439,7 +439,7 @@ omlish/lang/overrides.py,sha256=IBzK6ljfLX6TLgIyKTSjhqTLcuKRkQNVtEOnBLS4nuA,2095
439
439
  omlish/lang/params.py,sha256=sfbNoGrKCsAtubFufj_uh_WKshIgA8fqJ4PmLH1PH00,6639
440
440
  omlish/lang/recursion.py,sha256=1VfSqzKO-8Is3t9LKw0W4jwPfE0aBS70EUlbUxAx4eE,1900
441
441
  omlish/lang/resolving.py,sha256=nMosn-rcYjI8t6b35oICDyPw6t6-HvWj5jMdkfn1jfA,1612
442
- omlish/lang/resources.py,sha256=QtuybNgdw5e2QL3jtKi-5ENH98JemsMRi21A40tYrzA,2844
442
+ omlish/lang/resources.py,sha256=awfh33Uxkd9Ho-5Z3d9CPWQE3gjktV0XWM6XbdG0ejA,2845
443
443
  omlish/lang/strings.py,sha256=TY-v0iGu6BxEKb99YS-VmIJqc-sTAqMv7mCDJQALMnI,4550
444
444
  omlish/lang/sys.py,sha256=KPe1UOXk1VxlOYt_aLmhN0KqsA4wnP-4nm4WEwO49pw,411
445
445
  omlish/lang/typing.py,sha256=ZN4t8oGSSknf_T1HbfqVQ7Y9OOZ1RkikYihNxdBlTFQ,3733
@@ -455,9 +455,11 @@ omlish/lang/classes/restrict.py,sha256=CUyvLpMYiQwTjpzo5sdG_lQxdeEIq2z2xSVNrsI9K
455
455
  omlish/lang/classes/simple.py,sha256=3AJSs-plVg2flq4SC6I39LxP0nBaB241puv3D5YCP5I,2973
456
456
  omlish/lang/classes/virtual.py,sha256=J4y-uiv1RaP2rfFeptXqQ1a4MRek0TMlAFFraO_lzhs,3397
457
457
  omlish/lang/imports/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
458
+ omlish/lang/imports/capture.py,sha256=hy9hgUmY1e9ElS6NfMuFdm-uY4hdnzQ7uBvuUVW4i-Y,15078
458
459
  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
460
+ omlish/lang/imports/lazy.py,sha256=Eefs9hkj5surMdwgxX_Q3BOqPcox10v0sKT5rKIQknc,808
461
+ omlish/lang/imports/proxy.py,sha256=6c4L-njdAOsGrhi-gdv_R3nHBEiPS7BWHaBU7-YOBfk,1553
462
+ omlish/lang/imports/proxyinit.py,sha256=W7_FxDxe4aAQLUxNF1U6-2JROwK75HgRGEGidDKB-t0,4400
461
463
  omlish/lang/imports/resolving.py,sha256=DeRarn35Fryg5JhVhy8wbiC9lvr58AnllI9B_reswUE,2085
462
464
  omlish/lang/imports/traversal.py,sha256=pbFQIa880NGjSfcLsno2vE_G41_CLwDHb-7gWg2J3BI,2855
463
465
  omlish/lifecycles/__init__.py,sha256=zOuvV4pErPwxcKUSgshmME2Duw9GrjwckpNmW3FPKng,810
@@ -499,7 +501,7 @@ omlish/lite/wrappers.py,sha256=d00Ls2kFHuogKd5wEBaU65VNCN10YXIZtiwu1mbMpmA,530
499
501
  omlish/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
500
502
  omlish/logs/all.py,sha256=GqST35bRnHgpGmQXvtHih7kLaw5DcFgB32uxPGAsgSI,1717
501
503
  omlish/logs/base.py,sha256=Z1hfwYS2LgMJxFIyHiOvYa2meu2MH3kQDkhaWRNzt0M,5698
502
- omlish/logs/contexts.py,sha256=bTja5uA2V2VMoPnPrBxRfzUDgD0giRA0RVbtwrp3Xv4,4797
504
+ omlish/logs/contexts.py,sha256=qMX-BrOKmYIBOXIlSntKJT9mcsRryTqfcTFp9K1GJmE,4836
503
505
  omlish/logs/formatters.py,sha256=g8oGfP_ok0nrW9opIIh5LqcQTmdufWFGO-9pRKX4m3Q,242
504
506
  omlish/logs/infos.py,sha256=Nr2SbyI978vP5BTiVZsXUBdy2k0CUiwggcW-wewJHmo,11560
505
507
  omlish/logs/levels.py,sha256=Eze-k_LPgFzbNMnG10F2bRKfL3veQpIxiegvN5rGeWM,2909
@@ -517,11 +519,11 @@ omlish/logs/std/json.py,sha256=QJ5lywLsRsPyVno2nk2kOw-Z1z3bfrDiZzqcRUdWUMY,1382
517
519
  omlish/logs/std/loggers.py,sha256=hJIEC5BGaDOxgikTYKJ_qA_moS4CcHLMDAVKFDDKdHo,1144
518
520
  omlish/logs/std/noisy.py,sha256=hWpbseerZqlHdEPEajDTSmcRhx8LmmNAxz_7GBZAO9s,353
519
521
  omlish/logs/std/proxy.py,sha256=9MVV5kbj9nwl3KZGtrYCIb5XTpv33f33zZ7P_B58fX0,2394
520
- omlish/logs/std/records.py,sha256=NbprlkTQV8Y89nP2c27m3nE0OY3SWmQHCl-o_rQfs50,25476
522
+ omlish/logs/std/records.py,sha256=oI3eVPzoCNPRiEh2hA8BDKp1vM3uetYecek1AB0B3UA,25426
521
523
  omlish/logs/typed/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
522
- omlish/logs/typed/bindings.py,sha256=H_B-3LTGFlBIWYDJ8rei1VMfInE8KrBwRo3bJ_BgFj8,18184
524
+ omlish/logs/typed/bindings.py,sha256=7F6zPZKJ0cclg58xIMMrOG-vLv1KJ5dsXGwg9glSZFg,19919
523
525
  omlish/logs/typed/contexts.py,sha256=MU1RqHtmYbnxoLfLhMZbTbRd-WfYEyeVo7_3VnG3rY0,4027
524
- omlish/logs/typed/types.py,sha256=DQKDT2v4bG1Cgv_LrhvTIHWBAIODs9b8E5jNI4jTRpU,14442
526
+ omlish/logs/typed/types.py,sha256=VTxsDN7qN9-WnwxOBI7OFH1taOuLscTpm3t8edJpNik,14838
525
527
  omlish/logs/typed/values.py,sha256=s8x-P6tYq-BrhoA98Z5tfi70Tl1hHhcxOd1qao_h6ps,3278
526
528
  omlish/manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
527
529
  omlish/manifests/base.py,sha256=wW-De-pU3cef-0vGsgo-ypftDwc3tCBxhRAzPtrdark,918
@@ -529,7 +531,7 @@ omlish/manifests/globals.py,sha256=kVqQ-fT4kc7xWzLHoI731GviitFPv2v2yqw-p7t7Exs,2
529
531
  omlish/manifests/loading.py,sha256=s6KnhdFQCsI2i0Rus1sMU0so2v8dUBnk59BJkSnxGt8,17514
530
532
  omlish/manifests/static.py,sha256=9BaPBLkuzxHmg5A-5k9BjjBFINCdmFOIu06dMFgCfz4,497
531
533
  omlish/manifests/types.py,sha256=NeOGuIVrcbqjCDbQ3MnCxxHAgHnw0CkWJsBzo230PWE,453
532
- omlish/marshal/__init__.py,sha256=cdRll_tPZaTBIY0yLejCXZdZB3fUVkIoDMb8aESLkl8,5981
534
+ omlish/marshal/__init__.py,sha256=_QPYoxtmqfd2szwSuPtbIU8RwTIh_5gTJm--yvVWMcY,5969
533
535
  omlish/marshal/globals.py,sha256=Q6G18hcUwUDDNnpyRPnR5Tn_XZpZCSIEXo09nYSOaNU,2236
534
536
  omlish/marshal/naming.py,sha256=Mk5YrbES836_KflNNRoc5Ajd96iMYLQIMERKx1KpT4g,865
535
537
  omlish/marshal/standard.py,sha256=6L4FK7QVgVFAf2jkTQlCvN-15DWK49VCNlNwCBea3-8,6674
@@ -882,7 +884,7 @@ omlish/text/antlr/_runtime/xpath/XPathLexer.py,sha256=WvGKQjQnu7pX5C4CFKtsCzba2B
882
884
  omlish/text/antlr/_runtime/xpath/__init__.py,sha256=lMd_BbXYdlDhZQN_q0TKN978XW5G0pq618F0NaLkpFE,71
883
885
  omlish/text/go/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
884
886
  omlish/text/go/quoting.py,sha256=zbcPEDWsdj7GAemtu0x8nwMqpIu2C_5iInSwn6mMWlE,9142
885
- omlish/typedvalues/__init__.py,sha256=F3cUtl4Cm1StZxRBkFIRjuw3wPjEch8HdQZVG3a9AyU,948
887
+ omlish/typedvalues/__init__.py,sha256=dQpM8VaON8S7dUv1LBwhyBDjUVo7EW475a9DpnDQz1E,936
886
888
  omlish/typedvalues/accessor.py,sha256=2PQVoFrrCTOcZACAQ28GOvF9xhKyKz27GMSfS0xq5Pc,3184
887
889
  omlish/typedvalues/collection.py,sha256=CK4Vk9kJqAt2V8o6I4zGyv2u9DKov12uSvsGdqEd2Ws,5793
888
890
  omlish/typedvalues/consumer.py,sha256=lDOE-O_sgGbOvbcBg2g5ZRaV2WixnuEYxFsJBaj18oU,4690
@@ -892,9 +894,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
892
894
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
893
895
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
894
896
  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,,
897
+ omlish-0.0.0.dev433.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
898
+ omlish-0.0.0.dev433.dist-info/METADATA,sha256=a9lNv9FCJuo46oSrJsrL-E9-E4739mvReWcPY-T9BtM,19243
899
+ omlish-0.0.0.dev433.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
900
+ omlish-0.0.0.dev433.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
901
+ omlish-0.0.0.dev433.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
902
+ omlish-0.0.0.dev433.dist-info/RECORD,,