omlish 0.0.0.dev222__py3-none-any.whl → 0.0.0.dev223__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 +14 -0
- omlish/http/parsing.py +13 -0
- omlish/lite/marshal.py +22 -6
- 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 +88 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev223.dist-info}/METADATA +5 -5
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev223.dist-info}/RECORD +32 -27
- /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.dev223.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev223.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev223.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev222.dist-info → omlish-0.0.0.dev223.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,51 @@ 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
|
+
|
269
|
+
@dc.dataclass(frozen=True)
|
270
|
+
class SubprocessRunOutput(ta.Generic[T]):
|
271
|
+
proc: T
|
272
|
+
|
273
|
+
returncode: int # noqa
|
274
|
+
|
275
|
+
stdout: ta.Optional[bytes] = None
|
276
|
+
stderr: ta.Optional[bytes] = None
|
277
|
+
|
278
|
+
|
258
279
|
class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
|
280
|
+
@abc.abstractmethod
|
281
|
+
def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
|
282
|
+
raise NotImplementedError
|
283
|
+
|
284
|
+
def run(
|
285
|
+
self,
|
286
|
+
*cmd: str,
|
287
|
+
input: ta.Any = None, # noqa
|
288
|
+
timeout: ta.Optional[float] = None,
|
289
|
+
check: bool = False,
|
290
|
+
capture_output: ta.Optional[bool] = None,
|
291
|
+
**kwargs: ta.Any,
|
292
|
+
) -> SubprocessRunOutput:
|
293
|
+
return self.run_(SubprocessRun(
|
294
|
+
cmd=cmd,
|
295
|
+
input=input,
|
296
|
+
timeout=timeout,
|
297
|
+
check=check,
|
298
|
+
capture_output=capture_output,
|
299
|
+
kwargs=kwargs,
|
300
|
+
))
|
301
|
+
|
302
|
+
#
|
303
|
+
|
259
304
|
@abc.abstractmethod
|
260
305
|
def check_call(
|
261
306
|
self,
|
@@ -319,6 +364,25 @@ class AbstractSubprocesses(BaseSubprocesses, abc.ABC):
|
|
319
364
|
|
320
365
|
|
321
366
|
class Subprocesses(AbstractSubprocesses):
|
367
|
+
def run_(self, run: SubprocessRun) -> SubprocessRunOutput[subprocess.CompletedProcess]:
|
368
|
+
proc = subprocess.run(
|
369
|
+
run.cmd,
|
370
|
+
input=run.input,
|
371
|
+
timeout=run.timeout,
|
372
|
+
check=run.check,
|
373
|
+
capture_output=run.capture_output or False,
|
374
|
+
**(run.kwargs or {}),
|
375
|
+
)
|
376
|
+
|
377
|
+
return SubprocessRunOutput(
|
378
|
+
proc=proc,
|
379
|
+
|
380
|
+
returncode=proc.returncode,
|
381
|
+
|
382
|
+
stdout=proc.stdout, # noqa
|
383
|
+
stderr=proc.stderr, # noqa
|
384
|
+
)
|
385
|
+
|
322
386
|
def check_call(
|
323
387
|
self,
|
324
388
|
*cmd: str,
|
@@ -344,6 +408,30 @@ subprocesses = Subprocesses()
|
|
344
408
|
|
345
409
|
|
346
410
|
class AbstractAsyncSubprocesses(BaseSubprocesses):
|
411
|
+
@abc.abstractmethod
|
412
|
+
async def run_(self, run: SubprocessRun) -> SubprocessRunOutput:
|
413
|
+
raise NotImplementedError
|
414
|
+
|
415
|
+
def run(
|
416
|
+
self,
|
417
|
+
*cmd: str,
|
418
|
+
input: ta.Any = None, # noqa
|
419
|
+
timeout: ta.Optional[float] = None,
|
420
|
+
check: bool = False,
|
421
|
+
capture_output: ta.Optional[bool] = None,
|
422
|
+
**kwargs: ta.Any,
|
423
|
+
) -> ta.Awaitable[SubprocessRunOutput]:
|
424
|
+
return self.run_(SubprocessRun(
|
425
|
+
cmd=cmd,
|
426
|
+
input=input,
|
427
|
+
timeout=timeout,
|
428
|
+
check=check,
|
429
|
+
capture_output=capture_output,
|
430
|
+
kwargs=kwargs,
|
431
|
+
))
|
432
|
+
|
433
|
+
#
|
434
|
+
|
347
435
|
@abc.abstractmethod
|
348
436
|
async def check_call(
|
349
437
|
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.dev223
|
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=cfcfKE_bobX_WDE8x_mLyrVgIGJv3TZdMAc3Zrzc3xs,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=kI9z5_D8J30BrAKu6FvsCvnIvmWGEMIc3jbGbvmSmFA,12510
|
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=QUjS2C3k7SqoL9yaAssfNIvfHYzNtg8Xfpsq2KC7fFU,1839
|
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
|
@@ -527,20 +527,25 @@ omlish/sockets/server/server.py,sha256=mZmHPkCRPitous56_7FJdAsDLZag2wDqjj-LaYM8_
|
|
527
527
|
omlish/sockets/server/threading.py,sha256=YmW3Ym_p5j_F4SIH9BgRHIObywjq1HS39j9CGWIcMAY,2856
|
528
528
|
omlish/specs/__init__.py,sha256=zZwF8yXTEkSstYtORkDhVLK-_hWU8WOJCuBpognb_NY,118
|
529
529
|
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
|
530
|
+
omlish/specs/irc/messages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
531
|
+
omlish/specs/irc/messages/base.py,sha256=JQWq4L-USYFw1DmHPpL3FiAwvynf6Hi48-zNdC__jT0,1240
|
532
|
+
omlish/specs/irc/messages/formats.py,sha256=uBPB0-_orWzBRAbcZEbS9Q-aZ3iVCmGZMoSau6-Ic04,2361
|
533
|
+
omlish/specs/irc/messages/messages.py,sha256=Q_2ceKfqcQTTzwbN9eFJfwwXnHrs_BtkUPFt42lGEHs,14073
|
534
|
+
omlish/specs/irc/messages/parsing.py,sha256=Zqtsfkd5auBtk0vEruloQyt067wSa8-3d_yglDFRi0g,2222
|
540
535
|
omlish/specs/irc/numerics/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
541
536
|
omlish/specs/irc/numerics/formats.py,sha256=n--9bxFkY3p8G1K3aJJXj7FEK_tmGouBrB8Gu1WrEd0,2252
|
542
|
-
omlish/specs/irc/numerics/numerics.py,sha256=
|
537
|
+
omlish/specs/irc/numerics/numerics.py,sha256=iOEG9PqfGUiDh6gDgdiNUqVY6WAbMBIwEPPIma34JNo,18215
|
543
538
|
omlish/specs/irc/numerics/types.py,sha256=qbNDLxtz827JnIMh79-SGK1RdbEy44vZl6uQMIYGXyg,1287
|
539
|
+
omlish/specs/irc/protocol/LICENSE,sha256=1CT5_XkDMJ9HDZh0tX4TIsm7LfrSdljRX5EirPBhDYM,778
|
540
|
+
omlish/specs/irc/protocol/__init__.py,sha256=0OFSLrMS5jYFJCqH1LKv0UfTrp5faPQhlhYKBQyCZeA,1701
|
541
|
+
omlish/specs/irc/protocol/consts.py,sha256=iDCsJIyDE5-UnkIQpwCLzdbf3DUFWRmqkuVd0cZtujw,185
|
542
|
+
omlish/specs/irc/protocol/errors.py,sha256=cRP8c--kRts5Uwqn1xl1J97OI74hicG4UbkJs_EOSDg,334
|
543
|
+
omlish/specs/irc/protocol/message.py,sha256=SQP7IpdlxCncALiBD_01TxxOjQsBxbmLE0hxLB2Q0vU,398
|
544
|
+
omlish/specs/irc/protocol/nuh.py,sha256=96KJooCzdlmbliyLpoE8g4ccDSHzR0Fl1apu7gkExEQ,1282
|
545
|
+
omlish/specs/irc/protocol/parsing.py,sha256=OYSk7IbaZPpU5k1mRn-3reROPVehwyRAJs546vnEXI4,4053
|
546
|
+
omlish/specs/irc/protocol/rendering.py,sha256=PDhl5dIU9xffmIO3vHWTPh17Cb-E34vIkFLs-Ow3tmY,4909
|
547
|
+
omlish/specs/irc/protocol/tags.py,sha256=_HnzjPCGhLses_P3Os5ReuVdRacmanTb8kEeCxsfqWE,2779
|
548
|
+
omlish/specs/irc/protocol/utils.py,sha256=8VZavx37IospJvhwjnP39sYSiBwzcxNyCJ_doxrtM-Y,687
|
544
549
|
omlish/specs/jmespath/LICENSE,sha256=IH-ZZlZkS8XMkf_ubNVD1aYHQ2l_wd0tmHtXrCcYpRU,1113
|
545
550
|
omlish/specs/jmespath/__init__.py,sha256=9tsrquw1kXe1KAhTP3WeL0GlGBiTguQVxsC-lUYTWP4,2087
|
546
551
|
omlish/specs/jmespath/__main__.py,sha256=wIXm6bs08etNG_GZlN2rBkADPb0rKfL2HSkm8spnpxw,200
|
@@ -660,9 +665,9 @@ omlish/text/indent.py,sha256=YjtJEBYWuk8--b9JU_T6q4yxV85_TR7VEVr5ViRCFwk,1336
|
|
660
665
|
omlish/text/minja.py,sha256=jZC-fp3Xuhx48ppqsf2Sf1pHbC0t8XBB7UpUUoOk2Qw,5751
|
661
666
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
662
667
|
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.
|
668
|
+
omlish-0.0.0.dev223.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
669
|
+
omlish-0.0.0.dev223.dist-info/METADATA,sha256=fmmzRE5W14ixJfioXsdtMRVBzze_mKcI_1ZFfKDVQ34,4176
|
670
|
+
omlish-0.0.0.dev223.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
671
|
+
omlish-0.0.0.dev223.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
672
|
+
omlish-0.0.0.dev223.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
673
|
+
omlish-0.0.0.dev223.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
|