omlish 0.0.0.dev425__py3-none-any.whl → 0.0.0.dev427__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 (55) hide show
  1. omlish/__about__.py +2 -2
  2. omlish/c3.py +4 -1
  3. omlish/configs/processing/flattening.py +1 -1
  4. omlish/configs/processing/merging.py +8 -6
  5. omlish/dataclasses/impl/concerns/doc.py +1 -1
  6. omlish/diag/_pycharm/runhack.py +1 -1
  7. omlish/diag/procfs.py +2 -2
  8. omlish/formats/json/stream/lexing.py +63 -16
  9. omlish/formats/json/stream/parsing.py +1 -1
  10. omlish/formats/json/stream/utils.py +2 -2
  11. omlish/formats/logfmt.py +8 -2
  12. omlish/funcs/genmachine.py +1 -1
  13. omlish/http/sse.py +1 -1
  14. omlish/inject/impl/injector.py +1 -1
  15. omlish/inject/impl/multis.py +2 -2
  16. omlish/inject/impl/providers.py +0 -4
  17. omlish/inject/impl/proxy.py +0 -2
  18. omlish/inject/scopes.py +0 -4
  19. omlish/io/buffers.py +1 -1
  20. omlish/lang/__init__.py +23 -13
  21. omlish/lang/{attrs.py → attrstorage.py} +15 -15
  22. omlish/lang/cached/property.py +2 -2
  23. omlish/lang/classes/simple.py +26 -4
  24. omlish/lang/collections.py +1 -1
  25. omlish/lang/iterables.py +2 -2
  26. omlish/lifecycles/contextmanagers.py +1 -1
  27. omlish/lifecycles/controller.py +1 -1
  28. omlish/lite/asyncs.py +5 -0
  29. omlish/lite/attrops.py +332 -0
  30. omlish/lite/cached.py +1 -1
  31. omlish/lite/maybes.py +2 -0
  32. omlish/lite/strings.py +0 -7
  33. omlish/lite/timing.py +4 -1
  34. omlish/logs/all.py +4 -0
  35. omlish/logs/base.py +138 -152
  36. omlish/logs/callers.py +3 -3
  37. omlish/logs/contexts.py +250 -0
  38. omlish/logs/infos.py +16 -5
  39. omlish/logs/modules.py +10 -0
  40. omlish/logs/protocols.py +7 -7
  41. omlish/logs/std/adapters.py +9 -5
  42. omlish/logs/std/records.py +26 -11
  43. omlish/logs/times.py +4 -6
  44. omlish/manifests/loading.py +6 -0
  45. omlish/os/atomics.py +1 -1
  46. omlish/reflect/types.py +22 -0
  47. omlish/sockets/server/server.py +1 -1
  48. {omlish-0.0.0.dev425.dist-info → omlish-0.0.0.dev427.dist-info}/METADATA +2 -2
  49. {omlish-0.0.0.dev425.dist-info → omlish-0.0.0.dev427.dist-info}/RECORD +53 -52
  50. omlish/lite/logs.py +0 -4
  51. omlish/lite/reprs.py +0 -85
  52. {omlish-0.0.0.dev425.dist-info → omlish-0.0.0.dev427.dist-info}/WHEEL +0 -0
  53. {omlish-0.0.0.dev425.dist-info → omlish-0.0.0.dev427.dist-info}/entry_points.txt +0 -0
  54. {omlish-0.0.0.dev425.dist-info → omlish-0.0.0.dev427.dist-info}/licenses/LICENSE +0 -0
  55. {omlish-0.0.0.dev425.dist-info → omlish-0.0.0.dev427.dist-info}/top_level.txt +0 -0
omlish/logs/infos.py CHANGED
@@ -9,8 +9,19 @@ import typing as ta
9
9
  ##
10
10
 
11
11
 
12
+ class _LoggingContextInfo:
13
+ def __mro_entries__(self, bases):
14
+ return ()
15
+
16
+
17
+ LoggingContextInfo: type = ta.cast(ta.Any, _LoggingContextInfo())
18
+
19
+
20
+ ##
21
+
22
+
12
23
  @ta.final
13
- class LoggingSourceFileInfo(ta.NamedTuple):
24
+ class LoggingSourceFileInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
14
25
  file_name: str
15
26
  module: str
16
27
 
@@ -36,7 +47,7 @@ class LoggingSourceFileInfo(ta.NamedTuple):
36
47
 
37
48
 
38
49
  @ta.final
39
- class LoggingThreadInfo(ta.NamedTuple):
50
+ class LoggingThreadInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
40
51
  ident: int
41
52
  native_id: ta.Optional[int]
42
53
  name: str
@@ -54,7 +65,7 @@ class LoggingThreadInfo(ta.NamedTuple):
54
65
 
55
66
 
56
67
  @ta.final
57
- class LoggingProcessInfo(ta.NamedTuple):
68
+ class LoggingProcessInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
58
69
  pid: int
59
70
 
60
71
  @classmethod
@@ -68,7 +79,7 @@ class LoggingProcessInfo(ta.NamedTuple):
68
79
 
69
80
 
70
81
  @ta.final
71
- class LoggingMultiprocessingInfo(ta.NamedTuple):
82
+ class LoggingMultiprocessingInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
72
83
  process_name: str
73
84
 
74
85
  @classmethod
@@ -86,7 +97,7 @@ class LoggingMultiprocessingInfo(ta.NamedTuple):
86
97
 
87
98
 
88
99
  @ta.final
