omlish 0.0.0.dev222__py3-none-any.whl → 0.0.0.dev224__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 +4 -4
- omlish/asyncs/asyncio/subprocesses.py +15 -23
- omlish/dynamic.py +1 -1
- omlish/funcs/genmachine.py +1 -1
- omlish/http/coro/fdio.py +3 -3
- omlish/http/coro/server.py +1 -1
- omlish/http/handlers.py +65 -0
- omlish/http/parsing.py +13 -0
- omlish/lite/marshal.py +22 -6
- omlish/lite/timing.py +8 -0
- omlish/logs/timing.py +58 -0
- omlish/secrets/tempssl.py +43 -21
- omlish/specs/irc/messages/__init__.py +0 -0
- omlish/specs/irc/messages/base.py +49 -0
- omlish/specs/irc/messages/formats.py +92 -0
- omlish/specs/irc/messages/messages.py +774 -0
- omlish/specs/irc/messages/parsing.py +98 -0
- omlish/specs/irc/numerics/numerics.py +57 -0
- omlish/subprocesses.py +107 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev224.dist-info}/METADATA +5 -5
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev224.dist-info}/RECORD +35 -28
- /omlish/specs/irc/{format → protocol}/LICENSE +0 -0
- /omlish/specs/irc/{format → protocol}/__init__.py +0 -0
- /omlish/specs/irc/{format → protocol}/consts.py +0 -0
- /omlish/specs/irc/{format → protocol}/errors.py +0 -0
- /omlish/specs/irc/{format → protocol}/message.py +0 -0
- /omlish/specs/irc/{format → protocol}/nuh.py +0 -0
- /omlish/specs/irc/{format → protocol}/parsing.py +0 -0
- /omlish/specs/irc/{format → protocol}/rendering.py +0 -0
- /omlish/specs/irc/{format → protocol}/tags.py +0 -0
- /omlish/specs/irc/{format → protocol}/utils.py +0 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev224.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev224.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev224.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev224.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,98 @@
|
|
1
|
+
import typing as ta
|
2
|
+
|
3
|
+
from .... import dataclasses as dc
|
4
|
+
from .base import Message
|
5
|
+
from .formats import MessageFormat
|
6
|
+
|
7
|
+
|
8
|
+
##
|
9
|
+
|
10
|
+
|
11
|
+
class ParseError(Exception):
|
12
|
+
pass
|
13
|
+
|
14
|
+
|
15
|
+
def parse_message(cls: type[Message], params: ta.Sequence[str]) -> Message:
|
16
|
+
mf = cls.FORMAT
|
17
|
+
|
18
|
+
kws: dict = {}
|
19
|
+
i = 0
|
20
|
+
for fp in mf.params:
|
21
|
+
if isinstance(fp, MessageFormat.KwargParam):
|
22
|
+
if i >= len(params):
|
23
|
+
if not fp.optional:
|
24
|
+
raise ParseError(f'Missing param: {fp.name}')
|
25
|
+
continue
|
26
|
+
|
27
|
+
kv: ta.Any
|
28
|
+
if (ar := fp.arity) is MessageFormat.KwargParam.Arity.SINGLE:
|
29
|
+
kv = params[i]
|
30
|
+
i += 1
|
31
|
+
|
32
|
+
elif ar is MessageFormat.KwargParam.Arity.VARIADIC:
|
33
|
+
kv = params[i:]
|
34
|
+
i = len(params)
|
35
|
+
|
36
|
+
elif ar is MessageFormat.KwargParam.Arity.COMMA_LIST:
|
37
|
+
kv = params[i].split(',')
|
38
|
+
i += 1
|
39
|
+
|
40
|
+
else:
|
41
|
+
raise TypeError(ar)
|
42
|
+
|
43
|
+
kws[fp.name] = kv
|
44
|
+
|
45
|
+
elif isinstance(fp, MessageFormat.LiteralParam):
|
46
|
+
if i >= len(params):
|
47
|
+
raise ParseError('Missing literal param')
|
48
|
+
|
49
|
+
pv = params[i]
|
50
|
+
if fp.text != pv:
|
51
|
+
raise ParseError(f'Unexpected literal: {pv}')
|
52
|
+
i += 1
|
53
|
+
|
54
|
+
else:
|
55
|
+
raise TypeError(fp)
|
56
|
+
|
57
|
+
if i != len(params):
|
58
|
+
raise ParseError('Unconsumed params')
|
59
|
+
|
60
|
+
if (up := mf.unpack_params) is not None:
|
61
|
+
kws = dict(up(kws))
|
62
|
+
|
63
|
+
return cls(**kws)
|
64
|
+
|
65
|
+
|
66
|
+
##
|
67
|
+
|
68
|
+
|
69
|
+
class UnparsedMessage(ta.NamedTuple):
|
70
|
+
name: str
|
71
|
+
params: ta.Sequence[str]
|
72
|
+
|
73
|
+
|
74
|
+
def unparse_message(msg: Message) -> UnparsedMessage:
|
75
|
+
mf = msg.FORMAT
|
76
|
+
|
77
|
+
kws = {k: v for k, v in dc.asdict(msg).items() if v is not None}
|
78
|
+
|
79
|
+
if (up := mf.unpack_params) is not None:
|
80
|
+
kws = dict(up.backward(kws))
|
81
|
+
|
82
|
+
params = []
|
83
|
+
|
84
|
+
for fp in mf.params:
|
85
|
+
if isinstance(fp, MessageFormat.KwargParam):
|
86
|
+
# FIXME
|
87
|
+
raise NotImplementedError
|
88
|
+
|
89
|
+
elif isinstance(fp, MessageFormat.LiteralParam):
|
90
|
+
params.append(fp.text)
|
91
|
+
|
92
|
+
else:
|
93
|
+
raise TypeError(fp)
|
94
|
+
|
95
|
+
return UnparsedMessage(
|
96
|
+
name=mf.name,
|
97
|
+
params=params,
|
98
|
+
)
|
@@ -47,6 +47,7 @@ RPL_MYINFO = _register_numeric_reply(
|
|
47
47
|
'RPL_MYINFO',
|
48
48
|
4,
|
49
49
|
'<client> <servername> <version> <available user modes> <available channel modes> [<channel modes with a parameter>]', # noqa
|
50
|
+
# noqa
|
50
51
|
)
|
51
52
|
|
52
53
|
RPL_ISUPPORT = _register_numeric_reply(
|
@@ -61,12 +62,30 @@ RPL_BOUNCE = _register_numeric_reply(
|
|
61
62
|
'<client> <hostname> <port> :<info>',
|
62
63
|
)
|
63
64
|
|
65
|
+
RPL_STATSLINKINFO = _register_numeric_reply(
|
66
|
+
'RPL_STATSLINKINFO',
|
67
|
+
211,
|
68
|
+
'<linkname> <sendq> <sent messages> <sent Kbytes> <received messages> <received Kbytes> <time open>',
|
69
|
+
)
|
70
|
+
|
64
71
|
RPL_STATSCOMMANDS = _register_numeric_reply(
|
65
72
|
'RPL_STATSCOMMANDS',
|
66
73
|
212,
|
67
74
|
'<client> <command> <count> [<byte count> <remote count>]',
|
68
75
|
)
|
69
76
|
|
77
|
+
RPL_STATSCLINE = _register_numeric_reply('RPL_STATSCLINE', 213)
|
78
|
+
|
79
|
+
RPL_STATSNLINE = _register_numeric_reply('RPL_STATSNLINE', 214)
|
80
|
+
|
81
|
+
RPL_STATSILINE = _register_numeric_reply('RPL_STATSILINE', 215)
|
82
|
+
|
83
|
+
RPL_STATSKLINE = _register_numeric_reply('RPL_STATSKLINE', 216)
|
84
|
+
|
85
|
+
RPL_STATSQLINE = _register_numeric_reply('RPL_STATSQLINE', 217)
|
86
|
+
|
87
|
+
RPL_STATSYLINE = _register_numeric_reply('RPL_STATSYLINE', 218)
|
88
|
+
|
70
89
|
RPL_ENDOFSTATS = _register_numeric_reply(
|
71
90
|
'RPL_ENDOFSTATS',
|
72
91
|
219,
|
@@ -79,12 +98,30 @@ RPL_UMODEIS = _register_numeric_reply(
|
|
79
98
|
'<client> <user modes>',
|
80
99
|
)
|
81
100
|
|
101
|
+
RPL_STATSVLINE = _register_numeric_reply('RPL_STATSVLINE', 240)
|
102
|
+
|
103
|
+
RPL_STATSLLINE = _register_numeric_reply('RPL_STATSLLINE', 241)
|
104
|
+
|
82
105
|
RPL_STATSUPTIME = _register_numeric_reply(
|
83
106
|
'RPL_STATSUPTIME',
|
84
107
|
242,
|
85
108
|
'<client> :Server Up <days> days <hours>:<minutes>:<seconds>',
|
86
109
|
)
|
87
110
|
|
111
|
+
RPL_STATSOLINE = _register_numeric_reply(
|
112
|
+
'RPL_STATSOLINE',
|
113
|
+
243,
|
114
|
+
'O <hostmask> * <name>',
|
115
|
+
)
|
116
|
+
|
117
|
+
RPL_STATSHLINE = _register_numeric_reply('RPL_STATSHLINE', 244)
|
118
|
+
|
119
|
+
RPL_STATSPING = _register_numeric_reply('RPL_STATSPING', 246)
|
120
|
+
|
121
|
+
RPL_STATSBLINE = _register_numeric_reply('RPL_STATSBLINE', 247)
|
122
|
+
|
123
|
+
RPL_STATSDLINE = _register_numeric_reply('RPL_STATSDLINE', 250)
|
124
|
+
|
88
125
|
RPL_LUSERCLIENT = _register_numeric_reply(
|
89
126
|
'RPL_LUSERCLIENT',
|
90
127
|
251,
|
@@ -512,6 +549,12 @@ ERR_WASNOSUCHNICK = _register_numeric_reply(
|
|
512
549
|
'<client> <nickname> :There was no such nickname',
|
513
550
|
)
|
514
551
|
|
552
|
+
ERR_TOOMANYTARGETS = _register_numeric_reply(
|
553
|
+
'ERR_TOOMANYTARGETS',
|
554
|
+
407,
|
555
|
+
'<target> :<error code> recipients. <abort message>',
|
556
|
+
)
|
557
|
+
|
515
558
|
ERR_NOORIGIN = _register_numeric_reply(
|
516
559
|
'ERR_NOORIGIN',
|
517
560
|
409,
|
@@ -530,6 +573,18 @@ ERR_NOTEXTTOSEND = _register_numeric_reply(
|
|
530
573
|
'<client> :No text to send',
|
531
574
|
)
|
532
575
|
|
576
|
+
ERR_NOTOPLEVEL = _register_numeric_reply(
|
577
|
+
'ERR_NOTOPLEVEL',
|
578
|
+
413,
|
579
|
+
'<mask> :No toplevel domain specified',
|
580
|
+
)
|
581
|
+
|
582
|
+
ERR_WILDTOPLEVEL = _register_numeric_reply(
|
583
|
+
'ERR_WILDTOPLEVEL',
|
584
|
+
414,
|
585
|
+
'<mask> :Wildcard in toplevel domain',
|
586
|
+
)
|
587
|
+
|
533
588
|
ERR_INPUTTOOLONG = _register_numeric_reply(
|
534
589
|
'ERR_INPUTTOOLONG',
|
535
590
|
417,
|
@@ -680,6 +735,8 @@ ERR_NOOPERHOST = _register_numeric_reply(
|
|
680
735
|
'<client> :No O-lines for your host',
|
681
736
|
)
|
682
737
|
|
738
|
+
ERR_NOSERVICEHOST = _register_numeric_reply('ERR_NOSERVICEHOST', 492)
|
739
|
+
|
683
740
|
ERR_UMODEUNKNOWNFLAG = _register_numeric_reply(
|
684
741
|
'ERR_UMODEUNKNOWNFLAG',
|
685
742
|
501,
|
omlish/subprocesses.py
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
# @omlish-lite
|
3
3
|
import abc
|
4
4
|
import contextlib
|
5
|
+
import dataclasses as dc
|
5
6
|
import logging
|
6
7
|
import os
|
7
8
|
import shlex
|
@@ -255,7 +256,70 @@ class BaseSubprocesses(abc.ABC): # noqa
|
|
255
256
|
##
|
256
257
|
|
257
258
|
|
259
|
+
@dc.dataclass(frozen=True)
|
260
|
+
class SubprocessRun:
|
261
|
+
cmd: ta.Sequence[str]
|
262
|
+
input: ta.Any = None
|
263
|
+
timeout: ta.Optional[float] = None
|
264
|
+
check: bool = False
|
265
|
+
capture_output: ta.Optional[bool] = None
|
266
|
+
kwargs: ta.Optional[ta.Mapping[str, ta.Any]] = None
|
267
|
+
|
268
|
+
@classmethod
|
269
|
+
def of(
|
270
|
+
cls,
|
271
|
+
*cmd: str,
|
272
|
+
input: ta.Any = None, # noqa
|
273
|
+
timeout: ta.Optional[float] = None,
|
274
|
+
check: bool = False,
|
275
|
+
capture_output: ta.Optional[bool] = None,
|
276
|
+
**kwargs: ta.Any,
|
277
|
+
) -> 'SubprocessRun':
|
278
|
+
return cls(
|
279
|
+
cmd=cmd,
|
280
|
+
input=input,
|
281
|
+
timeout=timeout,
|
282
|
+
check=check,
|
283
|
+
capture_output=capture_output,
|
284
|
+
kwargs=kwargs,
|
285
|
+
)
|
286
|
+
|
287
|
+
|
288
|
+
@dc.dataclass(frozen=True)
|
289
|
+
class SubprocessRunOutput(ta.Generic[T]):
|
290
|
+
proc: T
|
291
|
+
|
292
|
+
returncode: int # noqa
|
293
|
+
|
294
|
+
stdout: ta.Optional[bytes] = None
|
295
|
+
stderr: ta.Optional[bytes] = None
|
296
|
+
|
297
|
+
|
258
298
|
class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
|
299
|
+
@abc.abstractmethod
|
300
|
+
def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
|
301
|
+
raise NotImplementedError
|
302
|
+
|
303
|
+
def run(
|
304
|
+
self,
|
305
|
+
*cmd: str,
|
306
|
+
input: ta.Any = None, # noqa
|
307
|
+
timeout: ta.Optional[float] = None,
|
308
|
+
check: bool = False,
|
309
|
+
capture_output: ta.Optional[bool] = None,
|
310
|
+
**kwargs: ta.Any,
|
311
|
+
) -> SubprocessRunOutput:
|
312
|
+
return self.run_(SubprocessRun(
|
313
|
+
cmd=cmd,
|
314
|
+
input=input,
|
315
|
+
timeout=timeout,
|
316
|
+
check=check,
|
317
|
+
capture_output=capture_output,
|
318
|
+
kwargs=kwargs,
|
319
|
+
))
|
320
|
+
|
321
|
+
#
|
322
|
+
|
259
323
|
@abc.abstractmethod
|
260
324
|
def check_call(
|
261
325
|
self,
|
@@ -319,6 +383,25 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
|
|
319
383
|
|
320
384
|
|
321
385
|
class Subprocesses(AbstractSubprocesses):
|
386
|
+
def run_(self, run: SubprocessRun) -> SubprocessRunOutput[subprocess.CompletedProcess]:
|
387
|
+
proc = subprocess.run(
|
388
|
+
run.cmd,
|
389
|
+
input=run.input,
|
390
|
+
timeout=run.timeout,
|
391
|
+
check=run.check,
|
392
|
+
capture_output=run.capture_output or False,
|
393
|
+
**(run.kwargs or {}),
|
394
|
+
)
|
395
|
+
|
396
|
+
return SubprocessRunOutput(
|
397
|
+
proc=proc,
|
398
|
+
|
399
|
+
returncode=proc.returncode,
|
400
|
+
|
401
|
+
stdout=proc.stdout, # noqa
|
402
|
+
stderr=proc.stderr, # noqa
|
403
|
+
)
|
404
|
+
|
322
405
|
def check_call(
|
323
406
|
self,
|
324
407
|
*cmd: str,
|
@@ -344,6 +427,30 @@ subprocesses = Subprocesses()
|
|
344
427
|
|
345
428
|
|
346
429
|
class AbstractAsyncSubprocesses(BaseSubprocesses):
|
430
|
+
@abc.abstractmethod
|
431
|
+
async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
|
432
|
+
raise NotImplementedError
|
433
|
+
|
434
|
+
def run(
|
435
|
+
self,
|
436
|
+
*cmd: str,
|
437
|
+
input: ta.Any = None, # noqa
|
438
|
+
timeout: ta.Optional[float] = None,
|
439
|
+
check: bool = False,
|
440
|
+
capture_output: ta.Optional[bool] = None,
|
441
|
+
**kwargs: ta.Any,
|
442
|
+
) -> ta.Awaitable[SubprocessRunOutput]:
|
443
|
+
return self.run_(SubprocessRun(
|
444
|
+
cmd=cmd,
|
445
|
+
input=input,
|
446
|
+
timeout=timeout,
|
447
|
+
check=check,
|
448
|
+
capture_output=capture_output,
|
449
|
+
kwargs=kwargs,
|
450
|
+
))
|
451
|
+
|
452
|
+
#
|
453
|
+
|
347
454
|
@abc.abstractmethod
|
348
455
|
async def check_call(
|
349
456
|
self,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.2
|
2
2
|
Name: omlish
|
3
|
-
Version: 0.0.0.
|
3
|
+
Version: 0.0.0.dev224
|
4
4
|
Summary: omlish
|
5
5
|
Author: wrmsr
|
6
6
|
License: BSD-3-Clause
|
@@ -37,11 +37,11 @@ Requires-Dist: sqlalchemy[asyncio]~=2.0; extra == "all"
|
|
37
37
|
Requires-Dist: pg8000~=1.31; extra == "all"
|
38
38
|
Requires-Dist: pymysql~=1.1; extra == "all"
|
39
39
|
Requires-Dist: aiomysql~=0.2; extra == "all"
|
40
|
-
Requires-Dist: aiosqlite~=0.
|
40
|
+
Requires-Dist: aiosqlite~=0.21; extra == "all"
|
41
41
|
Requires-Dist: asyncpg~=0.30; extra == "all"
|
42
42
|
Requires-Dist: apsw~=3.47; extra == "all"
|
43
43
|
Requires-Dist: sqlean.py~=3.45; extra == "all"
|
44
|
-
Requires-Dist: duckdb~=1.
|
44
|
+
Requires-Dist: duckdb~=1.2; extra == "all"
|
45
45
|
Requires-Dist: pytest~=8.0; extra == "all"
|
46
46
|
Requires-Dist: anyio~=4.8; extra == "all"
|
47
47
|
Requires-Dist: sniffio~=1.3; extra == "all"
|
@@ -83,11 +83,11 @@ Provides-Extra: sqldrivers
|
|
83
83
|
Requires-Dist: pg8000~=1.31; extra == "sqldrivers"
|
84
84
|
Requires-Dist: pymysql~=1.1; extra == "sqldrivers"
|
85
85
|
Requires-Dist: aiomysql~=0.2; extra == "sqldrivers"
|
86
|
-
Requires-Dist: aiosqlite~=0.
|
86
|
+
Requires-Dist: aiosqlite~=0.21; extra == "sqldrivers"
|
87
87
|
Requires-Dist: asyncpg~=0.30; extra == "sqldrivers"
|
88
88
|
Requires-Dist: apsw~=3.47; extra == "sqldrivers"
|
89
89
|
Requires-Dist: sqlean.py~=3.45; extra == "sqldrivers"
|
90
|
-
Requires-Dist: duckdb~=1.
|
90
|
+
Requires-Dist: duckdb~=1.2; extra == "sqldrivers"
|
91
91
|
Provides-Extra: testing
|
92
92
|
Requires-Dist: pytest~=8.0; extra == "testing"
|
93
93
|
Provides-Extra: plus
|
@@ -1,17 +1,17 @@
|
|
1
1
|
omlish/.manifests.json,sha256=YGmAnUBszmosQQ_7Hh2wwtDiYdYZ4unNKYzOtALuels,7968
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=S2Ri9mbwlQ-KusjCoVjZBcGHhAJnlWUTzvhVU8dKD9Q,3380
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
4
|
omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
|
5
5
|
omlish/cached.py,sha256=UI-XTFBwA6YXWJJJeBn-WkwBkfzDjLBBaZf4nIJA9y0,510
|
6
6
|
omlish/check.py,sha256=THqm6jD1a0skAO5EC8SOVg58yq96Vk5wcuruBkCYxyU,2016
|
7
7
|
omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
|
8
8
|
omlish/defs.py,sha256=9uUjJuVIbCBL3g14fyzAp-9gH935MFofvlfOGwcBIaM,4913
|
9
|
-
omlish/dynamic.py,sha256=
|
9
|
+
omlish/dynamic.py,sha256=kIZokHHid8a0pIAPXMNiXrVJvJJyBnY49WP1a2m-HUQ,6525
|
10
10
|
omlish/libc.py,sha256=8r7Ejyhttk9ruCfBkxNTrlzir5WPbDE2vmY7VPlceMA,15362
|
11
11
|
omlish/outcome.py,sha256=ABIE0zjjTyTNtn-ZqQ_9_mUzLiBQ3sDAyqc9JVD8N2k,7852
|
12
12
|
omlish/runmodule.py,sha256=PWvuAaJ9wQQn6bx9ftEL3_d04DyotNn8dR_twm2pgw0,700
|
13
13
|
omlish/shlex.py,sha256=bsW2XUD8GiMTUTDefJejZ5AyqT1pTgWMPD0BMoF02jE,248
|
14
|
-
omlish/subprocesses.py,sha256=
|
14
|
+
omlish/subprocesses.py,sha256=CKWBnuliVfeIcQjPuIZMMk6uY2bk8LpCW9egMVA059E,13013
|
15
15
|
omlish/sync.py,sha256=QJ79kxmIqDP9SeHDoZAf--DpFIhDQe1jACy8H4N0yZI,2928
|
16
16
|
omlish/algorithm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
17
17
|
omlish/algorithm/all.py,sha256=FudUHwoaRLNNmqYM3jhP2Yd2BpmYhNBRPaVZzARMoSc,194
|
@@ -102,7 +102,7 @@ omlish/asyncs/asyncio/all.py,sha256=KpTanEtpTlc3rqv5SyiJaJGb_DXBzp_WKLhlRq6lrhY,
|
|
102
102
|
omlish/asyncs/asyncio/asyncio.py,sha256=3BMhVIF-QTjsFRGDtNYlRbBqKPCA3_AwJsjJoIWdM8k,1783
|
103
103
|
omlish/asyncs/asyncio/channels.py,sha256=ZbmsEmdK1fV96liHdcVpRqA2dAMkXJt4Q3rFAg3YOIw,1074
|
104
104
|
omlish/asyncs/asyncio/streams.py,sha256=Uc9PCWSfBqrK2kdVtfjjQU1eaYTWYmZm8QISDj2xiuw,1004
|
105
|
-
omlish/asyncs/asyncio/subprocesses.py,sha256=
|
105
|
+
omlish/asyncs/asyncio/subprocesses.py,sha256=JyVOGmuk1pD2SfCreMOIUPp-8SZny6v5rmJwbUSKw-4,6813
|
106
106
|
omlish/asyncs/asyncio/timeouts.py,sha256=Rj5OU9BIAPcVZZKp74z7SzUXF5xokh4dgsWkUqOy1aE,355
|
107
107
|
omlish/asyncs/bluelet/LICENSE,sha256=VHf3oPQihOHnWyIR8LcXX0dpONa1lgyJnjWC2qVuRR0,559
|
108
108
|
omlish/asyncs/bluelet/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -283,7 +283,7 @@ omlish/formats/toml/codec.py,sha256=5HFGWEPd9IFxPlRMRheX8FEDlRIzLe1moHEOj2_PFKU,
|
|
283
283
|
omlish/formats/toml/parser.py,sha256=3QN3rqdJ_zlHfFtsDn-A9pl-BTwdVMUUpUV5-lGWCKc,29342
|
284
284
|
omlish/formats/toml/writer.py,sha256=HIp6XvriXaPTLqyLe-fkIiEf1Pyhsp0TcOg5rFBpO3g,3226
|
285
285
|
omlish/funcs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
286
|
-
omlish/funcs/genmachine.py,sha256=
|
286
|
+
omlish/funcs/genmachine.py,sha256=jvctDOJd3X-S2_8C83sgWYz2llYlyhHN7P19-WsanOs,2506
|
287
287
|
omlish/funcs/match.py,sha256=gMLZn1enNiFvQaWrQubY300M1BrmdKWzeePihBS7Ywc,6153
|
288
288
|
omlish/funcs/pairs.py,sha256=VCkZjDmJGtR76BsejsHNfb4TcpHCtkkmak-zWDFchAo,3904
|
289
289
|
omlish/funcs/pipes.py,sha256=E7Sz8Aj8ke_vCs5AMNwg1I36kRdHVGTnzxVQaDyn43U,2490
|
@@ -304,19 +304,19 @@ omlish/http/consts.py,sha256=7BJ4D1MdIvqBcepkgCfBFHolgTwbOlqsOEiee_IjxOA,2289
|
|
304
304
|
omlish/http/cookies.py,sha256=uuOYlHR6e2SC3GM41V0aozK10nef9tYg83Scqpn5-HM,6351
|
305
305
|
omlish/http/dates.py,sha256=Otgp8wRxPgNGyzx8LFowu1vC4EKJYARCiAwLFncpfHM,2875
|
306
306
|
omlish/http/encodings.py,sha256=w2WoKajpaZnQH8j-IBvk5ZFL2O2pAU_iBvZnkocaTlw,164
|
307
|
-
omlish/http/handlers.py,sha256=
|
307
|
+
omlish/http/handlers.py,sha256=l6JLDuK9XhYvF1IudnPz5hWTZW1dXRjUBSO4Uyck0LE,3365
|
308
308
|
omlish/http/headers.py,sha256=ZMmjrEiYjzo0YTGyK0YsvjdwUazktGqzVVYorY4fd44,5081
|
309
309
|
omlish/http/json.py,sha256=9XwAsl4966Mxrv-1ytyCqhcE6lbBJw-0_tFZzGszgHE,7440
|
310
310
|
omlish/http/jwt.py,sha256=6Rigk1WrJ059DY4jDIKnxjnChWb7aFdermj2AI2DSvk,4346
|
311
311
|
omlish/http/multipart.py,sha256=R9ycpHsXRcmh0uoc43aYb7BdWL-8kSQHe7J-M81aQZM,2240
|
312
|
-
omlish/http/parsing.py,sha256=
|
312
|
+
omlish/http/parsing.py,sha256=Kz1n-2SwqSbRtPk1nlImf655c2YtGLW4WlTI82o3c1w,14356
|
313
313
|
omlish/http/sessions.py,sha256=TfTJ_j-6c9PelG_RmijEwozfaVm3O7YzgtFvp8VzQqM,4799
|
314
314
|
omlish/http/sse.py,sha256=MDs9RvxQXoQliImcc6qK1ERajEYM7Q1l8xmr-9ceNBc,2315
|
315
315
|
omlish/http/versions.py,sha256=wSiOXPiClVjkVgSU_VmxkoD1SUYGaoPbP0U5Aw-Ufg8,409
|
316
316
|
omlish/http/wsgi.py,sha256=czZsVUX-l2YTlMrUjKN49wRoP4rVpS0qpeBn4O5BoMY,948
|
317
317
|
omlish/http/coro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
318
|
-
omlish/http/coro/fdio.py,sha256=
|
319
|
-
omlish/http/coro/server.py,sha256=
|
318
|
+
omlish/http/coro/fdio.py,sha256=bd9K4EYVWbXV3e3npDPXI9DuDAruJiyDmrgFpgNcjzY,4035
|
319
|
+
omlish/http/coro/server.py,sha256=yNceytLNRArIS_GcRh2ppNEReqACR7Rpg8vCBxc311k,19707
|
320
320
|
omlish/http/coro/simple.py,sha256=Y1wJGAfdr0qz3gGpqpdpigbtquFUdksQi2dQGu8K1Z0,2872
|
321
321
|
omlish/inject/__init__.py,sha256=n0RC9UDGsBQQ39cST39-XJqJPq2M0tnnh9yJubW9azo,1891
|
322
322
|
omlish/inject/binder.py,sha256=DAbc8TZi5w8Mna0TUtq0mT4jeDVA7i7SlBtOFrh2swc,4185
|
@@ -424,7 +424,7 @@ omlish/lite/dataclasses.py,sha256=k1588egoF3h_Kb21tuQb8WyJ9wxhT06EztFvaKOHzNU,11
|
|
424
424
|
omlish/lite/inject.py,sha256=qBUftFeXMiRgANYbNS2e7TePMYyFAcuLgsJiLyMTW5o,28769
|
425
425
|
omlish/lite/json.py,sha256=7-02Ny4fq-6YAu5ynvqoijhuYXWpLmfCI19GUeZnb1c,740
|
426
426
|
omlish/lite/logs.py,sha256=CWFG0NKGhqNeEgryF5atN2gkPYbUdTINEw_s1phbINM,51
|
427
|
-
omlish/lite/marshal.py,sha256=
|
427
|
+
omlish/lite/marshal.py,sha256=UMwSLEM-QvkvnSHmcChJVkIXkGp9WAyMYyZMB-NZefw,18463
|
428
428
|
omlish/lite/maybes.py,sha256=7OlHJ8Q2r4wQ-aRbZSlJY7x0e8gDvufFdlohGEIJ3P4,833
|
429
429
|
omlish/lite/pycharm.py,sha256=pUOJevrPClSqTCEOkQBO11LKX2003tfDcp18a03QFrc,1163
|
430
430
|
omlish/lite/reflect.py,sha256=pzOY2PPuHH0omdtglkN6DheXDrGopdL3PtTJnejyLFU,2189
|
@@ -432,6 +432,7 @@ omlish/lite/resources.py,sha256=YNSmX1Ohck1aoWRs55a-o5ChVbFJIQhtbqE-XwF55Oc,326
|
|
432
432
|
omlish/lite/runtime.py,sha256=XQo408zxTdJdppUZqOWHyeUR50VlCpNIExNGHz4U6O4,459
|
433
433
|
omlish/lite/secrets.py,sha256=3Mz3V2jf__XU9qNHcH56sBSw95L3U2UPL24bjvobG0c,816
|
434
434
|
omlish/lite/strings.py,sha256=QGxT1Yh4oI8ycsfeobxnjEhvDob_GiAKLeIhZwo1j24,1986
|
435
|
+
omlish/lite/timing.py,sha256=aVu3hEDB_jyTF_ryZI7iU-xg4q8CNwqpp9Apfru_iwY,196
|
435
436
|
omlish/lite/types.py,sha256=fP5EMyBdEp2LmDxcHjUDtwAMdR06ISr9lKOL7smWfHM,140
|
436
437
|
omlish/lite/typing.py,sha256=U3-JaEnkDSYxK4tsu_MzUn3RP6qALBe5FXQXpD-licE,1090
|
437
438
|
omlish/logs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
@@ -447,6 +448,7 @@ omlish/logs/noisy.py,sha256=Ubc-eTH6ZbGYsLfUUi69JAotwuUwzb-SJBeGo_0dIZI,348
|
|
447
448
|
omlish/logs/protocol.py,sha256=NzyCeNBN-fyKpJinhECfjUQSd5MxZLiYbuLCTtW6QUU,4500
|
448
449
|
omlish/logs/proxy.py,sha256=A-ROPUUAlF397qTbEqhel6YhQMstNuXL3Xmts7w9dAo,2347
|
449
450
|
omlish/logs/standard.py,sha256=FbKdF2Z4Na5i2TNwKn0avLJXyICe2JKsPufjvKCHGn0,3162
|
451
|
+
omlish/logs/timing.py,sha256=XrFUHIPT4EHDujLKbGs9fGFMmoM3NEP8xPRaESJr7bQ,1513
|
450
452
|
omlish/logs/utils.py,sha256=mzHrZ9ji75p5A8qR29eUr05CBAHMb8J753MSkID_VaQ,393
|
451
453
|
omlish/manifests/__init__.py,sha256=P2B0dpT8D7l5lJwRGPA92IcQj6oeXfd90X5-q9BJrKg,51
|
452
454
|
omlish/manifests/load.py,sha256=LrWAvBfdzDkFdLuVwfw2RwFvLjxx-rvfkpU9eBsWeIc,5626
|
@@ -515,7 +517,7 @@ omlish/secrets/pwhash.py,sha256=Goktn-swmC6PXqfRBnDrH_Lr42vjckT712UyErPjzkw,4102
|
|
515
517
|
omlish/secrets/secrets.py,sha256=QNgOmRcIRK2fx49bIbBBM2rYbe6IhhLgk8fKvq8guoI,7963
|
516
518
|
omlish/secrets/ssl.py,sha256=TvO1BJeCCBPsOLjO-QH7Q0DC-NS8onfmRxbl4ntOnd8,147
|
517
519
|
omlish/secrets/subprocesses.py,sha256=ffjfbgPbEE_Pwb_87vG4yYR2CGZy3I31mHNCo_0JtHw,1212
|
518
|
-
omlish/secrets/tempssl.py,sha256=
|
520
|
+
omlish/secrets/tempssl.py,sha256=pAmTRFgR23pFRUAIzJrxeJg4JbYFvaVcEtWtvSYyxHw,1932
|
519
521
|
omlish/sockets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
520
522
|
omlish/sockets/addresses.py,sha256=vbVeQBkzI513H4vRv-JS89QtRbr9U8v5zqkm3oODl_s,1869
|
521
523
|
omlish/sockets/bind.py,sha256=TnG5nm0pnuMxRA02TG2W40RbutrPA6tkOJtbZvBjDWU,8063
|
@@ -527,20 +529,25 @@ omlish/sockets/server/server.py,sha256=mZmHPkCRPitous56_7FJdAsDLZag2wDqjj-LaYM8_
|
|
527
529
|
omlish/sockets/server/threading.py,sha256=YmW3Ym_p5j_F4SIH9BgRHIObywjq1HS39j9CGWIcMAY,2856
|
528
530
|
omlish/specs/__init__.py,sha256=zZwF8yXTEkSstYtORkDhVLK-_hWU8WOJCuBpognb_NY,118
|
529
531
|
omlish/specs/irc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
530
|
-
omlish/specs/irc/
|
531
|
-
omlish/specs/irc/
|
532
|
-
omlish/specs/irc/
|
533
|
-
omlish/specs/irc/
|
534
|
-
omlish/specs/irc/
|
535
|
-
omlish/specs/irc/format/nuh.py,sha256=96KJooCzdlmbliyLpoE8g4ccDSHzR0Fl1apu7gkExEQ,1282
|
536
|
-
omlish/specs/irc/format/parsing.py,sha256=OYSk7IbaZPpU5k1mRn-3reROPVehwyRAJs546vnEXI4,4053
|
537
|
-
omlish/specs/irc/format/rendering.py,sha256=PDhl5dIU9xffmIO3vHWTPh17Cb-E34vIkFLs-Ow3tmY,4909
|
538
|
-
omlish/specs/irc/format/tags.py,sha256=_HnzjPCGhLses_P3Os5ReuVdRacmanTb8kEeCxsfqWE,2779
|
539
|
-
omlish/specs/irc/format/utils.py,sha256=8VZavx37IospJvhwjnP39sYSiBwzcxNyCJ_doxrtM-Y,687
|
532
|
+
omlish/specs/irc/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
533
|
+
omlish/specs/irc/messages/base.py,sha256=JQWq4L-USYFw1DmHPpL3FiAwvynf6Hi48-zNdC__jT0,1240
|
534
|
+
omlish/specs/irc/messages/formats.py,sha256=uBPB0-_orWzBRAbcZEbS9Q-aZ3iVCmGZMoSau6-Ic04,2361
|
535
|
+
omlish/specs/irc/messages/messages.py,sha256=Q_2ceKfqcQTTzwbN9eFJfwwXnHrs_BtkUPFt42lGEHs,14073
|
536
|
+
omlish/specs/irc/messages/parsing.py,sha256=Zqtsfkd5auBtk0vEruloQyt067wSa8-3d_yglDFRi0g,2222
|
540
537
|
omlish/specs/irc/numerics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
541
538
|
omlish/specs/irc/numerics/formats.py,sha256=n--9bxFkY3p8G1K3aJJXj7FEK_tmGouBrB8Gu1WrEd0,2252
|
542
|
-
omlish/specs/irc/numerics/numerics.py,sha256=
|
539
|
+
omlish/specs/irc/numerics/numerics.py,sha256=iOEG9PqfGUiDh6gDgdiNUqVY6WAbMBIwEPPIma34JNo,18215
|
543
540
|
omlish/specs/irc/numerics/types.py,sha256=qbNDLxtz827JnIMh79-SGK1RdbEy44vZl6uQMIYGXyg,1287
|
541
|
+
omlish/specs/irc/protocol/LICENSE,sha256=1CT5_XkDMJ9HDZh0tX4TIsm7LfrSdljRX5EirPBhDYM,778
|
542
|
+
omlish/specs/irc/protocol/__init__.py,sha256=0OFSLrMS5jYFJCqH1LKv0UfTrp5faPQhlhYKBQyCZeA,1701
|
543
|
+
omlish/specs/irc/protocol/consts.py,sha256=iDCsJIyDE5-UnkIQpwCLzdbf3DUFWRmqkuVd0cZtujw,185
|
544
|
+
omlish/specs/irc/protocol/errors.py,sha256=cRP8c--kRts5Uwqn1xl1J97OI74hicG4UbkJs_EOSDg,334
|
545
|
+
omlish/specs/irc/protocol/message.py,sha256=SQP7IpdlxCncALiBD_01TxxOjQsBxbmLE0hxLB2Q0vU,398
|
546
|
+
omlish/specs/irc/protocol/nuh.py,sha256=96KJooCzdlmbliyLpoE8g4ccDSHzR0Fl1apu7gkExEQ,1282
|
547
|
+
omlish/specs/irc/protocol/parsing.py,sha256=OYSk7IbaZPpU5k1mRn-3reROPVehwyRAJs546vnEXI4,4053
|
548
|
+
omlish/specs/irc/protocol/rendering.py,sha256=PDhl5dIU9xffmIO3vHWTPh17Cb-E34vIkFLs-Ow3tmY,4909
|
549
|
+
omlish/specs/irc/protocol/tags.py,sha256=_HnzjPCGhLses_P3Os5ReuVdRacmanTb8kEeCxsfqWE,2779
|
550
|
+
omlish/specs/irc/protocol/utils.py,sha256=8VZavx37IospJvhwjnP39sYSiBwzcxNyCJ_doxrtM-Y,687
|
544
551
|
omlish/specs/jmespath/LICENSE,sha256=IH-ZZlZkS8XMkf_ubNVD1aYHQ2l_wd0tmHtXrCcYpRU,1113
|
545
552
|
omlish/specs/jmespath/__init__.py,sha256=9tsrquw1kXe1KAhTP3WeL0GlGBiTguQVxsC-lUYTWP4,2087
|
546
553
|
omlish/specs/jmespath/__main__.py,sha256=wIXm6bs08etNG_GZlN2rBkADPb0rKfL2HSkm8spnpxw,200
|
@@ -660,9 +667,9 @@ omlish/text/indent.py,sha256=YjtJEBYWuk8--b9JU_T6q4yxV85_TR7VEVr5ViRCFwk,1336
|
|
660
667
|
omlish/text/minja.py,sha256=jZC-fp3Xuhx48ppqsf2Sf1pHbC0t8XBB7UpUUoOk2Qw,5751
|
661
668
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
662
669
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
663
|
-
omlish-0.0.0.
|
664
|
-
omlish-0.0.0.
|
665
|
-
omlish-0.0.0.
|
666
|
-
omlish-0.0.0.
|
667
|
-
omlish-0.0.0.
|
668
|
-
omlish-0.0.0.
|
670
|
+
omlish-0.0.0.dev224.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
671
|
+
omlish-0.0.0.dev224.dist-info/METADATA,sha256=mQhHJnChb7Igih2af4khc6lOSNpkVqyv8j2xaVk0IpQ,4176
|
672
|
+
omlish-0.0.0.dev224.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
673
|
+
omlish-0.0.0.dev224.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
674
|
+
omlish-0.0.0.dev224.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
675
|
+
omlish-0.0.0.dev224.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|