omlish 0.0.0.dev222__py3-none-any.whl → 0.0.0.dev223__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- 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
|