omlish 0.0.0.dev429__py3-none-any.whl → 0.0.0.dev430__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.dev429'
2
- __revision__ = 'aec560601e4f8ecdc171e4341c2b17e996a0ef91'
1
+ __version__ = '0.0.0.dev430'
2
+ __revision__ = '36144d896de4a99623dc872d90d16dfe60a47934'
3
3
 
4
4
 
5
5
  #
omlish/lang/asyncs.py CHANGED
@@ -19,9 +19,7 @@ def as_async(fn: ta.Callable[P, T], *, wrap: bool = False) -> ta.Callable[P, ta.
19
19
  ##
20
20
 
21
21
 
22
- async def async_list(
23
- ai: ta.AsyncIterable[T],
24
- ) -> list[T]:
22
+ async def async_list(ai: ta.AsyncIterable[T]) -> list[T]:
25
23
  """Simply eagerly reads the full contents of a function call returning an async iterator."""
26
24
 
27
25
  return [v async for v in ai]
@@ -30,9 +28,7 @@ async def async_list(
30
28
  ##
31
29
 
32
30
 
33
- def sync_await(
34
- aw: ta.Awaitable[T],
35
- ) -> T:
31
+ def sync_await(aw: ta.Awaitable[T]) -> T:
36
32
  """
37
33
  Allows for the synchronous execution of async functions which will never actually *externally* await anything. These
38
34
  functions are allowed to await any number of other functions - including contextmanagers and generators - so long as
omlish/lite/attrops.py CHANGED
@@ -285,8 +285,6 @@ class AttrOps(ta.Generic[T]):
285
285
  self._eq = _eq
286
286
  return _eq
287
287
 
288
- #
289
-
290
288
  @property
291
289
  def hash_eq(self) -> ta.Tuple[
292
290
  ta.Callable[[T], int],
@@ -294,6 +292,8 @@ class AttrOps(ta.Generic[T]):
294
292
  ]:
295
293
  return (self.hash, self.eq)
296
294
 
295
+ #
296
+
297
297
  @property
298
298
  def repr_hash_eq(self) -> ta.Tuple[
299
299
  ta.Callable[[T], str],
@@ -304,20 +304,25 @@ class AttrOps(ta.Generic[T]):
304
304
 
305
305
  #
306
306
 
307
+ class NOT_SET: # noqa
308
+ def __new__(cls, *args, **kwargs): # noqa
309
+ raise TypeError
310
+
307
311
  def install(
308
312
  self,
309
313
  locals_dct: ta.MutableMapping[str, ta.Any],
310
314
  *,
311
- all: bool = False, # noqa
312
- repr: bool = False, # noqa
313
- hash: bool = False, # noqa
314
- eq: bool = False,
315
+ repr: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET, # noqa
316
+ hash: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET, # noqa
317
+ eq: ta.Union[bool, ta.Type[NOT_SET]] = NOT_SET,
315
318
  ) -> 'AttrOps[T]':
316
- if repr or all:
319
+ if all(a is self.NOT_SET for a in (repr, hash, eq)):
320
+ repr = hash = eq = True # noqa
321
+ if repr:
317
322
  locals_dct.update(__repr__=self.repr)
318
- if hash or all:
323
+ if hash:
319
324
  locals_dct.update(__hash__=self.hash)
320
- if eq or all:
325
+ if eq:
321
326
  locals_dct.update(__eq__=self.eq)
322
327
  return self
323
328
 
omlish/logs/all.py CHANGED
@@ -17,6 +17,10 @@ with _lang.auto_proxy_init(globals()):
17
17
  JsonLoggingFormatter,
18
18
  )
19
19
 
20
+ from .std.loggers import ( # noqa
21
+ StdLogger,
22
+ )
23
+
20
24
  from .std.noisy import ( # noqa
21
25
  silence_noisy_loggers,
22
26
  )
@@ -26,10 +30,39 @@ with _lang.auto_proxy_init(globals()):
26
30
  ProxyLoggingHandler,
27
31
  )
28
32
 
33
+ from .std.records import ( # noqa
34
+ LoggingContextLogRecord,
35
+ )
36
+
37
+ from .base import ( # noqa
38
+ AnyLogger,
39
+ Logger,
40
+ AsyncLogger,
41
+
42
+ AnyNopLogger,
43
+ NopLogger,
44
+ AsyncNopLogger,
45
+ )
46
+
29
47
  from .callers import ( # noqa
30
48
  LoggingCaller,
31
49
  )
32
50
 
51
+ from .contexts import ( # noqa
52
+ LoggingExcInfoTuple,
53
+ LoggingExcInfo,
54
+
55
+ LoggingContext,
56
+ )
57
+
58
+ from .infos import ( # noqa
59
+ LoggingSourceFileInfo,
60
+ LoggingThreadInfo,
61
+ LoggingProcessInfo,
62
+ LoggingMultiprocessingInfo,
63
+ LoggingAsyncioTaskInfo,
64
+ )
65
+
33
66
  from .levels import ( # noqa
34
67
  LogLevel,
35
68
 
@@ -59,3 +92,7 @@ with _lang.auto_proxy_init(globals()):
59
92
 
60
93
  error_logging,
61
94
  )
95
+
96
+ from .warnings import ( # noqa
97
+ LoggingSetupWarning,
98
+ )
omlish/logs/base.py CHANGED
@@ -21,7 +21,6 @@ LoggingMsgFn = ta.Callable[[], ta.Union[str, tuple]] # ta.TypeAlias
21
21
 
22
22
 
23
23
  class AnyLogger(Abstract, ta.Generic[T]):
24
- @ta.final
25
24
  def is_enabled_for(self, level: LogLevel) -> bool:
26
25
  return level >= self.get_effective_level()
27
26
 
@@ -220,7 +219,7 @@ class AsyncLogger(AnyLogger[ta.Awaitable[None]], Abstract):
220
219
  class AnyNopLogger(AnyLogger[T], Abstract):
221
220
  @ta.final
222
221
  def get_effective_level(self) -> LogLevel:
223
- return 999
222
+ return -999
224
223
 
225
224
 
226
225
  @ta.final
omlish/logs/callers.py CHANGED
@@ -68,8 +68,8 @@ class LoggingCaller(ta.NamedTuple):
68
68
  sinfo = sinfo[:-1]
69
69
 
70
70
  return cls(
71
- f.f_code.co_filename,
72
- f.f_lineno or 0,
73
- f.f_code.co_name,
74
- sinfo,
71
+ file_path=f.f_code.co_filename,
72
+ line_no=f.f_lineno or 0,
73
+ name=f.f_code.co_name,
74
+ stack_info=sinfo,
75
75
  )
omlish/logs/infos.py CHANGED
@@ -35,8 +35,8 @@ class LoggingSourceFileInfo(ta.NamedTuple):
35
35
  return None
36
36
 
37
37
  return cls(
38
- file_name,
39
- module,
38
+ file_name=file_name,
39
+ module=module,
40
40
  )
41
41
 
42
42
 
@@ -53,9 +53,9 @@ class LoggingThreadInfo(ta.NamedTuple):
53
53
  @classmethod
54
54
  def build(cls) -> 'LoggingThreadInfo':
55
55
  return cls(
56
- threading.get_ident(),
57
- threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
58
- threading.current_thread().name,
56
+ ident=threading.get_ident(),
57
+ native_id=threading.get_native_id() if hasattr(threading, 'get_native_id') else None,
58
+ name=threading.current_thread().name,
59
59
  )
60
60
 
61
61
 
@@ -70,7 +70,7 @@ class LoggingProcessInfo(ta.NamedTuple):
70
70
  @classmethod
71
71
  def build(cls) -> 'LoggingProcessInfo':
72
72
  return cls(
73
- os.getpid(),
73
+ pid=os.getpid(),
74
74
  )
75
75
 
76
76
 
@@ -89,7 +89,7 @@ class LoggingMultiprocessingInfo(ta.NamedTuple):
89
89
  return None
90
90
 
91
91
  return cls(
92
- mp.current_process().name,
92
+ process_name=mp.current_process().name,
93
93
  )
94
94
 
95
95
 
@@ -116,5 +116,5 @@ class LoggingAsyncioTaskInfo(ta.NamedTuple):
116
116
  return None
117
117
 
118
118
  return cls(
119
- task.get_name(), # Always non-None
119
+ name=task.get_name(), # Always non-None
120
120
  )
omlish/logs/levels.py CHANGED
@@ -22,36 +22,66 @@ class NamedLogLevel(int):
22
22
 
23
23
  #
24
24
 
25
- @property
26
- def exact_name(self) -> ta.Optional[str]:
27
- return self._NAMES_BY_INT.get(self)
25
+ _CACHE: ta.ClassVar[ta.MutableMapping[int, 'NamedLogLevel']] = {}
26
+
27
+ @ta.overload
28
+ def __new__(cls, name: str, offset: int = 0, /) -> 'NamedLogLevel':
29
+ ...
28
30
 
29
- _effective_name: ta.Optional[str]
31
+ @ta.overload
32
+ def __new__(cls, i: int, /) -> 'NamedLogLevel':
33
+ ...
34
+
35
+ def __new__(cls, x, offset=0, /):
36
+ if isinstance(x, str):
37
+ return cls(cls._INTS_BY_NAME[x.upper()] + offset)
38
+ elif not offset and (c := cls._CACHE.get(x)) is not None:
39
+ return c
40
+ else:
41
+ return super().__new__(cls, x + offset)
42
+
43
+ #
44
+
45
+ _name_and_offset: ta.Tuple[str, int]
30
46
 
31
47
  @property
32
- def effective_name(self) -> ta.Optional[str]:
48
+ def name_and_offset(self) -> ta.Tuple[str, int]:
33
49
  try:
34
- return self._effective_name
50
+ return self._name_and_offset
35
51
  except AttributeError:
36
52
  pass
37
53
 
38
- if (n := self.exact_name) is None:
54
+ if (n := self._NAMES_BY_INT.get(self)) is not None:
55
+ t = (n, 0)
56
+ else:
39
57
  for n, i in self._NAME_INT_PAIRS: # noqa
40
58
  if self >= i:
59
+ t = (n, (self - i))
41
60
  break
42
61
  else:
43
- n = None
62
+ t = ('NOTSET', int(self))
63
+
64
+ self._name_and_offset = t
65
+ return t
66
+
67
+ @property
68
+ def exact_name(self) -> ta.Optional[str]:
69
+ n, o = self.name_and_offset
70
+ return n if not o else None
44
71
 
45
- self._effective_name = n
72
+ @property
73
+ def effective_name(self) -> str:
74
+ n, _ = self.name_and_offset
46
75
  return n
47
76
 
48
77
  #
49
78
 
50
- def __repr__(self) -> str:
51
- return f'{self.__class__.__name__}({int(self)})'
52
-
53
79
  def __str__(self) -> str:
54
- return self.exact_name or f'{self.effective_name or "INVALID"}:{int(self)}'
80
+ return self.exact_name or f'{self.effective_name}{int(self):+}'
81
+
82
+ def __repr__(self) -> str:
83
+ n, o = self.name_and_offset
84
+ return f'{self.__class__.__name__}({n!r}{f", {int(o)}" if o else ""})'
55
85
 
56
86
  #
57
87
 
@@ -69,3 +99,6 @@ NamedLogLevel.WARNING = NamedLogLevel(logging.WARNING)
69
99
  NamedLogLevel.INFO = NamedLogLevel(logging.INFO)
70
100
  NamedLogLevel.DEBUG = NamedLogLevel(logging.DEBUG)
71
101
  NamedLogLevel.NOTSET = NamedLogLevel(logging.NOTSET)
102
+
103
+
104
+ NamedLogLevel._CACHE.update({i: NamedLogLevel(i) for i in NamedLogLevel._NAMES_BY_INT}) # noqa
omlish/logs/modules.py CHANGED
@@ -3,7 +3,7 @@ import logging
3
3
  import typing as ta
4
4
 
5
5
  from .base import Logger
6
- from .std.adapters import StdLogger
6
+ from .std.loggers import StdLogger
7
7
 
8
8
 
9
9
  ##
omlish/logs/protocols.py CHANGED
@@ -7,6 +7,7 @@ from .levels import LogLevel
7
7
  ##
8
8
 
9
9
 
10
+ @ta.runtime_checkable
10
11
  class LoggerLike(ta.Protocol):
11
12
  """Satisfied by both our Logger and stdlib logging.Logger."""
12
13
 
@@ -23,6 +23,9 @@ class StdLogger(Logger):
23
23
  def std(self) -> logging.Logger:
24
24
  return self._std
25
25
 
26
+ def is_enabled_for(self, level: LogLevel) -> bool:
27
+ return self._std.isEnabledFor(level)
28
+
26
29
  def get_effective_level(self) -> LogLevel:
27
30
  return self._std.getEffectiveLevel()
28
31
 
omlish/logs/times.py CHANGED
@@ -61,9 +61,9 @@ class LoggingTimeFields(ta.NamedTuple):
61
61
  relative_created = (time_ns - start_time_ns) / 1e6
62
62
 
63
63
  return cls(
64
- created,
65
- msecs,
66
- relative_created,
64
+ created=created,
65
+ msecs=msecs,
66
+ relative_created=relative_created,
67
67
  )
68
68
 
69
69
 
@@ -86,6 +86,7 @@ class TypedLoggerValue(Abstract, ta.Generic[T]):
86
86
  def of(cls: ta.Type[TypedLoggerValueT], v: ta.Any) -> ta.Union[TypedLoggerValueT, AbsentTypedLoggerValue]:
87
87
  return cls(v) if v is not ABSENT_TYPED_LOGGER_VALUE else ABSENT_TYPED_LOGGER_VALUE
88
88
 
89
+ @ta.final
89
90
  @property
90
91
  def v(self) -> T:
91
92
  return self._v
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev429
3
+ Version: 0.0.0.dev430
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -1,5 +1,5 @@
1
1
  omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
2
- omlish/__about__.py,sha256=J-C7WHTn5DQ8yi1VGtWDPKJ49OgPRH0xEYXXfxVvAPM,3575
2
+ omlish/__about__.py,sha256=hWUhAjMnMNft0GDUanNG2JIkoAwrhNLC_ZTd5BzHw0A,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
@@ -416,7 +416,7 @@ omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,4
416
416
  omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
417
417
  omlish/iterators/unique.py,sha256=BSE-eanva8byFCJi09Nt2zzTsVr8LnTqY1PIInGYRs0,1396
418
418
  omlish/lang/__init__.py,sha256=Ty5DkVFyGztlpYVEcEP1yTvLbflRFTo6IThN8dPMnbI,10096
419
- omlish/lang/asyncs.py,sha256=g47VwMk3LwCcOhZ_uJqXVKmAi85Z0m9l2m37ipuy50s,1789
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
422
422
  omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
@@ -472,7 +472,7 @@ omlish/lite/__init__.py,sha256=cyZEpGob7XjU8DohyNxVe5CQRk4CQ5vrHL42OdhQb8w,148
472
472
  omlish/lite/abstract.py,sha256=Z3kLviPNGLkmA8m8BZILzWxez_sP18OyzgMP3-c2-RI,4068
473
473
  omlish/lite/args.py,sha256=ILJXAiN3KjIoJwY42aKpYPngUdxHIy9ssVIExFVz3fE,978
474
474
  omlish/lite/asyncs.py,sha256=MMRbC38mbsgBPovGLjq4iBdn74DjMVzGc4nVZxN_DUY,441
475
- omlish/lite/attrops.py,sha256=ZtF-qeiqT0zw3q7h2UXHSqlF9Db2bQ9IgZj1p-kOiPI,8522
475
+ omlish/lite/attrops.py,sha256=bUa2ILC4Z89-B1IWSac9XV_VvjKDnQXKDR0mZ6e9SMk,8764
476
476
  omlish/lite/cached.py,sha256=ocQcppTwGdSnKPYMz75VoH526UUT8YtDJeRczBX0-wI,1306
477
477
  omlish/lite/check.py,sha256=ytCkwZoKfOlJqylL-AGm8C2WfsWJd2q3kFbnZCzX3_M,13844
478
478
  omlish/lite/configs.py,sha256=4-1uVxo-aNV7vMKa7PVNhM610eejG1WepB42-Dw2xQI,914
@@ -497,31 +497,31 @@ omlish/lite/types.py,sha256=QM9whf55r7TmmQBRApIWSlyVKsl1p_jcut_YheyZMFY,146
497
497
  omlish/lite/typing.py,sha256=m2CyJTz2OVOCPRvp-0UuEx7oleZgXqs3rYXijE0bTsA,1280
498
498
  omlish/lite/wrappers.py,sha256=d00Ls2kFHuogKd5wEBaU65VNCN10YXIZtiwu1mbMpmA,530
499
499
  omlish/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
500
- omlish/logs/all.py,sha256=9VOobL0p3E_6QWsnBmlCPhxz5zqs-AiH4jvZR3--ZZA,1085
501
- omlish/logs/base.py,sha256=NyydcPUYPODiTCslCr--hlXSZSTvRgF_QNjdszpqfTc,6663
502
- omlish/logs/callers.py,sha256=wpLHCfykqG5yAE4Wi1LAVcZiEMRULVsObFqn7-49o8g,2057
500
+ omlish/logs/all.py,sha256=_sU_2waB8FR9GuVrdxGLI145nGepd8c2LAHf2J4dbz4,1777
501
+ omlish/logs/base.py,sha256=VHPjSJjQzIRCe5nqgkmNORYclDJZayGucMy_WhITO1c,6650
502
+ omlish/logs/callers.py,sha256=F3VbeQJniw6RyfbeGBcxMGL3aeO5mgPizmJ8pa2RW88,2091
503
503
  omlish/logs/contexts.py,sha256=dC84Wa__j0leSJw5SzP-ygsflfzIiqvmRnv9meD-Q_U,7523
504
- omlish/logs/infos.py,sha256=OutGmqvKBmE1oHuiQk1afItnbBcBgAuPONMekwR0sco,2561
505
- omlish/logs/levels.py,sha256=b3i-70OcvNMcOQBzg1IUHBPESfHz0uu5mi5t_jbwv1Y,1966
506
- omlish/logs/modules.py,sha256=ImciecEfeLwh65vO3gWVpADRhOz9cBoAkBDJ9VyliXY,267
507
- omlish/logs/protocols.py,sha256=8l5TgNUNgfrqYPA6dVijPFGLxzWhvgS4Cca64XHT0jo,939
504
+ omlish/logs/infos.py,sha256=38bPi7v7vHawNlLp7Q7X6JS-q5s-JrwlDi08FY4xoy4,2621
505
+ omlish/logs/levels.py,sha256=Eze-k_LPgFzbNMnG10F2bRKfL3veQpIxiegvN5rGeWM,2909
506
+ omlish/logs/modules.py,sha256=wZ_PNCYhAaEdnGE5k0JvChcqn9nhtEpmwuH74Bwn5gg,266
507
+ omlish/logs/protocols.py,sha256=e_zizD3pQdYlU6bg3xGB3_ARUTcoHUfar_uLjCo-SPw,961
508
508
  omlish/logs/standard.py,sha256=ppho-wDecGxUiRXOdCIlblmrQhqXZ0oQOGayy8N53XY,3237
509
- omlish/logs/times.py,sha256=MTgZDF89qXeXqhsXpELPSk8fv5_0MJKb3jMgYVl-J94,2563
509
+ omlish/logs/times.py,sha256=WUy92cUxMtttnj0PZryIxbLqEdWiiAVDUboRxqe2pYw,2594
510
510
  omlish/logs/utils.py,sha256=fKvP342qBmE8wwTgUQ8Tf0-ATVhCm90UYBQt2pk0044,1883
511
511
  omlish/logs/warnings.py,sha256=xyhDgiPy1p8Kp5D9sb_NZiBnQ26SUppaHqC27dtQzok,67
512
512
  omlish/logs/std/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
513
- omlish/logs/std/adapters.py,sha256=qRXusW8iGYF29C3cy1srb4pgJ0Fv5li8bUvnegxo9o8,1005
514
513
  omlish/logs/std/configs.py,sha256=aDQahqBJXJpmQBaxXVK5S2xi_I_nrLLcCLTq6Q2K6EQ,1037
515
514
  omlish/logs/std/filters.py,sha256=Z8tHOvBRiP-OYm2z5cwY-lYXRimNgferEARMwvwx5Pw,380
516
515
  omlish/logs/std/handlers.py,sha256=uTWOT6oayBUEftKmJ8yo89ZP4plv5eQ8Lbcmt-IGl8c,469
517
516
  omlish/logs/std/json.py,sha256=QJ5lywLsRsPyVno2nk2kOw-Z1z3bfrDiZzqcRUdWUMY,1382
517
+ omlish/logs/std/loggers.py,sha256=nJieUZ2iPO8iVYc72QDUBKLPhGw7yPd_RzR18zKUSck,1106
518
518
  omlish/logs/std/noisy.py,sha256=hWpbseerZqlHdEPEajDTSmcRhx8LmmNAxz_7GBZAO9s,353
519
519
  omlish/logs/std/proxy.py,sha256=9MVV5kbj9nwl3KZGtrYCIb5XTpv33f33zZ7P_B58fX0,2394
520
520
  omlish/logs/std/records.py,sha256=muJA3KKjGm5mgsHXtOyrpaEZu553M-UviNgNvXdISXY,10718
521
521
  omlish/logs/typed/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
522
522
  omlish/logs/typed/bindings.py,sha256=H_B-3LTGFlBIWYDJ8rei1VMfInE8KrBwRo3bJ_BgFj8,18184
523
523
  omlish/logs/typed/contexts.py,sha256=MU1RqHtmYbnxoLfLhMZbTbRd-WfYEyeVo7_3VnG3rY0,4027
524
- omlish/logs/typed/types.py,sha256=TgoT2jBGUD9rIWE6u9Yj-WW5wWusMjNcCf4FGh3RHJ4,14428
524
+ omlish/logs/typed/types.py,sha256=DQKDT2v4bG1Cgv_LrhvTIHWBAIODs9b8E5jNI4jTRpU,14442
525
525
  omlish/logs/typed/values.py,sha256=w8ukpJZ3lx_st7Mj7riP2squzGmMaz7OuUxw_NZCZsY,3261
526
526
  omlish/manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
527
527
  omlish/manifests/base.py,sha256=wW-De-pU3cef-0vGsgo-ypftDwc3tCBxhRAzPtrdark,918
@@ -892,9 +892,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
892
892
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
893
893
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
894
894
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
895
- omlish-0.0.0.dev429.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
896
- omlish-0.0.0.dev429.dist-info/METADATA,sha256=J2Jsv1U4suYQj3spIX7Tqi6R0iatqB_2mTMxagh8fOM,19243
897
- omlish-0.0.0.dev429.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
898
- omlish-0.0.0.dev429.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
899
- omlish-0.0.0.dev429.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
900
- omlish-0.0.0.dev429.dist-info/RECORD,,
895
+ omlish-0.0.0.dev430.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
896
+ omlish-0.0.0.dev430.dist-info/METADATA,sha256=iD6ksXPqkEoUuKrQg-U2gFrrtB3eCj9jzyhlaHtfGgs,19243
897
+ omlish-0.0.0.dev430.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
898
+ omlish-0.0.0.dev430.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
899
+ omlish-0.0.0.dev430.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
900
+ omlish-0.0.0.dev430.dist-info/RECORD,,