89
- class LoggingAsyncioTaskInfo(ta.NamedTuple):
100
+ class LoggingAsyncioTaskInfo(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
90
101
  name: str
91
102
 
92
103
  @classmethod
omlish/logs/modules.py ADDED
@@ -0,0 +1,10 @@
1
+ # @omlish-lite
2
+ import logging
3
+ import typing as ta
4
+
5
+
6
+ ##
7
+
8
+
9
+ def get_module_logger(mod_globals: ta.Mapping[str, ta.Any]) -> logging.Logger:
10
+ return logging.getLogger(mod_globals.get('__name__'))
omlish/logs/protocols.py CHANGED
@@ -16,16 +16,16 @@ class LoggerLike(ta.Protocol):
16
16
 
17
17
  #
18
18
 
19
- def debug(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
19
+ def log(self, level: LogLevel, msg: str, /, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
20
20
 
21
- def info(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
21
+ def debug(self, msg: str, /, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
22
22
 
23
- def warning(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
23
+ def info(self, msg: str, /, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
24
24
 
25
- def error(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
25
+ def warning(self, msg: str, /, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
26
26
 
27
- def exception(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
27
+ def error(self, msg: str, /, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
28
28
 
29
- def critical(self, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
29
+ def exception(self, msg: str, /, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
30
30
 
31
- def log(self, level: LogLevel, msg: str, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
31
+ def critical(self, msg: str, /, *args: ta.Any, **kwargs: ta.Any) -> None: ... # noqa
@@ -1,10 +1,12 @@
1
+ # ruff: noqa: UP007
1
2
  # @omlish-lite
2
3
  import logging
3
4
  import typing as ta
4
5
 
5
6
  from ..base import Logger
6
- from ..base import LoggingContext
7
- from ..base import LogLevel
7
+ from ..base import LoggingMsgFn
8
+ from ..contexts import CaptureLoggingContext
9
+ from ..levels import LogLevel
8
10
  from .records import LoggingContextLogRecord
9
11
 
10
12
 
@@ -24,15 +26,17 @@ class StdLogger(Logger):
24
26
  def get_effective_level(self) -> LogLevel:
25
27
  return self._std.getEffectiveLevel()
26
28
 
27
- def _log(self, ctx: LoggingContext, msg: str, *args: ta.Any) -> None:
29
+ def _log(self, ctx: CaptureLoggingContext, msg: ta.Union[str, tuple, LoggingMsgFn], *args: ta.Any) -> None:
28
30
  if not self.is_enabled_for(ctx.level):
29
31
  return
30
32
 
31
- ctx.build_caller()
33
+ ctx.capture()
34
+
35
+ ms, args = self._prepare_msg_args(msg, *args)
32
36
 
33
37
  rec = LoggingContextLogRecord(
34
38
  name=self._std.name,
35
- msg=msg,
39
+ msg=ms,
36
40
  args=args,
37
41
 
38
42
  _logging_context=ctx,
@@ -5,8 +5,9 @@ import logging
5
5
  import sys
6
6
  import typing as ta
7
7
 
8
- from ..base import LoggingContext
9
- from ..base import LoggingExcInfoTuple
8
+ from ...lite.check import check
9
+ from ..contexts import LoggingContext
10
+ from ..contexts import LoggingExcInfoTuple
10
11
  from ..warnings import LoggingSetupWarning
11
12
 
12
13
 
@@ -268,19 +269,33 @@ class LoggingContextLogRecord(logging.LogRecord):
268
269
  self.msecs: float = times.msecs
269
270
  self.relativeCreated: float = times.relative_created
270
271
 
271
- thread = ctx.thread
272
- self.thread: ta.Optional[int] = thread.ident
273
- self.threadName: ta.Optional[str] = thread.name
272
+ if logging.logThreads:
273
+ thread = check.not_none(ctx.thread())
274
+ self.thread: ta.Optional[int] = thread.ident
275
+ self.threadName: ta.Optional[str] = thread.name
276
+ else:
277
+ self.thread = None
278
+ self.threadName = None
274
279
 
275
- process = ctx.process
276
- self.process: ta.Optional[int] = process.pid
280
+ if logging.logProcesses:
281
+ process = check.not_none(ctx.process())
282
+ self.process: ta.Optional[int] = process.pid
283
+ else:
284
+ self.process = None
277
285
 
278
- if (mp := ctx.multiprocessing) is not None:
279
- self.processName: ta.Optional[str] = mp.process_name
286
+ if logging.logMultiprocessing:
287
+ if (mp := ctx.multiprocessing()) is not None:
288
+ self.processName: ta.Optional[str] = mp.process_name
289
+ else:
290
+ self.processName = None
280
291
  else:
281
292
  self.processName = None
282
293
 
283
- if (at := ctx.asyncio_task) is not None:
284
- self.taskName: ta.Optional[str] = at.name
294
+ # Absent <3.12
295
+ if getattr(logging, 'logAsyncioTasks', None):
296
+ if (at := ctx.asyncio_task()) is not None:
297
+ self.taskName: ta.Optional[str] = at.name
298
+ else:
299
+ self.taskName = None
285
300
  else:
286
301
  self.taskName = None
omlish/logs/times.py CHANGED
@@ -4,13 +4,14 @@ import logging
4
4
  import time
5
5
  import typing as ta
6
6
 
7
+ from .infos import LoggingContextInfo
7
8
  from .warnings import LoggingSetupWarning
8
9
 
9
10
 
10
11
  ##
11
12
 
12
13
 
13
- class LoggingTimeFields(ta.NamedTuple):
14
+ class LoggingTimeFields(LoggingContextInfo, ta.NamedTuple): # type: ignore[misc]
14
15
  """Maps directly to stdlib `logging.LogRecord` fields, and must be kept in sync with it."""
15
16
 
16
17
  created: float
@@ -72,16 +73,13 @@ class UnexpectedLoggingStartTimeWarning(LoggingSetupWarning):
72
73
 
73
74
 
74
75
  def _check_logging_start_time() -> None:
75
- x = LoggingTimeFields.get_std_start_time_ns()
76
- ns = time.time_ns()
77
-
78
- if x > ns:
76
+ if (x := LoggingTimeFields.get_std_start_time_ns()) < (t := time.time()):
79
77
  import warnings # noqa
80
78
 
81
79
  warnings.warn(
82
80
  f'Unexpected logging start time detected: '
83
81
  f'get_std_start_time_ns={x}, '
84
- f'time.time_ns()={ns}',
82
+ f'time.time()={t}',
85
83
  UnexpectedLoggingStartTimeWarning,
86
84
  )
87
85
 
@@ -8,6 +8,12 @@ TODO:
8
8
  - TypeMap style weak cache of issubclass queries
9
9
  - wait.. lazily load the class for virtual subclass queries? xor support virtual bases?
10
10
  - weakref class dict keys?
11
+ - cheap_discover_package_root_dirs: Seq[str] | None = None or smth
12
+ - maaaybe.. add an EnvVar? OMLISH_MANIFEST_ROOT_DIRS? if set to : delimited, turns off package disco and overrides
13
+ scan_root_dirs
14
+ - currently the cli cant subprocess itself and keep manifests working
15
+ - EnvVar cls is already lite
16
+
11
17
  """
12
18
  import dataclasses as dc
13
19
  import importlib.machinery
omlish/os/atomics.py CHANGED
@@ -7,8 +7,8 @@ import tempfile
7
7
  import typing as ta
8
8
 
9
9
  from ..lite.abstract import Abstract
10
+ from ..lite.attrops import attr_repr
10
11
  from ..lite.check import check
11
- from ..lite.strings import attr_repr
12
12
 
13
13
 
14
14
  AtomicPathSwapKind = ta.Literal['dir', 'file']
omlish/reflect/types.py CHANGED
@@ -407,6 +407,16 @@ class ReflectTypeError(TypeError):
407
407
  pass
408
408
 
409
409
 
410
+ _TRIVIAL_TYPES: set[ta.Any] = {
411
+ bool,
412
+ int,
413
+ str,
414
+ float,
415
+ object,
416
+ type(None),
417
+ }
418
+
419
+
410
420
  class Reflector:
411
421
  def __init__(
412
422
  self,
@@ -448,12 +458,24 @@ class Reflector:
448
458
  if obj is ta.Any:
449
459
  return ANY
450
460
 
461
+ ##
462
+ # Trivial
463
+
464
+ try:
465
+ if obj in _TRIVIAL_TYPES:
466
+ return obj
467
+ except TypeError:
468
+ pass
469
+
451
470
  ##
452
471
  # Already a Type?
453
472
 
454
473
  if isinstance(obj, (ta.TypeVar, TypeInfo)): # noqa
455
474
  return obj
456
475
 
476
+ ##
477
+ # It's a type
478
+
457
479
  oty = type(obj)
458
480
 
459
481
  ##
@@ -20,7 +20,7 @@ from .handlers import SocketServerHandler
20
20
  ##
21
21
 
22
22
 
23
- class SocketServer(Abstract):
23
+ class SocketServer:
24
24
  _DEFAULT_LOGGER = logging.getLogger('.'.join([__name__, 'SocketServer']))
25
25
 
26
26
  def __init__(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: omlish
3
- Version: 0.0.0.dev425
3
+ Version: 0.0.0.dev427
4
4
  Summary: omlish
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -296,7 +296,7 @@ examples are:
296
296
  - **wrapt** - For (optionally-enabled) injector circular proxies.
297
297
  - **greenlet** - For some gnarly stuff like the
298
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/omlish/io/trampoline.py).
299
+ [io trampoline](https://github.com/wrmsr/omlish/blob/master/omextra/io/trampoline.py).
300
300
  - **sqlalchemy** - Parts of the codebase use SQLAlchemy for db stuff, but it is being migrated away from in favor of the
301
301
  internal api. It will however likely still remain as an optional dep for the api adapter.
302
302
 
@@ -1,7 +1,7 @@
1
1
  omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
2
- omlish/__about__.py,sha256=X82wQzcYaOUP7PxN1Qxpz_9huG8MWZR4xCoCN9Uz26c,3575
2
+ omlish/__about__.py,sha256=QkXaBAuv7ZX9gYuayTSwd9nc5AxEetkjHMvq5rsSLtM,3575
3
3
  omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
4
- omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
4
+ omlish/c3.py,sha256=ZNIMl1kwg3qdei4DiUrJPQe5M81S1e76N-GuNSwLBAE,8683
5
5
  omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
6
6
  omlish/check.py,sha256=DDNZnLxNoY2Y7N0Hz7nMR1q912ZzRLoBgOJVLcsXVws,6575
7
7
  omlish/datetimes.py,sha256=7dh4aiVRWXWECH3JLF8kkRbgJ1qyGlAlQVp1vCXdTBE,2168
@@ -118,10 +118,10 @@ omlish/configs/shadow.py,sha256=mIPXMpEWg0rTKYh0yKskN8NhhCBw6d83peiVS_p8PKQ,2273
118
118
  omlish/configs/types.py,sha256=vANNURlIos3fR3fgcL2EMW5t6RevzSHU-BnVZgwIDOM,110
119
119
  omlish/configs/processing/__init__.py,sha256=eUBm0L6oZuwwM4vEuYx0pcCNdSTXaF7luur7jQz1qoc,210
120
120
  omlish/configs/processing/all.py,sha256=BCoWKxywH5mViWQrKmLHry8faS45ZW9jItaypPK197c,967
121
- omlish/configs/processing/flattening.py,sha256=wUWwJvH155ej818Cioj5Z2LHTcN_JE1Nk2VUHWa70bc,5066
121
+ omlish/configs/processing/flattening.py,sha256=q2b9L4R_GbeAi94NInycxpZ96KRnY1KFnOV7NVrwxUc,5066
122
122
  omlish/configs/processing/inheritance.py,sha256=1h6iJYeRjWwfAXltnBprvi55LG4HOeGGls3-YwhX8uY,1224
123
123
  omlish/configs/processing/matching.py,sha256=FNgWaDOZ72Ay9rsYdHK3E_KdEi07mMEVdAfwf817dYo,1520
124
- omlish/configs/processing/merging.py,sha256=uzOUhta-fDrmHXd5zjaPfPImKmrJJbDsNfVU45F4VP8,697
124
+ omlish/configs/processing/merging.py,sha256=ZGc-8QA9tjqgXnQ80ItfOMdmAKAEAOxtWEGFjPikrk4,711
125
125
  omlish/configs/processing/names.py,sha256=9nRVBhZ0uY-J4591QcgUHla4MZAEux0-TWxGO1qaTrA,1099
126
126
  omlish/configs/processing/rewriting.py,sha256=ofPYub5ftZ6A_bkAW71w2wDmSbZ5ULI3Ip190fzBl4Q,4252
127
127
  omlish/configs/processing/strings.py,sha256=Iw85H_AE2TG8vdpbgwhye-aqz5Hkn4J9mM32FdXEiGo,832
@@ -158,7 +158,7 @@ omlish/dataclasses/impl/api/fields/metadata.py,sha256=klwez7mFsIiIQ3hxvXx5zhC53F
158
158
  omlish/dataclasses/impl/concerns/__init__.py,sha256=4Goga5wAOAbK6KcoHWC8jDC8M9ywgH7PfmXXxgCYCC8,208
159
159
  omlish/dataclasses/impl/concerns/abc.py,sha256=ok2qE9ltgZXdf34YtLElTr7A-IYErJvVfP1-G2t2Sbc,391
160
160
  omlish/dataclasses/impl/concerns/copy.py,sha256=0QoQkNNptD0mJdc4TJlD7lpDUm3kJNOH_EsqMLx_HB4,1762
161
- omlish/dataclasses/impl/concerns/doc.py,sha256=VVVEEvO-YpKOqUnhIXVTLOifmJedaB1AOKmhxvD8L0c,1727
161
+ omlish/dataclasses/impl/concerns/doc.py,sha256=bnc45xWOxJbhgeGGDAVZfV7nxsu3yP2NpFlay2ux7xQ,1732
162
162
  omlish/dataclasses/impl/concerns/eq.py,sha256=PI0KKzJyIziRLgcjl8efjapf8baaRCdcuyGW83bCpEo,1720
163
163
  omlish/dataclasses/impl/concerns/fields.py,sha256=JTO13HKs-swKnM7Qtb6El7FAfdLwxVLqULXAwotjus0,3318
164
164
  omlish/dataclasses/impl/concerns/frozen.py,sha256=DTYB6aIZEqzYvWd3n6VF4Z40apWVOYKFbiYlTiGzaYE,4511
@@ -208,7 +208,7 @@ omlish/diag/asts.py,sha256=MWh9XAG3m9L10FIJCyoNT2aU4Eft6tun_x9K0riq6Dk,3332
208
208
  omlish/diag/debug.py,sha256=ClED7kKXeVMyKrjGIxcq14kXk9kvUJfytBQwK9y7c4Q,1637
209
209
  omlish/diag/lslocks.py,sha256=VuA4MNNqXTcnHWsJvulGM6pNJRKmlXFXUZTfXpY0V6g,1750
210
210
  omlish/diag/lsof.py,sha256=5N5aZQ7UqEBgV-hj3_a8QcvALOeLlVb8otqF2hvucxY,9107
211
- omlish/diag/procfs.py,sha256=L-n-U8s76QwWpzwkS4AP7CJp2_V-sy3QXvYKVTFxcAE,9678
211
+ omlish/diag/procfs.py,sha256=S9GVAw193vGr89X6g2xfB8Rvmm_0eVim-6umxWG6pBE,9678
212
212
  omlish/diag/procstats.py,sha256=EJEe2Zc58ykBoTfqMXro7H52aQa_pd6uC2hsIPFceso,825
213
213
  omlish/diag/ps.py,sha256=MEpMU6fbkh0bSWrOHh_okOa0JDTUSUQUVSYBdh1TGvE,1672
214
214
  omlish/diag/pycharm.py,sha256=9Mgn5T2ZdlEUL3VV-GzVmCBs_ZtIpLwaUzP6pgHEUEo,4712
@@ -216,7 +216,7 @@ omlish/diag/pydevd.py,sha256=WPfDgsLe-zCOpnPMlAYEVliTQxk4jmcOKvI19nd-SAI,7589
216
216
  omlish/diag/threads.py,sha256=sjtlTl41wxssoVCDkBB6xeLF-9kJEK3eA6hmSFWJSQA,3643
217
217
  omlish/diag/timers.py,sha256=cxX3GgjTIjBx9DI4pzCCO5Hfqb1TM3uo22yim7kjfRU,3831
218
218
  omlish/diag/_pycharm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
- omlish/diag/_pycharm/runhack.py,sha256=f4R9SOH0nDfO2WqPh0xQ9-45qOLrtTVysS-hSwtbdOA,37864
219
+ omlish/diag/_pycharm/runhack.py,sha256=IxawPyqrPfY1fpV1D_9dZXxny89fVSR3RlmqlbaRctw,37869
220
220
  omlish/diag/replserver/__init__.py,sha256=uLo6V2aQ29v9z3IMELlPDSlG3_2iOT4-_X8VniF-EgE,235
221
221
  omlish/diag/replserver/__main__.py,sha256=LmU41lQ58bm1h4Mx7S8zhE_uEBSC6kPcp9mn5JRpulA,32
222
222
  omlish/diag/replserver/console.py,sha256=6gBq6RtT2axXX18yNzSYjeFFbpSksmDyhXYKbOZkq-Y,7415
@@ -246,7 +246,7 @@ omlish/formats/cbor.py,sha256=o_Hbe4kthO9CeXK-FySrw0dHVlrdyTo2Y8PpGRDfZ3c,514
246
246
  omlish/formats/cloudpickle.py,sha256=16si4yUp_pAdDWGECAWf6HLA2PwSANGGgDoMLGZUem8,579
247
247
  omlish/formats/codecs.py,sha256=n_02fv1Qk2ixG9vDkTZKdRHGWPKnvDBDdOMVKfnElOI,1641
248
248
  omlish/formats/dotenv.py,sha256=91_uoLKCntDqcqyyRMOCKvVkx9aC2nkLMuAH4rit8NI,19350
249
- omlish/formats/logfmt.py,sha256=p1DYPKelb_XtLlRpUvCx7y7O2uJW9jMiZg4ijqknB-M,2494
249
+ omlish/formats/logfmt.py,sha256=i_pKnzFFyNAcPiqC4FiTYPC6tJujlaGuw94V2YNVkf8,2639
250
250
  omlish/formats/pickle.py,sha256=jdp4E9WH9qVPBE3sSqbqDtUo18RbTSIiSpSzJ-IEVZw,529
251
251
  omlish/formats/props.py,sha256=orlqpFG88hL39apzaAOHmNooQv-kbnXX2WggZjdI-U8,18934
252
252
  omlish/formats/repr.py,sha256=kYrNs4o-ji8nOdp6u_L3aMgBMWN1ZAZJSAWgQQfStSQ,414
@@ -277,10 +277,10 @@ omlish/formats/json/backends/ujson.py,sha256=U3iOlAURfiCdXbiNlXfIjDdtJDbDaLZsSuZ
277
277
  omlish/formats/json/stream/__init__.py,sha256=LOQvJGUEqvm1exve1hnWoO3mlMadShaO2Cy7XjCiWbA,829
278
278
  omlish/formats/json/stream/building.py,sha256=dyrOms7Yskayi0-MG4e5-5ilN08HIekNEogJh5C4hhs,2549
279
279
  omlish/formats/json/stream/errors.py,sha256=c8M8UAYmIZ-vWZLeKD2jMj4EDCJbr9QR8Jq_DyHjujQ,43
280
- omlish/formats/json/stream/lexing.py,sha256=ewdoBVSvBFXO9fJB-zDHW3rJPautxlsmWUJzpV1FwTY,7451
281
- omlish/formats/json/stream/parsing.py,sha256=UClKJn-BkZzcvJFgzGdYbH7RszY5pKstyKuk4-NVVXs,6442
280
+ omlish/formats/json/stream/lexing.py,sha256=YVpB_MF_lzYovMmKvfu3HNpuvGk_ZTVPQICHmfQa7BA,9004
281
+ omlish/formats/json/stream/parsing.py,sha256=c7958eYT5-KO8VFIVGBM-MowuaJ6UNTt7l2tTlRKHek,6468
282
282
  omlish/formats/json/stream/rendering.py,sha256=U0MyVoYRDv7JLI8e7ItwmxyKnqYhKvfJY4-ZBQ5lHzA,3694
283
- omlish/formats/json/stream/utils.py,sha256=OJnByJMhisV4RUgwu51v3q6Qi2sdPiwBE4oqhZs0bTg,1440
283
+ omlish/formats/json/stream/utils.py,sha256=qub586Z-dsIg3kvMMtBQfvAa_B6IL-xuDj2dA3Mcql0,1458
284
284
  omlish/formats/json5/Json5.g4,sha256=2V3IB8W1R45mFax5Qy4laAwcHJ9oFPWHc-r8qy9-YE4,2381
285
285
  omlish/formats/json5/__init__.py,sha256=3rwU5w5N_-dYME5kwMvXgexl-Vvo4BAmOg1N-I9Wf0M,194
286
286
  omlish/formats/json5/codec.py,sha256=mywk74R7F77z7xprQd19qoJZ8sNPUEkiBD9jNCKTh0c,1603
@@ -300,7 +300,7 @@ omlish/formats/toml/parser.py,sha256=aaZlEEPk0IQhfux_kjCY2K5mYYYDPNQ-4wWgZXskoAM
300
300
  omlish/formats/toml/writer.py,sha256=9NT8sRy3I9KubxFx56Qbislvrdtbd23rEuBT-GSdUYA,3232
301
301
  omlish/funcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
302
  omlish/funcs/builders.py,sha256=ZSBQS2xqriXp5x0t074EEZvuTmMp4Yue2YGBoTLAioo,4044
303
- omlish/funcs/genmachine.py,sha256=D9dChaliNBIjYE6lJP5ctcVQUCffNBhceyaaLvBJ7ns,2578
303
+ omlish/funcs/genmachine.py,sha256=YRRW5FwhUgtGhi482tdlZbgz0aLGXtLB4Y0gOZGcP2w,2578
304
304
  omlish/funcs/match.py,sha256=8OTTnJf4kL9rWeCIDAOv6_JEeC-wrezjaTkl4qhMQ7s,6205
305
305
  omlish/funcs/pairs.py,sha256=XhYTJdqooAJKeoGZmEaiKYeFRq5-Dj2_y92IdBl_C20,4371
306
306
  omlish/funcs/pipes.py,sha256=E1dQZMBmgT2qautG1vEqy5v3QBsO2Nzryv33j4YAngA,2520
@@ -327,7 +327,7 @@ omlish/http/jwt.py,sha256=F9-1syqS7qR6C_z06tmz9zM4CXbKrw6s7w3NIPGdyuU,4354
327
327
  omlish/http/multipart.py,sha256=qG86clspTdr3_jx-3KL9GNQ1LjuzHosTYtvR2jiN0OI,2246
328
328
  omlish/http/parsing.py,sha256=9qwTYFmg9b1WESKOK5IzTYZY8RRXQCKtmgNodiAmiSs,14381
329
329
  omlish/http/sessions.py,sha256=TfTJ_j-6c9PelG_RmijEwozfaVm3O7YzgtFvp8VzQqM,4799
330
- omlish/http/sse.py,sha256=NwJnQj-hFXAkadXKhUuHSnbXHwDVJjhzfdkkHQ-prQo,2320
330
+ omlish/http/sse.py,sha256=Z16cSD6L8YIA0JRMS2BYP3oPwUE3L9Vs-tIDuO_Vp98,2320
331
331
  omlish/http/urllib.py,sha256=LwtMXDkjb9tYnOi6iApizHXpCiyjB1r72ePo_Nzv1vQ,466
332
332
  omlish/http/versions.py,sha256=Lwk6FztKH7c5zuc7NFWxPVULuLeeQp5-NFJInY6r-Zo,420
333
333
  omlish/http/wsgi.py,sha256=1JpfrY2JrQ0wrEVE0oLdQMWZw8Zcx0b4_9f3VmH4JKA,1070
@@ -367,24 +367,24 @@ omlish/inject/origins.py,sha256=-qXa18rIIkNwBdTrvASRDjgPYnoY6n6OPC222jJDrXg,551
367
367
  omlish/inject/overrides.py,sha256=ybEcq9cDf6kvqu5mqnwi6Evj0MFjKNeE3r0oUlGw5E4,546
368
368
  omlish/inject/privates.py,sha256=CyE-hvQ-F_uyCzcwfdiYVtfm9IF1WZvMDOYilFyZmWk,658
369
369
  omlish/inject/providers.py,sha256=GDjSEN6iLsc-Tdu_OCPvFHWu4yP0Vn0pAyH_xjw1DPg,783
370
- omlish/inject/scopes.py,sha256=MqGus6vCogQVRJlZUnoXFwEeHuGMSYv2NF23_OFxWHE,1995
370
+ omlish/inject/scopes.py,sha256=3N7rnX7LyFabDfiN-qC9M-l9EPbPQuf8dBvdVNkaSr8,1891
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
376
  omlish/inject/impl/elements.py,sha256=PM_055moROskSTQqmohEa6I0tt1OQ-VRNArXCMG6vyk,5947
377
- omlish/inject/impl/injector.py,sha256=wBzA2T0HT6yRKzp3Fb0334v8RZJOPaevH4UVmOxjACI,7576
377
+ omlish/inject/impl/injector.py,sha256=jac-WggKeNJoZ-kY8-pFJsH_A3Siyv4Yng4BJk-9Itk,7577
378
378
  omlish/inject/impl/inspect.py,sha256=reXkNsjyvJXva5379tHTWklVK0vzqGLP0BgI_4VVPgQ,3116
379
- omlish/inject/impl/multis.py,sha256=j2QHSpJp0jPv10yZEZJwi0w62kXFQ25gkHa026xv4-Q,2053
379
+ omlish/inject/impl/multis.py,sha256=Y287xntr1wBNYpwQBc0f_Ca7UkXjkscKhgGHZK_zdbg,2053
380
380
  omlish/inject/impl/origins.py,sha256=dgGdkoMN6I4DZrWjlpZYijeFsrF6Up1WPq_QSAgTtuQ,1676
381
381
  omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCFQ,2613
382
- omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
383
- omlish/inject/impl/proxy.py,sha256=dOAPh1DAmSWLg_oGDxivUpVgltec2mvKCvlvQJp8IRo,1643
382
+ omlish/inject/impl/providers.py,sha256=G3qUYlk05-xzvF6BiEGrtFNfzLYMC9lebOg_Wl1oFL4,2273
383
+ omlish/inject/impl/proxy.py,sha256=S1qNn-5pbsAj9hhasQZ9nnFSCX8SuAYCcBOZ6BtKxlk,1641
384
384
  omlish/inject/impl/scopes.py,sha256=sL250qM4-hCwwO28GdynM02OMb09FMmIvo_ifYhNhj0,5909
385
385
  omlish/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
386
386
  omlish/io/abc.py,sha256=M40QB2udYpCEqmlxCcHv6FlJYJY6ymmJQBlaklYv0U8,1256
387
- omlish/io/buffers.py,sha256=C9GCeZnZf6o-WrjUdEfHNmjwt1nqJzpDtURtgu5DKok,7293
387
+ omlish/io/buffers.py,sha256=WRuojN-EICJ9eIhy6U2Tw2-oTBIwHTBhN86wQiD2s88,7293
388
388
  omlish/io/fileno.py,sha256=_W3qxkIKpnabn1_7kgmKdx0IsPF3R334xWnF_TtkEj4,185
389
389
  omlish/io/pyio.py,sha256=xmHTV-sn7QZThWCVBo6lTM7dhgsQn7m2L0DqRwdF2-8,94509
390
390
  omlish/io/compress/__init__.py,sha256=fJFPT4ONfqxmsA4jR6qbMt2woIyyEgnc_qOWK9o1kII,247
@@ -415,12 +415,12 @@ 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=2JPpMyci4K-fL7NuYp0J4GYVs93B5WjQi4H96efff6Y,9976
418
+ omlish/lang/__init__.py,sha256=Ty5DkVFyGztlpYVEcEP1yTvLbflRFTo6IThN8dPMnbI,10096
419
419
  omlish/lang/asyncs.py,sha256=g47VwMk3LwCcOhZ_uJqXVKmAi85Z0m9l2m37ipuy50s,1789
420
- omlish/lang/attrs.py,sha256=F3l7zV0xdVX4AdBiEiGkBU9ioNVsXWF9bqZSUsr9s2M,5144
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
423
- omlish/lang/collections.py,sha256=XI76WcSi4SclWmEGirErg7EzQUfjtmiK2xSK7jJISzY,2528
423
+ omlish/lang/collections.py,sha256=kVMp1JJ6ycvKzuiOmf2ZF5Eg2mm3vJGPjkUcV_IACMk,2528
424
424
  omlish/lang/comparison.py,sha256=MOwEG0Yny-jBPHO9kQto9FSRyeNpQW24UABsghkrHxY,1356
425
425
  omlish/lang/contextmanagers.py,sha256=daUaNgoFHSMaz2E9FVqgPLQOLrGf9BjMHtanVnyWvDI,9036
426
426
  omlish/lang/datetimes.py,sha256=01tg21QOx-PWDlm-CSFTalym3vpqF0EKzeinmtcVNoU,379
@@ -429,7 +429,7 @@ omlish/lang/enums.py,sha256=F9tflHfaAoV2MpyuhZzpfX9-H55M3zNa9hCszsngEo8,111
429
429
  omlish/lang/errors.py,sha256=shcS-NCnEUudF8qC_SmO2TQyjivKlS4TDjaz_faqQ0c,44
430
430
  omlish/lang/functions.py,sha256=b8Rf4X7XeahvIXosf-sN_-18VSOuyoJMkJG2dPCYvv8,5494
431
431
  omlish/lang/generators.py,sha256=nJiSmDpsfPiypGzJ8qlOO7-BUnCsrAeDow9mhtGgBio,5196
432
- omlish/lang/iterables.py,sha256=iWTte3wXQg4xkQ-O-yz20Kjy6YTJbNWuras2UbZ0dhg,3371
432
+ omlish/lang/iterables.py,sha256=o_s8ouaJrdUqEVl2_bzJk5CVdabmrywXY0gPn7xss3w,3371
433
433
  omlish/lang/lazyglobals.py,sha256=YfPtWgNEa0ULtbIiQIQ12pbafUwd6INQRw_PFcAabjo,2282
434
434
  omlish/lang/maybes.py,sha256=ES1LK-9ebh2GNKZ7YfrS4OEoYHFhfiWkme4wU6Blzo4,77
435
435
  omlish/lang/maysync.py,sha256=S2Q_rGC4AxRa1UsGJdSzZsYpgOcX9Y8ZmYGA9v8OWn8,1635
@@ -445,14 +445,14 @@ omlish/lang/sys.py,sha256=KPe1UOXk1VxlOYt_aLmhN0KqsA4wnP-4nm4WEwO49pw,411
445
445
  omlish/lang/typing.py,sha256=ZN4t8oGSSknf_T1HbfqVQ7Y9OOZ1RkikYihNxdBlTFQ,3733
446
446
  omlish/lang/cached/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
447
447
  omlish/lang/cached/function.py,sha256=epDPy9WyGc_VaKTrEQJ3dZun-NLsvdvbbNd7jbaUM2c,11730
448
- omlish/lang/cached/property.py,sha256=WHYyg4-6EA86TcNMfbXTjVhjEZPc0kngt9hfY3WN5w8,2768
448
+ omlish/lang/cached/property.py,sha256=a4E8knrNk5LDcaW2M39RQH2Y8oqjvOm-Rps6jIJ_oeY,2780
449
449
  omlish/lang/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
450
450
  omlish/lang/classes/abstract.py,sha256=ALHIEL1ZFeXPkrxUlAm9pFH6KmWPSPXG5UIjn-k_kLs,1715
451
451
  omlish/lang/classes/bindable.py,sha256=gviEabI5gEx0Rpu4G0LDWaD4N_VO1WUeFs1_XEisoAE,1233
452
452
  omlish/lang/classes/namespaces.py,sha256=RVecCT38W5h6rjf5fYBLvomyDwwFqPRWjhs40gaLHPE,3933
453
453
  omlish/lang/classes/protocols.py,sha256=T98ZsHLgzw8hPvvNluxoreevoF8fD4zs8SwcnTXkLuY,701
454
454
  omlish/lang/classes/restrict.py,sha256=CUyvLpMYiQwTjpzo5sdG_lQxdeEIq2z2xSVNrsI9KfA,4126
455
- omlish/lang/classes/simple.py,sha256=9blmJdi4c15zyIEbNVjkA0ZTSImQbv4g0p2Il6knWAc,2539
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
458
  omlish/lang/imports/conditional.py,sha256=R-E47QD95mMonPImWlrde3rnJrFKCCkYz71c94W05sc,1006
@@ -463,16 +463,17 @@ omlish/lang/imports/traversal.py,sha256=pbFQIa880NGjSfcLsno2vE_G41_CLwDHb-7gWg2J
463
463
  omlish/lifecycles/__init__.py,sha256=zOuvV4pErPwxcKUSgshmME2Duw9GrjwckpNmW3FPKng,810
464
464
  omlish/lifecycles/abstract.py,sha256=1nMCFVislFq-boMD6TK9APIkRm_5OzcpSsDs2XnByVQ,2248
465
465
  omlish/lifecycles/base.py,sha256=sCmzj2F-JcFD2qDsjNOPhKSbDIJaT9CEKK19RqkP-sg,2462
466
- omlish/lifecycles/contextmanagers.py,sha256=kaqn_uhIGtyBACg6sqPV6_GBx1T2xkJV1REKKB6ofpM,2075
467
- omlish/lifecycles/controller.py,sha256=Es5GofurBMaxnfqHiF3wi0JE08AOX29dPwR_eDoJ1NU,4753
466
+ omlish/lifecycles/contextmanagers.py,sha256=42PCrvMF8TyhoWMwPxP1oliZpspGHwom3AJPguVwnI8,2078
467
+ omlish/lifecycles/controller.py,sha256=cvRnXj3EyT5aB_1pqwckScQhspRiPQmT2Whh2Z5S-z0,4756
468
468
  omlish/lifecycles/manager.py,sha256=92s1IH_gDP25PM5tFuPMP2hD_6s5fPi_VzZiDS5549g,5449
469
469
  omlish/lifecycles/states.py,sha256=6gTdY3hn7-1sJ60lA3GeMx5RVKvXtFBBXE4KEjoO1Hs,1297
470
470
  omlish/lifecycles/transitions.py,sha256=3IFdWGtAeoy3XRlIyW7yCKV4e4Iof9ytkqklGMRFYQs,1944
471
471
  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
- omlish/lite/asyncs.py,sha256=w-TYUpJE2UI5WluIYW3ij6tdBgH9CNDV6V6iKLPzMvo,296
475
- omlish/lite/cached.py,sha256=zC7yNW0XvQHwwoTuIGDdufDmhBZR6-vpjBOnFE9F7Ks,1301
474
+ omlish/lite/asyncs.py,sha256=MMRbC38mbsgBPovGLjq4iBdn74DjMVzGc4nVZxN_DUY,441
475
+ omlish/lite/attrops.py,sha256=ZtF-qeiqT0zw3q7h2UXHSqlF9Db2bQ9IgZj1p-kOiPI,8522
476
+ omlish/lite/cached.py,sha256=ocQcppTwGdSnKPYMz75VoH526UUT8YtDJeRczBX0-wI,1306
476
477
  omlish/lite/check.py,sha256=ytCkwZoKfOlJqylL-AGm8C2WfsWJd2q3kFbnZCzX3_M,13844
477
478
  omlish/lite/configs.py,sha256=4-1uVxo-aNV7vMKa7PVNhM610eejG1WepB42-Dw2xQI,914
478
479
  omlish/lite/contextmanagers.py,sha256=usDzBoNqJi98AccVlwgZoMvoBXOe9wyx2MreZtWhJy4,5863
@@ -480,43 +481,43 @@ omlish/lite/dataclasses.py,sha256=aRSCZz1jN_UI-CWJhN0SJeKxa-79vXNUZ6YOMgG31SE,36
480
481
  omlish/lite/imports.py,sha256=GyEDKL-WuHtdOKIL-cc8aFd0-bHwZFDEjAB52ItabX0,1341
481
482
  omlish/lite/inject.py,sha256=Z0d3dnjxt9czMFwWk_y-Yl7yItCUa5Nf1YRu4GkMA5k,29045
482
483
  omlish/lite/json.py,sha256=m0Ce9eqUZG23-H7-oOp8n1sf4fzno5vtK4AK_4Vc-Mg,706
483
- omlish/lite/logs.py,sha256=CWFG0NKGhqNeEgryF5atN2gkPYbUdTINEw_s1phbINM,51
484
484
  omlish/lite/marshal.py,sha256=J0VNr9_LjGLjxKW0wlZtIFnh_US7zwstCmtpe9Pk_D0,22969
485
- omlish/lite/maybes.py,sha256=gVPwTx0-ImPoYNR955vDWFNVxIZ0xNqry3P6jc6DByk,4392
485
+ omlish/lite/maybes.py,sha256=NusCpK0FVqkIutw6_Wldn69G5VyKYhat7SegBIQmGpk,4412
486
486
  omlish/lite/maysync.py,sha256=bxq6NSooAc70oACqRAWHDSgs6alrxSv1tiaRKTs32qA,14417
487
487
  omlish/lite/objects.py,sha256=HzN_4J6w6WDLKDrW8jSNUKgfAR5vUsB42rtSCu04oqQ,1921
488
488
  omlish/lite/pycharm.py,sha256=FRHGcCDo42UzZXqNwW_DkhI-6kb_CmJKPiQ8F6mYkLA,1174
489
489
  omlish/lite/reflect.py,sha256=aTRQJ-hgnyRxr0dFxivUTScmUgP7zcw_iDQZIsarG24,2119
490
- omlish/lite/reprs.py,sha256=2Bc7ukhKvYNTKmxPIuv9glZIph13C37y_W4fg9pBnu8,2006
491
490
  omlish/lite/resources.py,sha256=YNSmX1Ohck1aoWRs55a-o5ChVbFJIQhtbqE-XwF55Oc,326
492
491
  omlish/lite/runtime.py,sha256=J59skBq9kwo1H2s36jAk-k87eKPUtua6CmuXh-3dgmE,464
493
492
  omlish/lite/secrets.py,sha256=WskrvbswAfLuS92ehDKI4TOcs8yibDwWVAJKaulCXDQ,828
494
- omlish/lite/strings.py,sha256=QGxT1Yh4oI8ycsfeobxnjEhvDob_GiAKLeIhZwo1j24,1986
493
+ omlish/lite/strings.py,sha256=rapGrc2BrIDstAEJov3pG_30PimOIR7IFVYioyTi-MM,1831
495
494
  omlish/lite/timeouts.py,sha256=OLU9iju2pkk3niM20aPnmA6AqabFmW8zeLDu6WsuaxA,5008
496
- omlish/lite/timing.py,sha256=_43e0LF6FnMgVhmYUV-t-EXBOgP1mrAM8uhW5kn7MbY,194
495
+ omlish/lite/timing.py,sha256=KTlEa5PyT6BXf8AwGVWUNtoVgRx9zwSUrBQnkpygK78,262
497
496
  omlish/lite/types.py,sha256=QM9whf55r7TmmQBRApIWSlyVKsl1p_jcut_YheyZMFY,146
498
497
  omlish/lite/typing.py,sha256=m2CyJTz2OVOCPRvp-0UuEx7oleZgXqs3rYXijE0bTsA,1280
499
498
  omlish/lite/wrappers.py,sha256=d00Ls2kFHuogKd5wEBaU65VNCN10YXIZtiwu1mbMpmA,530
500
499
  omlish/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
501
- omlish/logs/all.py,sha256=osR6yehuVYwk9OL4kTAq-gl-NlsCo4wDa2cfOmew7ZA,1016
502
- omlish/logs/base.py,sha256=BOKgiimvHboKE9UTMKpRSeSZoZhhyf0TQ5u-mRozLWU,7071
503
- omlish/logs/callers.py,sha256=j6zq_cKdCrlG4O1ODgZPqUKmQ2ebmCnJrdzHmtffCtQ,2094
504
- omlish/logs/infos.py,sha256=-FRTuawNwvK2SBjNKby5IUsS0Q2o9H1q8tFTqDNeWIE,2348
500
+ omlish/logs/all.py,sha256=9VOobL0p3E_6QWsnBmlCPhxz5zqs-AiH4jvZR3--ZZA,1085
501
+ omlish/logs/base.py,sha256=LxDnvCDzZr9AfjO_5NmoE9z1Mqw_7meQ7WGgGYissXk,6649
502
+ omlish/logs/callers.py,sha256=tRj24LxlEimDGCplDVVJDvRSt_u72cgjnnvb0mdZgvU,2065
503
+ omlish/logs/contexts.py,sha256=apXaLOk7LlXNdz_gpF5zHhTLpFFBmB2_SHX8UVxopks,6537
504
+ omlish/logs/infos.py,sha256=VPx9VrcN1fCPnXjc8QCsMlww0fgEG3qdkzo2KhSxMwY,2716
505
505
  omlish/logs/levels.py,sha256=b3i-70OcvNMcOQBzg1IUHBPESfHz0uu5mi5t_jbwv1Y,1966
506
- omlish/logs/protocols.py,sha256=19Hre-98MWnN9oGz4O4RBczpwA5Slg15l9Y-ilbixgs,918
506
+ omlish/logs/modules.py,sha256=EFOqubbU5P0GW576OL6j9fmizNN2oyfpsp5YnKCoUgk,194
507
+ omlish/logs/protocols.py,sha256=8l5TgNUNgfrqYPA6dVijPFGLxzWhvgS4Cca64XHT0jo,939
507
508
  omlish/logs/standard.py,sha256=ppho-wDecGxUiRXOdCIlblmrQhqXZ0oQOGayy8N53XY,3237
508
- omlish/logs/times.py,sha256=l7ShVgsM4Y65m_gl_ldbQCcl7myFQ0czT_lJcu04yyM,2507
509
+ omlish/logs/times.py,sha256=ro2TSD_Xwq_cNN8f_FrEGfdhD4PTbh0PLSG13PGx39E,2571
509
510
  omlish/logs/utils.py,sha256=fKvP342qBmE8wwTgUQ8Tf0-ATVhCm90UYBQt2pk0044,1883
510
511
  omlish/logs/warnings.py,sha256=xyhDgiPy1p8Kp5D9sb_NZiBnQ26SUppaHqC27dtQzok,67
511
512
  omlish/logs/std/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
512
- omlish/logs/std/adapters.py,sha256=8Z3e9hZRz-8HpW3PnlTURAQLzGG7gb327P4tQ9AZSV8,853
513
+ omlish/logs/std/adapters.py,sha256=qRXusW8iGYF29C3cy1srb4pgJ0Fv5li8bUvnegxo9o8,1005
513
514
  omlish/logs/std/configs.py,sha256=aDQahqBJXJpmQBaxXVK5S2xi_I_nrLLcCLTq6Q2K6EQ,1037
514
515
  omlish/logs/std/filters.py,sha256=Z8tHOvBRiP-OYm2z5cwY-lYXRimNgferEARMwvwx5Pw,380
515
516
  omlish/logs/std/handlers.py,sha256=nYPKV6Kzz8Oeyw4-3ZdJKKEUfgubfmwzqr3RaCNcmS4,338
516
517
  omlish/logs/std/json.py,sha256=QJ5lywLsRsPyVno2nk2kOw-Z1z3bfrDiZzqcRUdWUMY,1382
517
518
  omlish/logs/std/noisy.py,sha256=hWpbseerZqlHdEPEajDTSmcRhx8LmmNAxz_7GBZAO9s,353
518
519
  omlish/logs/std/proxy.py,sha256=9MVV5kbj9nwl3KZGtrYCIb5XTpv33f33zZ7P_B58fX0,2394
519
- omlish/logs/std/records.py,sha256=TCpslKiIBYI2ZIvJWyABpa7Ovt-f4jpQYsYuHE2oYTA,10183
520
+ omlish/logs/std/records.py,sha256=muJA3KKjGm5mgsHXtOyrpaEZu553M-UviNgNvXdISXY,10718
520
521
  omlish/logs/typed/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
521
522
  omlish/logs/typed/bindings.py,sha256=H_B-3LTGFlBIWYDJ8rei1VMfInE8KrBwRo3bJ_BgFj8,18184
522
523
  omlish/logs/typed/contexts.py,sha256=MU1RqHtmYbnxoLfLhMZbTbRd-WfYEyeVo7_3VnG3rY0,4027
@@ -525,7 +526,7 @@ omlish/logs/typed/values.py,sha256=w8ukpJZ3lx_st7Mj7riP2squzGmMaz7OuUxw_NZCZsY,3
525
526
  omlish/manifests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
526
527
  omlish/manifests/base.py,sha256=wW-De-pU3cef-0vGsgo-ypftDwc3tCBxhRAzPtrdark,918
527
528
  omlish/manifests/globals.py,sha256=kVqQ-fT4kc7xWzLHoI731GviitFPv2v2yqw-p7t7Exs,2628
528
- omlish/manifests/loading.py,sha256=RUFRZ8ILU_aG11BYDpWAYlc--58HmlSYSLHkHqLUwd8,17208
529
+ omlish/manifests/loading.py,sha256=s6KnhdFQCsI2i0Rus1sMU0so2v8dUBnk59BJkSnxGt8,17514
529
530
  omlish/manifests/static.py,sha256=9BaPBLkuzxHmg5A-5k9BjjBFINCdmFOIu06dMFgCfz4,497
530
531
  omlish/manifests/types.py,sha256=NeOGuIVrcbqjCDbQ3MnCxxHAgHnw0CkWJsBzo230PWE,453
531
532
  omlish/marshal/__init__.py,sha256=cdRll_tPZaTBIY0yLejCXZdZB3fUVkIoDMb8aESLkl8,5981
@@ -597,7 +598,7 @@ omlish/multiprocessing/__init__.py,sha256=jwlWGOaSGcX8DkzyZwJ49nfkHocWWeKgKb7kMp
597
598
  omlish/multiprocessing/proxies.py,sha256=Jdl__dmerJwMhFw6FzcaEfFXTpZuB2cdAXwVjAv7rqc,489
598
599
  omlish/multiprocessing/spawn.py,sha256=3KkaZ5wBiJzw0qsC-pKsECqIGTFG2fSgzAjV12dT8Es,1883
599
600
  omlish/os/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
600
- omlish/os/atomics.py,sha256=eOCHAbZWkC9dCBLUZcmbRaqykiLICHBnoS8OuPBIyug,5291
601
+ omlish/os/atomics.py,sha256=sw-DCHh_l-Rw3KAJN8uU7Ktct_k2HdKDmmabfhulAJw,5291
601
602
  omlish/os/deathsig.py,sha256=k4Sa9nXQvn43k5DTPDzpX9q_Nfc2045dMEGh__rn__s,646
602
603
  omlish/os/environ.py,sha256=fDjnSO2Qz6lpvICx54JZpdPF-BxL4zKAWU3x_6UTxCI,3681
603
604
  omlish/os/fcntl.py,sha256=EUa4TkeqdKix-uIweRitIZsgT9ohY7OQ5QiIhUW9S0c,1512
@@ -625,7 +626,7 @@ omlish/reflect/__init__.py,sha256=omD3VLFQtYTwPxrTH6gLATQIax9sTGGKc-7ps96-q0g,12
625
626
  omlish/reflect/inspect.py,sha256=dUrVz8VfAdLVFtFpW416DxzVC17D80cvFb_g2Odzgq8,1823
626
627
  omlish/reflect/ops.py,sha256=F77OTaw0Uw020cJCWX_Q4kL3wvxlJ8jV8wz7BctGL_k,2619
627
628
  omlish/reflect/subst.py,sha256=_lfNS2m2UiJgqARQtmGLTGo7CrSm9OMvVzt6GWOEX6M,4590
628
- omlish/reflect/types.py,sha256=4cjvNzO4izfWF0YQXnrhoAo2Mw6t2-HQj1vjplx1UOU,15511
629
+ omlish/reflect/types.py,sha256=IqqcM9vsIsEzEMZKwuoSKDfTuAXIxIo96sJ-PHLQ2r4,15800
629
630
  omlish/secrets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
630
631
  omlish/secrets/all.py,sha256=qBxUFIqxCExADL71taNH_W6FYT9QvOrdcaMeUUPO3aw,298
631
632
  omlish/secrets/crypto.py,sha256=q0Hca5oMwvh39r0hrupN_ewxhlllbdDgAgVoloYFmDg,3714
@@ -646,7 +647,7 @@ omlish/sockets/ports.py,sha256=WofuoMTQNUhbEreL0lrMQyVEZm6awuLLpFvn6jnFKrw,1778
646
647
  omlish/sockets/wait.py,sha256=GQIRABh_NWHePuNVz5bBeg7iVln-YHc3945ZA0qr-mA,1565
647
648
  omlish/sockets/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
648
649
  omlish/sockets/server/handlers.py,sha256=T--CSns9810f25--0Blv5bspAXhMjULtKEcXSGUpxOo,3912
649
- omlish/sockets/server/server.py,sha256=Z3kJ5LbO-sdJICxouv85KtDEmRb5_0kGNyHgdVrVzlM,6299
650
+ omlish/sockets/server/server.py,sha256=Il1y0LHRa_eB6FLLcuVXbfu9tLOpOttLBCffh3wWSBA,6289
650
651
  omlish/sockets/server/ssl.py,sha256=QLiPcng1f1RFDhw4aS-Fy57fm0R7CXm76STpHmT55z0,1067
651
652
  omlish/sockets/server/threading.py,sha256=CPr_290vpN3o4p2ehQBIwk-d8Ciasylp9v2zUQSB5xk,2862
652
653
  omlish/specs/__init__.py,sha256=fxpcfXEWESH2kiPStKhl2dAdfLkZVTt_cssZKyqBLiQ,87
@@ -891,9 +892,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
891
892
  omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
892
893
  omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
893
894
  omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
894
- omlish-0.0.0.dev425.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
895
- omlish-0.0.0.dev425.dist-info/METADATA,sha256=PaGWpzktXxHpe8pkhWTC69D_Uj9bbV6_QDVFGgR4zYI,19242
896
- omlish-0.0.0.dev425.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
897
- omlish-0.0.0.dev425.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
898
- omlish-0.0.0.dev425.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
899
- omlish-0.0.0.dev425.dist-info/RECORD,,
895
+ omlish-0.0.0.dev427.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
896
+ omlish-0.0.0.dev427.dist-info/METADATA,sha256=XcyPFrnqymcaHcY3ycLj3wJn1_l-E-qdd3MilxfuI8o,19243
897
+ omlish-0.0.0.dev427.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
898
+ omlish-0.0.0.dev427.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
899
+ omlish-0.0.0.dev427.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
900
+ omlish-0.0.0.dev427.dist-info/RECORD,,
omlish/lite/logs.py DELETED
@@ -1,4 +0,0 @@
1
- import logging
2
-
3
-
4
- log = logging.getLogger(__name__)