omlish 0.0.0.dev427__py3-none-any.whl → 0.0.0.dev428__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 +2 -2
- omlish/asyncs/asyncio/subprocesses.py +2 -2
- omlish/asyncs/bluelet/runner.py +3 -2
- omlish/formats/dotenv.py +7 -7
- omlish/http/handlers.py +3 -2
- omlish/logs/contexts.py +62 -36
- omlish/logs/infos.py +3 -0
- omlish/logs/modules.py +5 -2
- omlish/logs/std/handlers.py +4 -2
- omlish/secrets/secrets.py +3 -3
- omlish/sockets/server/handlers.py +2 -2
- omlish/sockets/server/server.py +2 -1
- omlish/sockets/server/ssl.py +2 -2
- omlish/subprocesses/base.py +4 -3
- {omlish-0.0.0.dev427.dist-info → omlish-0.0.0.dev428.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev427.dist-info → omlish-0.0.0.dev428.dist-info}/RECORD +20 -20
- {omlish-0.0.0.dev427.dist-info → omlish-0.0.0.dev428.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev427.dist-info → omlish-0.0.0.dev428.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev427.dist-info → omlish-0.0.0.dev428.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev427.dist-info → omlish-0.0.0.dev428.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
@@ -4,12 +4,12 @@ import asyncio.base_subprocess
|
|
4
4
|
import asyncio.subprocess
|
5
5
|
import contextlib
|
6
6
|
import functools
|
7
|
-
import logging
|
8
7
|
import subprocess
|
9
8
|
import typing as ta
|
10
9
|
|
11
10
|
from ...lite.check import check
|
12
11
|
from ...lite.timeouts import TimeoutLike
|
12
|
+
from ...logs.protocols import LoggerLike
|
13
13
|
from ...subprocesses.asyncs import AbstractAsyncSubprocesses
|
14
14
|
from ...subprocesses.run import SubprocessRun
|
15
15
|
from ...subprocesses.run import SubprocessRunOutput
|
@@ -28,7 +28,7 @@ class AsyncioProcessCommunicator:
|
|
28
28
|
proc: asyncio.subprocess.Process,
|
29
29
|
loop: ta.Optional[ta.Any] = None,
|
30
30
|
*,
|
31
|
-
log: ta.Optional[
|
31
|
+
log: ta.Optional[LoggerLike] = None,
|
32
32
|
) -> None:
|
33
33
|
super().__init__()
|
34
34
|
|
omlish/asyncs/bluelet/runner.py
CHANGED
@@ -39,6 +39,7 @@ import types
|
|
39
39
|
import typing as ta
|
40
40
|
import weakref
|
41
41
|
|
42
|
+
from ...logs.protocols import LoggerLike
|
42
43
|
from .core import BlueletCoro
|
43
44
|
from .core import BlueletExcInfo
|
44
45
|
from .core import CoreBlueletEvent
|
@@ -84,7 +85,7 @@ class BlueletCoroException(Exception): # noqa
|
|
84
85
|
def _bluelet_event_select(
|
85
86
|
events: ta.Iterable[BlueletEvent],
|
86
87
|
*,
|
87
|
-
log: ta.Optional[
|
88
|
+
log: ta.Optional[LoggerLike] = None,
|
88
89
|
) -> ta.Set[WaitableBlueletEvent]:
|
89
90
|
"""
|
90
91
|
Perform a select() over all the Events provided, returning the ones ready to be fired. Only WaitableEvents
|
@@ -182,7 +183,7 @@ class _BlueletRunner:
|
|
182
183
|
self,
|
183
184
|
root_coro: BlueletCoro,
|
184
185
|
*,
|
185
|
-
log: ta.Optional[
|
186
|
+
log: ta.Optional[LoggerLike] = None,
|
186
187
|
) -> None:
|
187
188
|
super().__init__()
|
188
189
|
|
omlish/formats/dotenv.py
CHANGED
@@ -27,7 +27,6 @@ import abc
|
|
27
27
|
import codecs
|
28
28
|
import contextlib
|
29
29
|
import io
|
30
|
-
import logging
|
31
30
|
import os
|
32
31
|
import pathlib
|
33
32
|
import re
|
@@ -36,6 +35,7 @@ import tempfile
|
|
36
35
|
import typing as ta
|
37
36
|
|
38
37
|
from ..lite.abstract import Abstract
|
38
|
+
from ..logs.protocols import LoggerLike
|
39
39
|
|
40
40
|
|
41
41
|
##
|
@@ -312,7 +312,7 @@ def parse_dotenv_stream(stream: ta.IO[str]) -> ta.Iterator[DotenvBinding]:
|
|
312
312
|
|
313
313
|
def _dotenv_with_warn_for_invalid_lines(
|
314
314
|
mappings: ta.Iterator[DotenvBinding],
|
315
|
-
log: ta.Optional[
|
315
|
+
log: ta.Optional[LoggerLike] = None,
|
316
316
|
) -> ta.Iterator[DotenvBinding]:
|
317
317
|
for mapping in mappings:
|
318
318
|
if mapping.error:
|
@@ -337,7 +337,7 @@ class Dotenv:
|
|
337
337
|
interpolate: bool = True,
|
338
338
|
override: bool = True,
|
339
339
|
env: ta.Optional[ta.Mapping[str, str]] = None,
|
340
|
-
log: ta.Optional[
|
340
|
+
log: ta.Optional[LoggerLike] = None,
|
341
341
|
) -> None:
|
342
342
|
super().__init__()
|
343
343
|
|
@@ -415,7 +415,7 @@ def dotenv_get_key(
|
|
415
415
|
key_to_get: str,
|
416
416
|
*,
|
417
417
|
encoding: ta.Optional[str] = 'utf-8',
|
418
|
-
log: ta.Optional[
|
418
|
+
log: ta.Optional[LoggerLike] = None,
|
419
419
|
) -> ta.Optional[str]:
|
420
420
|
"""
|
421
421
|
Get the value of a given key from the given .env.
|
@@ -461,7 +461,7 @@ def dotenv_set_key(
|
|
461
461
|
quote_mode: str = 'always',
|
462
462
|
export: bool = False,
|
463
463
|
encoding: ta.Optional[str] = 'utf-8',
|
464
|
-
log: ta.Optional[
|
464
|
+
log: ta.Optional[LoggerLike] = None,
|
465
465
|
) -> ta.Tuple[ta.Optional[bool], str, str]:
|
466
466
|
"""
|
467
467
|
Adds or Updates a key/value to the given .env
|
@@ -511,7 +511,7 @@ def dotenv_unset_key(
|
|
511
511
|
*,
|
512
512
|
quote_mode: str = 'always',
|
513
513
|
encoding: ta.Optional[str] = 'utf-8',
|
514
|
-
log: ta.Optional[
|
514
|
+
log: ta.Optional[LoggerLike] = None,
|
515
515
|
) -> ta.Tuple[ta.Optional[bool], str]:
|
516
516
|
"""
|
517
517
|
Removes a given key from the given `.env` file.
|
@@ -575,7 +575,7 @@ def dotenv_values(
|
|
575
575
|
interpolate: bool = True,
|
576
576
|
encoding: ta.Optional[str] = 'utf-8',
|
577
577
|
env: ta.Optional[ta.Mapping[str, str]] = None,
|
578
|
-
log: ta.Optional[
|
578
|
+
log: ta.Optional[LoggerLike] = None,
|
579
579
|
) -> ta.Dict[str, ta.Optional[str]]:
|
580
580
|
"""
|
581
581
|
Parse a .env file and return its content as a dict.
|
omlish/http/handlers.py
CHANGED
@@ -7,6 +7,7 @@ import logging
|
|
7
7
|
import typing as ta
|
8
8
|
|
9
9
|
from ..lite.abstract import Abstract
|
10
|
+
from ..logs.protocols import LoggerLike
|
10
11
|
from ..sockets.addresses import SocketAddress
|
11
12
|
from .parsing import HttpHeaders
|
12
13
|
|
@@ -70,7 +71,7 @@ class HttpHandler_(Abstract): # noqa
|
|
70
71
|
@dc.dataclass(frozen=True)
|
71
72
|
class LoggingHttpHandler(HttpHandler_):
|
72
73
|
handler: HttpHandler
|
73
|
-
log:
|
74
|
+
log: LoggerLike
|
74
75
|
level: int = logging.DEBUG
|
75
76
|
|
76
77
|
def __call__(self, req: HttpHandlerRequest) -> HttpHandlerResponse:
|
@@ -83,7 +84,7 @@ class LoggingHttpHandler(HttpHandler_):
|
|
83
84
|
@dc.dataclass(frozen=True)
|
84
85
|
class ExceptionLoggingHttpHandler(HttpHandler_):
|
85
86
|
handler: HttpHandler
|
86
|
-
log:
|
87
|
+
log: LoggerLike
|
87
88
|
message: ta.Union[str, ta.Callable[[HttpHandlerRequest, BaseException], str]] = 'Error in http handler'
|
88
89
|
|
89
90
|
def __call__(self, req: HttpHandlerRequest) -> HttpHandlerResponse:
|
omlish/logs/contexts.py
CHANGED
@@ -89,6 +89,12 @@ class LoggingContext(Abstract):
|
|
89
89
|
|
90
90
|
|
91
91
|
class CaptureLoggingContext(LoggingContext, Abstract):
|
92
|
+
class AlreadyCapturedError(Exception):
|
93
|
+
pass
|
94
|
+
|
95
|
+
class NotCapturedError(Exception):
|
96
|
+
pass
|
97
|
+
|
92
98
|
@abc.abstractmethod
|
93
99
|
def capture(self) -> None:
|
94
100
|
"""Must be cooperatively called only from the expected locations."""
|
@@ -142,9 +148,6 @@ class CaptureLoggingContextImpl(CaptureLoggingContext):
|
|
142
148
|
self._exc_info_tuple: ta.Optional[LoggingExcInfoTuple] = (type(exc_info), exc_info, exc_info.__traceback__) # noqa
|
143
149
|
else:
|
144
150
|
self._exc_info_tuple = exc_info
|
145
|
-
else:
|
146
|
-
self._exc_info = None
|
147
|
-
self._exc_info_tuple = None
|
148
151
|
|
149
152
|
#
|
150
153
|
|
@@ -154,14 +157,7 @@ class CaptureLoggingContextImpl(CaptureLoggingContext):
|
|
154
157
|
self._stack_offset = stack_offset
|
155
158
|
self._stack_info = stack_info
|
156
159
|
|
157
|
-
|
158
|
-
|
159
|
-
self._thread = LoggingThreadInfo.build()
|
160
|
-
self._process = LoggingProcessInfo.build()
|
161
|
-
self._multiprocessing = LoggingMultiprocessingInfo.build()
|
162
|
-
self._asyncio_task = LoggingAsyncioTaskInfo.build()
|
163
|
-
|
164
|
-
#
|
160
|
+
##
|
165
161
|
|
166
162
|
@property
|
167
163
|
def level(self) -> NamedLogLevel:
|
@@ -185,6 +181,11 @@ class CaptureLoggingContextImpl(CaptureLoggingContext):
|
|
185
181
|
times = self._times = LoggingTimeFields.build(self.time_ns)
|
186
182
|
return times
|
187
183
|
|
184
|
+
#
|
185
|
+
|
186
|
+
_exc_info: ta.Optional[LoggingExcInfo] = None
|
187
|
+
_exc_info_tuple: ta.Optional[LoggingExcInfoTuple] = None
|
188
|
+
|
188
189
|
@property
|
189
190
|
def exc_info(self) -> ta.Optional[LoggingExcInfo]:
|
190
191
|
return self._exc_info
|
@@ -193,58 +194,83 @@ class CaptureLoggingContextImpl(CaptureLoggingContext):
|
|
193
194
|
def exc_info_tuple(self) -> ta.Optional[LoggingExcInfoTuple]:
|
194
195
|
return self._exc_info_tuple
|
195
196
|
|
196
|
-
|
197
|
+
##
|
198
|
+
|
199
|
+
_stack_offset: int
|
200
|
+
_stack_info: bool
|
197
201
|
|
198
|
-
def inc_stack_offset(self, ofs: int = 1) -> '
|
202
|
+
def inc_stack_offset(self, ofs: int = 1) -> 'CaptureLoggingContext':
|
199
203
|
if hasattr(self, '_stack_offset'):
|
200
204
|
self._stack_offset += ofs
|
201
205
|
return self
|
202
206
|
|
207
|
+
_has_captured: bool = False
|
208
|
+
|
203
209
|
_caller: ta.Optional[LoggingCaller]
|
210
|
+
_source_file: ta.Optional[LoggingSourceFileInfo]
|
211
|
+
|
212
|
+
_thread: ta.Optional[LoggingThreadInfo]
|
213
|
+
_process: ta.Optional[LoggingProcessInfo]
|
214
|
+
_multiprocessing: ta.Optional[LoggingMultiprocessingInfo]
|
215
|
+
_asyncio_task: ta.Optional[LoggingAsyncioTaskInfo]
|
204
216
|
|
205
217
|
def capture(self) -> None:
|
206
|
-
|
218
|
+
if self._has_captured:
|
219
|
+
raise CaptureLoggingContextImpl.AlreadyCapturedError
|
220
|
+
self._has_captured = True
|
221
|
+
|
222
|
+
if not hasattr(self, '_caller'):
|
223
|
+
self._caller = LoggingCaller.find(
|
224
|
+
self._stack_offset + 1,
|
225
|
+
stack_info=self._stack_info,
|
226
|
+
)
|
227
|
+
|
228
|
+
if (caller := self._caller) is not None:
|
229
|
+
self._source_file = LoggingSourceFileInfo.build(caller.file_path)
|
230
|
+
else:
|
231
|
+
self._source_file = None
|
207
232
|
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
233
|
+
self._thread = LoggingThreadInfo.build()
|
234
|
+
self._process = LoggingProcessInfo.build()
|
235
|
+
self._multiprocessing = LoggingMultiprocessingInfo.build()
|
236
|
+
self._asyncio_task = LoggingAsyncioTaskInfo.build()
|
212
237
|
|
213
|
-
|
214
|
-
self._stack_offset + 1,
|
215
|
-
stack_info=self._stack_info,
|
216
|
-
)
|
238
|
+
#
|
217
239
|
|
218
240
|
def caller(self) -> ta.Optional[LoggingCaller]:
|
219
241
|
try:
|
220
242
|
return self._caller
|
221
243
|
except AttributeError:
|
222
|
-
|
223
|
-
|
224
|
-
_source_file: ta.Optional[LoggingSourceFileInfo]
|
244
|
+
raise CaptureLoggingContext.NotCapturedError from None
|
225
245
|
|
226
246
|
def source_file(self) -> ta.Optional[LoggingSourceFileInfo]:
|
227
247
|
try:
|
228
248
|
return self._source_file
|
229
249
|
except AttributeError:
|
230
|
-
|
231
|
-
|
232
|
-
if (caller := self.caller()) is None:
|
233
|
-
return None
|
234
|
-
|
235
|
-
src_file = self._source_file = LoggingSourceFileInfo.build(caller.file_path)
|
236
|
-
return src_file
|
250
|
+
raise CaptureLoggingContext.NotCapturedError from None
|
237
251
|
|
238
252
|
#
|
239
253
|
|
240
254
|
def thread(self) -> ta.Optional[LoggingThreadInfo]:
|
241
|
-
|
255
|
+
try:
|
256
|
+
return self._thread
|
257
|
+
except AttributeError:
|
258
|
+
raise CaptureLoggingContext.NotCapturedError from None
|
242
259
|
|
243
260
|
def process(self) -> ta.Optional[LoggingProcessInfo]:
|
244
|
-
|
261
|
+
try:
|
262
|
+
return self._process
|
263
|
+
except AttributeError:
|
264
|
+
raise CaptureLoggingContext.NotCapturedError from None
|
245
265
|
|
246
266
|
def multiprocessing(self) -> ta.Optional[LoggingMultiprocessingInfo]:
|
247
|
-
|
267
|
+
try:
|
268
|
+
return self._multiprocessing
|
269
|
+
except AttributeError:
|
270
|
+
raise CaptureLoggingContext.NotCapturedError from None
|
248
271
|
|
249
272
|
def asyncio_task(self) -> ta.Optional[LoggingAsyncioTaskInfo]:
|
250
|
-
|
273
|
+
try:
|
274
|
+
return self._asyncio_task
|
275
|
+
except AttributeError:
|
276
|
+
raise CaptureLoggingContext.NotCapturedError from None
|
omlish/logs/infos.py
CHANGED
omlish/logs/modules.py
CHANGED
@@ -2,9 +2,12 @@
|
|
2
2
|
import logging
|
3
3
|
import typing as ta
|
4
4
|
|
5
|
+
from .base import Logger
|
6
|
+
from .std.adapters import StdLogger
|
7
|
+
|
5
8
|
|
6
9
|
##
|
7
10
|
|
8
11
|
|
9
|
-
def get_module_logger(mod_globals: ta.Mapping[str, ta.Any]) ->
|
10
|
-
return logging.getLogger(mod_globals.get('__name__'))
|
12
|
+
def get_module_logger(mod_globals: ta.Mapping[str, ta.Any]) -> Logger:
|
13
|
+
return StdLogger(logging.getLogger(mod_globals.get('__name__'))) # noqa
|
omlish/logs/std/handlers.py
CHANGED
@@ -8,10 +8,12 @@ import typing as ta
|
|
8
8
|
|
9
9
|
|
10
10
|
class ListLoggingHandler(logging.Handler):
|
11
|
-
def __init__(self) -> None:
|
11
|
+
def __init__(self, record_list: ta.Optional[ta.List[logging.LogRecord]] = None) -> None:
|
12
12
|
super().__init__()
|
13
13
|
|
14
|
-
|
14
|
+
if record_list is None:
|
15
|
+
record_list = []
|
16
|
+
self.records: ta.List[logging.LogRecord] = record_list
|
15
17
|
|
16
18
|
def emit(self, record: logging.LogRecord) -> None:
|
17
19
|
self.records.append(record)
|
omlish/secrets/secrets.py
CHANGED
@@ -11,7 +11,6 @@ TODO:
|
|
11
11
|
"""
|
12
12
|
import abc
|
13
13
|
import collections
|
14
|
-
import logging
|
15
14
|
import os
|
16
15
|
import sys
|
17
16
|
import time
|
@@ -21,12 +20,13 @@ import typing as ta
|
|
21
20
|
from .. import dataclasses as dc
|
22
21
|
from .. import lang
|
23
22
|
from .. import marshal as msh
|
23
|
+
from ..logs import all as logs
|
24
24
|
|
25
25
|
|
26
26
|
msh.register_global_module_import('.marshal', __package__)
|
27
27
|
|
28
28
|
|
29
|
-
log =
|
29
|
+
log = logs.get_module_logger(globals())
|
30
30
|
|
31
31
|
|
32
32
|
##
|
@@ -269,7 +269,7 @@ class LoggingSecrets(Secrets):
|
|
269
269
|
self,
|
270
270
|
child: Secrets,
|
271
271
|
*,
|
272
|
-
log:
|
272
|
+
log: logs.LoggerLike | None = None, # noqa
|
273
273
|
) -> None:
|
274
274
|
super().__init__()
|
275
275
|
|
@@ -3,11 +3,11 @@
|
|
3
3
|
import abc
|
4
4
|
import concurrent.futures as cf
|
5
5
|
import dataclasses as dc
|
6
|
-
import logging
|
7
6
|
import socket
|
8
7
|
import typing as ta
|
9
8
|
|
10
9
|
from ...lite.abstract import Abstract
|
10
|
+
from ...logs.protocols import LoggerLike
|
11
11
|
from ..addresses import SocketAndAddress
|
12
12
|
from ..handlers import SocketHandler
|
13
13
|
from ..io import SocketIoPair
|
@@ -142,7 +142,7 @@ class ExecutorSocketServerHandler(SocketServerHandler_):
|
|
142
142
|
@dc.dataclass(frozen=True)
|
143
143
|
class ExceptionLoggingSocketServerHandler(SocketServerHandler_):
|
144
144
|
handler: SocketServerHandler
|
145
|
-
log:
|
145
|
+
log: LoggerLike
|
146
146
|
|
147
147
|
ignored: ta.Optional[ta.Container[ta.Type[Exception]]] = None
|
148
148
|
|
omlish/sockets/server/server.py
CHANGED
@@ -11,6 +11,7 @@ import typing as ta
|
|
11
11
|
from ...lite.abstract import Abstract
|
12
12
|
from ...lite.contextmanagers import ExitStacked
|
13
13
|
from ...lite.contextmanagers import defer
|
14
|
+
from ...logs.protocols import LoggerLike
|
14
15
|
from ..addresses import SocketAndAddress
|
15
16
|
from ..bind import SocketBinder
|
16
17
|
from ..io import close_socket_immediately
|
@@ -29,7 +30,7 @@ class SocketServer:
|
|
29
30
|
handler: SocketServerHandler,
|
30
31
|
*,
|
31
32
|
on_error: ta.Optional[ta.Callable[[BaseException, ta.Optional[SocketAndAddress]], None]] = None,
|
32
|
-
error_logger: ta.Optional[
|
33
|
+
error_logger: ta.Optional[LoggerLike] = _DEFAULT_LOGGER,
|
33
34
|
poll_interval: float = .5,
|
34
35
|
shutdown_timeout: ta.Optional[float] = None,
|
35
36
|
) -> None:
|
omlish/sockets/server/ssl.py
CHANGED
@@ -1,9 +1,9 @@
|
|
1
1
|
# ruff: noqa: UP006 UP007 UP045
|
2
2
|
# @omlish-lite
|
3
3
|
import dataclasses as dc
|
4
|
-
import logging
|
5
4
|
import typing as ta
|
6
5
|
|
6
|
+
from ...logs.protocols import LoggerLike
|
7
7
|
from ..addresses import SocketAndAddress
|
8
8
|
from ..io import close_socket_immediately
|
9
9
|
from .handlers import SocketServerHandler
|
@@ -17,7 +17,7 @@ from .handlers import SocketServerHandler_
|
|
17
17
|
class SslErrorHandlingSocketServerHandler(SocketServerHandler_):
|
18
18
|
handler: SocketServerHandler
|
19
19
|
|
20
|
-
log: ta.Optional[
|
20
|
+
log: ta.Optional[LoggerLike] = None
|
21
21
|
|
22
22
|
#
|
23
23
|
|
omlish/subprocesses/base.py
CHANGED
@@ -9,6 +9,7 @@ import typing as ta
|
|
9
9
|
|
10
10
|
from ..lite.abstract import Abstract
|
11
11
|
from ..lite.timeouts import Timeout
|
12
|
+
from ..logs.protocols import LoggerLike
|
12
13
|
from .wrap import subprocess_maybe_shell_wrap_exec
|
13
14
|
|
14
15
|
|
@@ -55,12 +56,12 @@ class VerboseCalledProcessError(subprocess.CalledProcessError):
|
|
55
56
|
|
56
57
|
|
57
58
|
class BaseSubprocesses(Abstract):
|
58
|
-
DEFAULT_LOGGER: ta.ClassVar[ta.Optional[
|
59
|
+
DEFAULT_LOGGER: ta.ClassVar[ta.Optional[LoggerLike]] = None
|
59
60
|
|
60
61
|
def __init__(
|
61
62
|
self,
|
62
63
|
*,
|
63
|
-
log: ta.Optional[
|
64
|
+
log: ta.Optional[LoggerLike] = None,
|
64
65
|
try_exceptions: ta.Optional[ta.Tuple[ta.Type[Exception], ...]] = None,
|
65
66
|
) -> None:
|
66
67
|
super().__init__()
|
@@ -68,7 +69,7 @@ class BaseSubprocesses(Abstract):
|
|
68
69
|
self._log = log if log is not None else self.DEFAULT_LOGGER
|
69
70
|
self._try_exceptions = try_exceptions if try_exceptions is not None else self.DEFAULT_TRY_EXCEPTIONS
|
70
71
|
|
71
|
-
def set_logger(self, log: ta.Optional[
|
72
|
+
def set_logger(self, log: ta.Optional[LoggerLike]) -> None:
|
72
73
|
self._log = log
|
73
74
|
|
74
75
|
#
|
@@ -1,5 +1,5 @@
|
|
1
1
|
omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=Hpb2Yne7crg_ww7XqcFbR5Q0NE38iJPTfXPQEaCwgic,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
|
@@ -39,7 +39,7 @@ omlish/asyncs/asyncio/all.py,sha256=u2JpMEs-0AJ0Vd8yU10HvWD8rfKxdFfMiwBu2oDeuuQ,
|
|
39
39
|
omlish/asyncs/asyncio/channels.py,sha256=oniTpmw_eeKK70APyEZLhRUChwLwebE4N0_uZiwSKgQ,1085
|
40
40
|
omlish/asyncs/asyncio/sockets.py,sha256=i1a2DZ52IuvRQQQW8FJxEUFboqpKn_K08a_MsMaecqU,1264
|
41
41
|
omlish/asyncs/asyncio/streams.py,sha256=Laa9BNwajZ7Wt_rJoYMbQtfSX4Q4i-dVHhtYSekCHXM,1015
|
42
|
-
omlish/asyncs/asyncio/subprocesses.py,sha256=
|
42
|
+
omlish/asyncs/asyncio/subprocesses.py,sha256=FlnI23o2Rm-T-gXHWuHCaVeMoLKzgStk3CPO0OPIth4,6307
|
43
43
|
omlish/asyncs/asyncio/timeouts.py,sha256=lJ4qmDqyxUeAQCXJGiLL8pxYwoR1F1lntZ18HVf40Wo,452
|
44
44
|
omlish/asyncs/asyncio/utils.py,sha256=dCC4hXqCTKBpU5urAXsKUIIua2M9JXAtumwh7IUEu7E,2443
|
45
45
|
omlish/asyncs/bluelet/LICENSE,sha256=q5Kpj4s30qpi8H66tXFlh5v8_fkaKMFIzqdGfnN0Hz0,555
|
@@ -49,7 +49,7 @@ omlish/asyncs/bluelet/api.py,sha256=RFOd95cVSQ7NQNlOVfcIiVtf9cHYx0sLq2ugbR_LIQk,
|
|
49
49
|
omlish/asyncs/bluelet/core.py,sha256=ZxwdxfxhlYVLyh0Iwz6yvVKy3xgo_BwLm-gwqSlqPt4,5458
|
50
50
|
omlish/asyncs/bluelet/events.py,sha256=YC-mAhIVQkfMtJ-MpMkYM8LF04UhDfWNs0abgFCCwk4,2440
|
51
51
|
omlish/asyncs/bluelet/files.py,sha256=gY_hlPCGbDZR7twvuslDsv5yKSh9ciO6X7Lxu3ni_vs,2419
|
52
|
-
omlish/asyncs/bluelet/runner.py,sha256=
|
52
|
+
omlish/asyncs/bluelet/runner.py,sha256=vFh4Tt0J5fM0RYXrLieKcQ0oyLEVoEwkYC9Ml5wII9k,15511
|
53
53
|
omlish/asyncs/bluelet/sockets.py,sha256=YJvbkX-oE7H-fNHzMJmTzCsLeBwEt46p4Fz9jF2FjLU,6776
|
54
54
|
omlish/asyncs/ioproxy/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
55
55
|
omlish/asyncs/ioproxy/all.py,sha256=_0mg0OjNKbnpGPSQZ-ftXYhKSpt-Po4Rlu2kam7v3XQ,1003
|
@@ -245,7 +245,7 @@ omlish/formats/__init__.py,sha256=T0AG1gFnqQ5JiHN0UPQjQ-7g5tnxMIG-mgOvMYExYAM,21
|
|
245
245
|
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
|
-
omlish/formats/dotenv.py,sha256=
|
248
|
+
omlish/formats/dotenv.py,sha256=2BjwqsgLgXCmvyNeWq6_xigfH4OIcIoaJbYIuVmul5E,19351
|
249
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
|
@@ -320,7 +320,7 @@ omlish/http/consts.py,sha256=7BJ4D1MdIvqBcepkgCfBFHolgTwbOlqsOEiee_IjxOA,2289
|
|
320
320
|
omlish/http/cookies.py,sha256=uuOYlHR6e2SC3GM41V0aozK10nef9tYg83Scqpn5-HM,6351
|
321
321
|
omlish/http/dates.py,sha256=wnVjmRm5KEBGaL9JnAbaAmb1XkAQ3LCCQAcxzMdwwCo,2880
|
322
322
|
omlish/http/encodings.py,sha256=w2WoKajpaZnQH8j-IBvk5ZFL2O2pAU_iBvZnkocaTlw,164
|
323
|
-
omlish/http/handlers.py,sha256=
|
323
|
+
omlish/http/handlers.py,sha256=MOBXGg3F_G0rtCXtEBiGLY-Yb31f4ScjGtozII0bIDE,3972
|
324
324
|
omlish/http/headers.py,sha256=Ft7jsjDegcpzkXk2rk3uw8bEFIB7vifIfLMMwATDo1A,5716
|
325
325
|
omlish/http/json.py,sha256=9XwAsl4966Mxrv-1ytyCqhcE6lbBJw-0_tFZzGszgHE,7440
|
326
326
|
omlish/http/jwt.py,sha256=F9-1syqS7qR6C_z06tmz9zM4CXbKrw6s7w3NIPGdyuU,4354
|
@@ -500,10 +500,10 @@ omlish/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
500
500
|
omlish/logs/all.py,sha256=9VOobL0p3E_6QWsnBmlCPhxz5zqs-AiH4jvZR3--ZZA,1085
|
501
501
|
omlish/logs/base.py,sha256=LxDnvCDzZr9AfjO_5NmoE9z1Mqw_7meQ7WGgGYissXk,6649
|
502
502
|
omlish/logs/callers.py,sha256=tRj24LxlEimDGCplDVVJDvRSt_u72cgjnnvb0mdZgvU,2065
|
503
|
-
omlish/logs/contexts.py,sha256=
|
504
|
-
omlish/logs/infos.py,sha256=
|
503
|
+
omlish/logs/contexts.py,sha256=dC84Wa__j0leSJw5SzP-ygsflfzIiqvmRnv9meD-Q_U,7523
|
504
|
+
omlish/logs/infos.py,sha256=Drf9BnDOs3vMPb5G-9pAFUoubjXvzlzPMDiKSjgF1XQ,2766
|
505
505
|
omlish/logs/levels.py,sha256=b3i-70OcvNMcOQBzg1IUHBPESfHz0uu5mi5t_jbwv1Y,1966
|
506
|
-
omlish/logs/modules.py,sha256=
|
506
|
+
omlish/logs/modules.py,sha256=ImciecEfeLwh65vO3gWVpADRhOz9cBoAkBDJ9VyliXY,267
|
507
507
|
omlish/logs/protocols.py,sha256=8l5TgNUNgfrqYPA6dVijPFGLxzWhvgS4Cca64XHT0jo,939
|
508
508
|
omlish/logs/standard.py,sha256=ppho-wDecGxUiRXOdCIlblmrQhqXZ0oQOGayy8N53XY,3237
|
509
509
|
omlish/logs/times.py,sha256=ro2TSD_Xwq_cNN8f_FrEGfdhD4PTbh0PLSG13PGx39E,2571
|
@@ -513,7 +513,7 @@ omlish/logs/std/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
513
513
|
omlish/logs/std/adapters.py,sha256=qRXusW8iGYF29C3cy1srb4pgJ0Fv5li8bUvnegxo9o8,1005
|
514
514
|
omlish/logs/std/configs.py,sha256=aDQahqBJXJpmQBaxXVK5S2xi_I_nrLLcCLTq6Q2K6EQ,1037
|
515
515
|
omlish/logs/std/filters.py,sha256=Z8tHOvBRiP-OYm2z5cwY-lYXRimNgferEARMwvwx5Pw,380
|
516
|
-
omlish/logs/std/handlers.py,sha256=
|
516
|
+
omlish/logs/std/handlers.py,sha256=uTWOT6oayBUEftKmJ8yo89ZP4plv5eQ8Lbcmt-IGl8c,469
|
517
517
|
omlish/logs/std/json.py,sha256=QJ5lywLsRsPyVno2nk2kOw-Z1z3bfrDiZzqcRUdWUMY,1382
|
518
518
|
omlish/logs/std/noisy.py,sha256=hWpbseerZqlHdEPEajDTSmcRhx8LmmNAxz_7GBZAO9s,353
|
519
519
|
omlish/logs/std/proxy.py,sha256=9MVV5kbj9nwl3KZGtrYCIb5XTpv33f33zZ7P_B58fX0,2394
|
@@ -634,7 +634,7 @@ omlish/secrets/marshal.py,sha256=u90n1OfRfdpH1T2F0xK_pAPH1ENYL6acFt6XdVd3KvI,198
|
|
634
634
|
omlish/secrets/openssl.py,sha256=4zp1KZ1EVRNaBS0VIokTqnamy3ZeeC1XN2wSXx4lEcM,6215
|
635
635
|
omlish/secrets/pwgen.py,sha256=Z5i1qMKK4idOZvWai5dXkI59gX7pYzFFlFYAj7qEmqA,1706
|
636
636
|
omlish/secrets/pwhash.py,sha256=Jctv3QzcMvVPXJsWA3w3LDUlzmyUDGEWG9sLiJz1xaw,4107
|
637
|
-
omlish/secrets/secrets.py,sha256=
|
637
|
+
omlish/secrets/secrets.py,sha256=wf_X7IA7HXSEcSPCSt97KuHgYCjDzVhKfDS17rrZUVk,8053
|
638
638
|
omlish/secrets/ssl.py,sha256=HnH5MS31X9Uid7Iw1CWqviaVwMLF1Ha8RxZiiE-_iF8,158
|
639
639
|
omlish/secrets/subprocesses.py,sha256=ZdShw4jrGDdyQW8mRMgl106-9qpCEq2J6w_x7ruz1wk,1217
|
640
640
|
omlish/secrets/tempssl.py,sha256=KbNKGwiKw95Ly2b1OtNL2jhPa25aO0t_tvyNB5trUcU,1885
|
@@ -646,9 +646,9 @@ omlish/sockets/io.py,sha256=YdrtrpqXAUJgQRqeAdTxH3m06DE5xRt08tqdRaRn5bY,1414
|
|
646
646
|
omlish/sockets/ports.py,sha256=WofuoMTQNUhbEreL0lrMQyVEZm6awuLLpFvn6jnFKrw,1778
|
647
647
|
omlish/sockets/wait.py,sha256=GQIRABh_NWHePuNVz5bBeg7iVln-YHc3945ZA0qr-mA,1565
|
648
648
|
omlish/sockets/server/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
649
|
-
omlish/sockets/server/handlers.py,sha256=
|
650
|
-
omlish/sockets/server/server.py,sha256=
|
651
|
-
omlish/sockets/server/ssl.py,sha256=
|
649
|
+
omlish/sockets/server/handlers.py,sha256=GEG3zWb3-DyjZaVWtggq1aKFtvAoyqOJEw2Aq-7S1xs,3934
|
650
|
+
omlish/sockets/server/server.py,sha256=tYWDRwlXdX5m_sd2mgdOMs7DrZFjHH3zHKa2KzpZb5k,6326
|
651
|
+
omlish/sockets/server/ssl.py,sha256=sTtM8eYmou37aViJG-a32bEoEg1DA-psAu8v8NP2ECs,1089
|
652
652
|
omlish/sockets/server/threading.py,sha256=CPr_290vpN3o4p2ehQBIwk-d8Ciasylp9v2zUQSB5xk,2862
|
653
653
|
omlish/specs/__init__.py,sha256=fxpcfXEWESH2kiPStKhl2dAdfLkZVTt_cssZKyqBLiQ,87
|
654
654
|
omlish/specs/jmespath/LICENSE,sha256=IH-ZZlZkS8XMkf_ubNVD1aYHQ2l_wd0tmHtXrCcYpRU,1113
|
@@ -746,7 +746,7 @@ omlish/sql/tabledefs/lower.py,sha256=i4_QkVlVH5U99O6pqokrB661AudNVJ9Q-OwtkKOBleU
|
|
746
746
|
omlish/sql/tabledefs/tabledefs.py,sha256=lIhvlt0pk6G7RZAtDFsFXm5j0l9BvRfnP7vNGeydHtE,816
|
747
747
|
omlish/subprocesses/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
748
748
|
omlish/subprocesses/asyncs.py,sha256=G0KeH53yRsLJrLjYCrtQgDS3RKA0QRaSgdGDMiNGXI8,2710
|
749
|
-
omlish/subprocesses/base.py,sha256=
|
749
|
+
omlish/subprocesses/base.py,sha256=wFewm8m5D6Qln6N9WjsIHxF5nqmQ8xGaBYfG1BSNdFk,6186
|
750
750
|
omlish/subprocesses/editor.py,sha256=xBrd7gY0akhRfDIBK5YIBrYMHECtl_8r499iKViyfpQ,2634
|
751
751
|
omlish/subprocesses/maysync.py,sha256=UqpidDPw-w2GDLRJn03mQm-s98wtN348olwSh2ceTig,1424
|
752
752
|
omlish/subprocesses/run.py,sha256=mV38F_hmyVCXbpDxl5xNmzz5al_LqZ3FOrfcPcjSqy8,4416
|
@@ -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.
|
896
|
-
omlish-0.0.0.
|
897
|
-
omlish-0.0.0.
|
898
|
-
omlish-0.0.0.
|
899
|
-
omlish-0.0.0.
|
900
|
-
omlish-0.0.0.
|
895
|
+
omlish-0.0.0.dev428.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
896
|
+
omlish-0.0.0.dev428.dist-info/METADATA,sha256=DR__EMO_09RXhsC47ctuSZNq5nRcStmhoJnLkPhs8DQ,19243
|
897
|
+
omlish-0.0.0.dev428.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
898
|
+
omlish-0.0.0.dev428.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
899
|
+
omlish-0.0.0.dev428.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
900
|
+
omlish-0.0.0.dev428.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|