omlish 0.0.0.dev148__py3-none-any.whl → 0.0.0.dev149__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/argparse/all.py +45 -0
- omlish/{argparse.py → argparse/cli.py} +71 -107
- omlish/check.py +2 -0
- omlish/io/__init__.py +0 -3
- omlish/{lite/io.py → io/buffers.py} +8 -7
- omlish/io/fdio/__init__.py +0 -0
- omlish/{lite → io}/fdio/corohttp.py +9 -9
- omlish/{lite → io}/fdio/handlers.py +2 -2
- omlish/lite/check.py +6 -1
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev149.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev149.dist-info}/RECORD +20 -18
- /omlish/{lite/fdio → argparse}/__init__.py +0 -0
- /omlish/{lite → io}/fdio/kqueue.py +0 -0
- /omlish/{lite → io}/fdio/manager.py +0 -0
- /omlish/{lite → io}/fdio/pollers.py +0 -0
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev149.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev149.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev149.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev149.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
omlish/argparse/all.py
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
# ruff: noqa: I001
|
2
|
+
import argparse
|
3
|
+
|
4
|
+
from .cli import ( # noqa
|
5
|
+
ArgparseArg as Arg,
|
6
|
+
argparse_arg as arg,
|
7
|
+
|
8
|
+
ArgparseCommandFn as CommandFn,
|
9
|
+
ArgparseCommand as Command,
|
10
|
+
argparse_command as command,
|
11
|
+
|
12
|
+
ArgparseCli as Cli,
|
13
|
+
)
|
14
|
+
|
15
|
+
|
16
|
+
##
|
17
|
+
|
18
|
+
|
19
|
+
SUPPRESS = argparse.SUPPRESS
|
20
|
+
|
21
|
+
OPTIONAL = argparse.OPTIONAL
|
22
|
+
ZERO_OR_MORE = argparse.ZERO_OR_MORE
|
23
|
+
ONE_OR_MORE = argparse.ONE_OR_MORE
|
24
|
+
PARSER = argparse.PARSER
|
25
|
+
REMAINDER = argparse.REMAINDER
|
26
|
+
|
27
|
+
HelpFormatter = argparse.HelpFormatter
|
28
|
+
RawDescriptionHelpFormatter = argparse.RawDescriptionHelpFormatter
|
29
|
+
RawTextHelpFormatter = argparse.RawTextHelpFormatter
|
30
|
+
ArgumentDefaultsHelpFormatter = argparse.ArgumentDefaultsHelpFormatter
|
31
|
+
|
32
|
+
MetavarTypeHelpFormatter = argparse.MetavarTypeHelpFormatter
|
33
|
+
|
34
|
+
ArgumentError = argparse.ArgumentError
|
35
|
+
ArgumentTypeError = argparse.ArgumentTypeError
|
36
|
+
|
37
|
+
Action = argparse.Action
|
38
|
+
BooleanOptionalAction = argparse.BooleanOptionalAction
|
39
|
+
SubParsersAction = argparse._SubParsersAction # noqa
|
40
|
+
|
41
|
+
FileType = argparse.FileType
|
42
|
+
|
43
|
+
Namespace = argparse.Namespace
|
44
|
+
|
45
|
+
ArgumentParser = argparse.ArgumentParser
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# ruff: noqa: UP006 UP007
|
2
|
+
# @omlish-lite
|
1
3
|
"""
|
2
4
|
TODO:
|
3
5
|
- default command
|
@@ -9,8 +11,11 @@ import functools
|
|
9
11
|
import sys
|
10
12
|
import typing as ta
|
11
13
|
|
12
|
-
from . import
|
13
|
-
from . import
|
14
|
+
from ..lite.check import check_arg
|
15
|
+
from ..lite.check import check_isinstance
|
16
|
+
from ..lite.check import check_not_empty
|
17
|
+
from ..lite.check import check_not_in
|
18
|
+
from ..lite.check import check_not_isinstance
|
14
19
|
|
15
20
|
|
16
21
|
T = ta.TypeVar('T')
|
@@ -19,43 +24,11 @@ T = ta.TypeVar('T')
|
|
19
24
|
##
|
20
25
|
|
21
26
|
|
22
|
-
SUPPRESS = argparse.SUPPRESS
|
23
|
-
|
24
|
-
OPTIONAL = argparse.OPTIONAL
|
25
|
-
ZERO_OR_MORE = argparse.ZERO_OR_MORE
|
26
|
-
ONE_OR_MORE = argparse.ONE_OR_MORE
|
27
|
-
PARSER = argparse.PARSER
|
28
|
-
REMAINDER = argparse.REMAINDER
|
29
|
-
|
30
|
-
HelpFormatter = argparse.HelpFormatter
|
31
|
-
RawDescriptionHelpFormatter = argparse.RawDescriptionHelpFormatter
|
32
|
-
RawTextHelpFormatter = argparse.RawTextHelpFormatter
|
33
|
-
ArgumentDefaultsHelpFormatter = argparse.ArgumentDefaultsHelpFormatter
|
34
|
-
|
35
|
-
MetavarTypeHelpFormatter = argparse.MetavarTypeHelpFormatter
|
36
|
-
|
37
|
-
ArgumentError = argparse.ArgumentError
|
38
|
-
ArgumentTypeError = argparse.ArgumentTypeError
|
39
|
-
|
40
|
-
Action = argparse.Action
|
41
|
-
BooleanOptionalAction = argparse.BooleanOptionalAction
|
42
|
-
SubParsersAction = argparse._SubParsersAction # noqa
|
43
|
-
|
44
|
-
FileType = argparse.FileType
|
45
|
-
|
46
|
-
Namespace = argparse.Namespace
|
47
|
-
|
48
|
-
ArgumentParser = argparse.ArgumentParser
|
49
|
-
|
50
|
-
|
51
|
-
##
|
52
|
-
|
53
|
-
|
54
27
|
@dc.dataclass(eq=False)
|
55
|
-
class
|
28
|
+
class ArgparseArg:
|
56
29
|
args: ta.Sequence[ta.Any]
|
57
30
|
kwargs: ta.Mapping[str, ta.Any]
|
58
|
-
dest: str
|
31
|
+
dest: ta.Optional[str] = None
|
59
32
|
|
60
33
|
def __get__(self, instance, owner=None):
|
61
34
|
if instance is None:
|
@@ -63,42 +36,42 @@ class Arg:
|
|
63
36
|
return getattr(instance.args, self.dest) # type: ignore
|
64
37
|
|
65
38
|
|
66
|
-
def
|
67
|
-
return
|
39
|
+
def argparse_arg(*args, **kwargs) -> ArgparseArg:
|
40
|
+
return ArgparseArg(args, kwargs)
|
68
41
|
|
69
42
|
|
70
43
|
#
|
71
44
|
|
72
45
|
|
73
|
-
|
46
|
+
ArgparseCommandFn = ta.Callable[[], ta.Optional[int]] # ta.TypeAlias
|
74
47
|
|
75
48
|
|
76
49
|
@dc.dataclass(eq=False)
|
77
|
-
class
|
50
|
+
class ArgparseCommand:
|
78
51
|
name: str
|
79
|
-
fn:
|
80
|
-
args: ta.Sequence[
|
52
|
+
fn: ArgparseCommandFn
|
53
|
+
args: ta.Sequence[ArgparseArg] = () # noqa
|
81
54
|
|
82
|
-
_: dc.KW_ONLY
|
55
|
+
# _: dc.KW_ONLY
|
83
56
|
|
84
|
-
aliases: ta.Sequence[str]
|
85
|
-
parent: ta.Optional['
|
57
|
+
aliases: ta.Optional[ta.Sequence[str]] = None
|
58
|
+
parent: ta.Optional['ArgparseCommand'] = None
|
86
59
|
accepts_unknown: bool = False
|
87
60
|
|
88
61
|
def __post_init__(self) -> None:
|
89
62
|
def check_name(s: str) -> None:
|
90
|
-
|
91
|
-
|
92
|
-
|
63
|
+
check_isinstance(s, str)
|
64
|
+
check_not_in('_', s)
|
65
|
+
check_not_empty(s)
|
93
66
|
check_name(self.name)
|
94
|
-
|
67
|
+
check_not_isinstance(self.aliases, str)
|
95
68
|
for a in self.aliases or []:
|
96
69
|
check_name(a)
|
97
70
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
71
|
+
check_arg(callable(self.fn))
|
72
|
+
check_arg(all(isinstance(a, ArgparseArg) for a in self.args))
|
73
|
+
check_isinstance(self.parent, (ArgparseCommand, type(None)))
|
74
|
+
check_isinstance(self.accepts_unknown, bool)
|
102
75
|
|
103
76
|
functools.update_wrapper(self, self.fn)
|
104
77
|
|
@@ -107,25 +80,25 @@ class Command:
|
|
107
80
|
return self
|
108
81
|
return dc.replace(self, fn=self.fn.__get__(instance, owner)) # noqa
|
109
82
|
|
110
|
-
def __call__(self, *args, **kwargs) -> int
|
83
|
+
def __call__(self, *args, **kwargs) -> ta.Optional[int]:
|
111
84
|
return self.fn(*args, **kwargs)
|
112
85
|
|
113
86
|
|
114
|
-
def
|
115
|
-
*args:
|
116
|
-
name: str
|
117
|
-
aliases: ta.Iterable[str]
|
118
|
-
parent:
|
87
|
+
def argparse_command(
|
88
|
+
*args: ArgparseArg,
|
89
|
+
name: ta.Optional[str] = None,
|
90
|
+
aliases: ta.Optional[ta.Iterable[str]] = None,
|
91
|
+
parent: ta.Optional[ArgparseCommand] = None,
|
119
92
|
accepts_unknown: bool = False,
|
120
|
-
) -> ta.Any: # ta.Callable[[
|
93
|
+
) -> ta.Any: # ta.Callable[[ArgparseCommandFn], ArgparseCommand]: # FIXME
|
121
94
|
for arg in args:
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
95
|
+
check_isinstance(arg, ArgparseArg)
|
96
|
+
check_isinstance(name, (str, type(None)))
|
97
|
+
check_isinstance(parent, (ArgparseCommand, type(None)))
|
98
|
+
check_not_isinstance(aliases, str)
|
126
99
|
|
127
100
|
def inner(fn):
|
128
|
-
return
|
101
|
+
return ArgparseCommand(
|
129
102
|
(name if name is not None else fn.__name__).replace('_', '-'),
|
130
103
|
fn,
|
131
104
|
args,
|
@@ -140,7 +113,7 @@ def command(
|
|
140
113
|
##
|
141
114
|
|
142
115
|
|
143
|
-
def
|
116
|
+
def _get_argparse_arg_ann_kwargs(ann: ta.Any) -> ta.Mapping[str, ta.Any]:
|
144
117
|
if ann is str:
|
145
118
|
return {}
|
146
119
|
elif ann is int:
|
@@ -153,48 +126,51 @@ def get_arg_ann_kwargs(ann: ta.Any) -> ta.Mapping[str, ta.Any]:
|
|
153
126
|
raise TypeError(ann)
|
154
127
|
|
155
128
|
|
156
|
-
class
|
157
|
-
|
129
|
+
class _ArgparseCliAnnotationBox:
|
158
130
|
def __init__(self, annotations: ta.Mapping[str, ta.Any]) -> None:
|
159
131
|
super().__init__()
|
160
132
|
self.__annotations__ = annotations # type: ignore
|
161
133
|
|
162
134
|
|
163
|
-
class
|
135
|
+
class ArgparseCli:
|
136
|
+
def __init__(self, argv: ta.Optional[ta.Sequence[str]] = None) -> None:
|
137
|
+
super().__init__()
|
138
|
+
|
139
|
+
self._argv = argv if argv is not None else sys.argv[1:]
|
164
140
|
|
165
|
-
|
166
|
-
if not bases:
|
167
|
-
return super().__new__(mcls, name, tuple(bases), dict(namespace))
|
141
|
+
self._args, self._unknown_args = self.get_parser().parse_known_args(self._argv)
|
168
142
|
|
169
|
-
|
170
|
-
|
143
|
+
def __init_subclass__(cls, **kwargs: ta.Any) -> None:
|
144
|
+
super().__init_subclass__(**kwargs)
|
145
|
+
|
146
|
+
ns = cls.__dict__
|
171
147
|
|
172
148
|
objs = {}
|
173
|
-
mro =
|
174
|
-
for bns in [bcls.__dict__ for bcls in reversed(mro)] + [
|
149
|
+
mro = cls.__mro__[::-1]
|
150
|
+
for bns in [bcls.__dict__ for bcls in reversed(mro)] + [ns]:
|
175
151
|
bseen = set() # type: ignore
|
176
152
|
for k, v in bns.items():
|
177
|
-
if isinstance(v, (
|
178
|
-
|
153
|
+
if isinstance(v, (ArgparseCommand, ArgparseArg)):
|
154
|
+
check_not_in(v, bseen)
|
179
155
|
bseen.add(v)
|
180
156
|
objs[k] = v
|
181
157
|
elif k in objs:
|
182
158
|
del [k]
|
183
159
|
|
184
|
-
anns = ta.get_type_hints(
|
160
|
+
anns = ta.get_type_hints(_ArgparseCliAnnotationBox({
|
185
161
|
**{k: v for bcls in reversed(mro) for k, v in getattr(bcls, '__annotations__', {}).items()},
|
186
|
-
**
|
187
|
-
}), globalns=
|
162
|
+
**ns.get('__annotations__', {}),
|
163
|
+
}), globalns=ns.get('__globals__', {}))
|
188
164
|
|
189
|
-
if '
|
190
|
-
parser =
|
165
|
+
if '_parser' in ns:
|
166
|
+
parser = check_isinstance(ns['_parser'], argparse.ArgumentParser)
|
191
167
|
else:
|
192
|
-
parser = ArgumentParser()
|
193
|
-
|
168
|
+
parser = argparse.ArgumentParser()
|
169
|
+
setattr(cls, '_parser', parser)
|
194
170
|
|
195
171
|
subparsers = parser.add_subparsers()
|
196
172
|
for att, obj in objs.items():
|
197
|
-
if isinstance(obj,
|
173
|
+
if isinstance(obj, ArgparseCommand):
|
198
174
|
if obj.parent is not None:
|
199
175
|
raise NotImplementedError
|
200
176
|
for cn in [obj.name, *(obj.aliases or [])]:
|
@@ -203,7 +179,7 @@ class _CliMeta(type):
|
|
203
179
|
if (
|
204
180
|
len(arg.args) == 1 and
|
205
181
|
isinstance(arg.args[0], str) and
|
206
|
-
not (n :=
|
182
|
+
not (n := check_isinstance(arg.args[0], str)).startswith('-') and
|
207
183
|
'metavar' not in arg.kwargs
|
208
184
|
):
|
209
185
|
cparser.add_argument(
|
@@ -215,9 +191,9 @@ class _CliMeta(type):
|
|
215
191
|
cparser.add_argument(*arg.args, **arg.kwargs)
|
216
192
|
cparser.set_defaults(_cmd=obj)
|
217
193
|
|
218
|
-
elif isinstance(obj,
|
194
|
+
elif isinstance(obj, ArgparseArg):
|
219
195
|
if att in anns:
|
220
|
-
akwargs =
|
196
|
+
akwargs = _get_argparse_arg_ann_kwargs(anns[att])
|
221
197
|
obj.kwargs = {**akwargs, **obj.kwargs}
|
222
198
|
if not obj.dest:
|
223
199
|
if 'dest' in obj.kwargs:
|
@@ -229,22 +205,10 @@ class _CliMeta(type):
|
|
229
205
|
else:
|
230
206
|
raise TypeError(obj)
|
231
207
|
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
class Cli(metaclass=_CliMeta):
|
236
|
-
|
237
|
-
def __init__(self, argv: ta.Sequence[str] | None = None) -> None:
|
238
|
-
super().__init__()
|
239
|
-
|
240
|
-
self._argv = argv if argv is not None else sys.argv[1:]
|
241
|
-
|
242
|
-
self._args, self._unknown_args = self.get_parser().parse_known_args(self._argv)
|
243
|
-
|
244
|
-
_parser: ta.ClassVar[ArgumentParser]
|
208
|
+
_parser: ta.ClassVar[argparse.ArgumentParser]
|
245
209
|
|
246
210
|
@classmethod
|
247
|
-
def get_parser(cls) -> ArgumentParser:
|
211
|
+
def get_parser(cls) -> argparse.ArgumentParser:
|
248
212
|
return cls._parser
|
249
213
|
|
250
214
|
@property
|
@@ -252,17 +216,17 @@ class Cli(metaclass=_CliMeta):
|
|
252
216
|
return self._argv
|
253
217
|
|
254
218
|
@property
|
255
|
-
def args(self) -> Namespace:
|
219
|
+
def args(self) -> argparse.Namespace:
|
256
220
|
return self._args
|
257
221
|
|
258
222
|
@property
|
259
223
|
def unknown_args(self) -> ta.Sequence[str]:
|
260
224
|
return self._unknown_args
|
261
225
|
|
262
|
-
def _run_cmd(self, cmd:
|
226
|
+
def _run_cmd(self, cmd: ArgparseCommand) -> ta.Optional[int]:
|
263
227
|
return cmd.__get__(self, type(self))()
|
264
228
|
|
265
|
-
def __call__(self) -> int
|
229
|
+
def __call__(self) -> ta.Optional[int]:
|
266
230
|
cmd = getattr(self.args, '_cmd', None)
|
267
231
|
|
268
232
|
if self._unknown_args and not (cmd is not None and cmd.accepts_unknown):
|
@@ -270,7 +234,7 @@ class Cli(metaclass=_CliMeta):
|
|
270
234
|
if (parser := self.get_parser()).exit_on_error: # type: ignore
|
271
235
|
parser.error(msg)
|
272
236
|
else:
|
273
|
-
raise ArgumentError(None, msg)
|
237
|
+
raise argparse.ArgumentError(None, msg)
|
274
238
|
|
275
239
|
if cmd is None:
|
276
240
|
self.get_parser().print_help()
|
omlish/check.py
CHANGED
omlish/io/__init__.py
CHANGED
@@ -1,11 +1,12 @@
|
|
1
1
|
# ruff: noqa: UP007
|
2
|
+
# @omlish-lite
|
2
3
|
import io
|
3
4
|
import typing as ta
|
4
5
|
|
5
|
-
from .check import check_isinstance
|
6
|
-
from .check import
|
7
|
-
from .check import check_not_none
|
8
|
-
from .strings import attr_repr
|
6
|
+
from ..lite.check import check_isinstance
|
7
|
+
from ..lite.check import check_not_empty
|
8
|
+
from ..lite.check import check_not_none
|
9
|
+
from ..lite.strings import attr_repr
|
9
10
|
|
10
11
|
|
11
12
|
class DelimitingBuffer:
|
@@ -192,7 +193,7 @@ class IncrementalWriteBuffer:
|
|
192
193
|
) -> None:
|
193
194
|
super().__init__()
|
194
195
|
|
195
|
-
|
196
|
+
check_not_empty(data)
|
196
197
|
self._len = len(data)
|
197
198
|
self._write_size = write_size
|
198
199
|
|
@@ -207,11 +208,11 @@ class IncrementalWriteBuffer:
|
|
207
208
|
return self._len - self._pos
|
208
209
|
|
209
210
|
def write(self, fn: ta.Callable[[bytes], int]) -> int:
|
210
|
-
lst =
|
211
|
+
lst = check_not_empty(self._lst)
|
211
212
|
|
212
213
|
t = 0
|
213
214
|
for i, d in enumerate(lst): # noqa
|
214
|
-
n = fn(
|
215
|
+
n = fn(check_not_empty(d))
|
215
216
|
if not n:
|
216
217
|
break
|
217
218
|
t += n
|
File without changes
|
@@ -2,15 +2,15 @@
|
|
2
2
|
import socket
|
3
3
|
import typing as ta
|
4
4
|
|
5
|
-
from
|
6
|
-
from
|
7
|
-
from
|
8
|
-
from
|
9
|
-
from
|
10
|
-
from
|
11
|
-
from
|
12
|
-
from ..
|
13
|
-
from ..
|
5
|
+
from ...lite.check import check_isinstance
|
6
|
+
from ...lite.check import check_none
|
7
|
+
from ...lite.check import check_not_none
|
8
|
+
from ...lite.check import check_state
|
9
|
+
from ...lite.http.coroserver import CoroHttpServer
|
10
|
+
from ...lite.http.handlers import HttpHandler
|
11
|
+
from ...lite.socket import SocketAddress
|
12
|
+
from ..buffers import IncrementalWriteBuffer
|
13
|
+
from ..buffers import ReadableListBuffer
|
14
14
|
from .handlers import SocketFdioHandler
|
15
15
|
|
16
16
|
|
omlish/lite/check.py
CHANGED
@@ -41,6 +41,11 @@ def check_non_empty_str(v: ta.Optional[str]) -> str:
|
|
41
41
|
return v
|
42
42
|
|
43
43
|
|
44
|
+
def check_arg(v: bool, msg: str = 'Illegal argument') -> None:
|
45
|
+
if not v:
|
46
|
+
raise ValueError(msg)
|
47
|
+
|
48
|
+
|
44
49
|
def check_state(v: bool, msg: str = 'Illegal state') -> None:
|
45
50
|
if not v:
|
46
51
|
raise ValueError(msg)
|
@@ -93,7 +98,7 @@ def check_empty(v: SizedT) -> SizedT:
|
|
93
98
|
return v
|
94
99
|
|
95
100
|
|
96
|
-
def
|
101
|
+
def check_not_empty(v: SizedT) -> SizedT:
|
97
102
|
if not len(v):
|
98
103
|
raise ValueError(v)
|
99
104
|
return v
|
@@ -1,10 +1,9 @@
|
|
1
1
|
omlish/.manifests.json,sha256=RX24SRc6DCEg77PUVnaXOKCWa5TF_c9RQJdGIf7gl9c,1135
|
2
|
-
omlish/__about__.py,sha256=
|
2
|
+
omlish/__about__.py,sha256=l0_vBxdzereK5v8M0TtiX5ahNihp0_HGdpH8Oq5x5Ag,3409
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
4
|
-
omlish/argparse.py,sha256=cqKGAqcxuxv_s62z0gq29L9KAvg_3-_rFvXKjVpRJjo,8126
|
5
4
|
omlish/c3.py,sha256=ubu7lHwss5V4UznbejAI0qXhXahrU01MysuHOZI9C4U,8116
|
6
5
|
omlish/cached.py,sha256=UI-XTFBwA6YXWJJJeBn-WkwBkfzDjLBBaZf4nIJA9y0,510
|
7
|
-
omlish/check.py,sha256=
|
6
|
+
omlish/check.py,sha256=KWS5IRrBCjzfK_nTRQeF0sRlbo46G-6w4dvkeJDUw8I,10651
|
8
7
|
omlish/datetimes.py,sha256=HajeM1kBvwlTa-uR1TTZHmZ3zTPnnUr1uGGQhiO1XQ0,2152
|
9
8
|
omlish/defs.py,sha256=9uUjJuVIbCBL3g14fyzAp-9gH935MFofvlfOGwcBIaM,4913
|
10
9
|
omlish/dynamic.py,sha256=35C_cCX_Vq2HrHzGk5T-zbrMvmUdiIiwDzDNixczoDo,6541
|
@@ -75,6 +74,9 @@ omlish/antlr/_runtime/tree/__init__.py,sha256=Jn5lqTVbeUQXD5a4IxDHKibOatAQWVTlaQ
|
|
75
74
|
omlish/antlr/_runtime/xpath/XPath.py,sha256=CbS0Fpnd2aRt_nQUBJlTpoHpxCyT9qbVW8ldj1aQJKY,9643
|
76
75
|
omlish/antlr/_runtime/xpath/XPathLexer.py,sha256=xFtdr4ZXMZxb2dnB_ggWyhvlQiC7RXQlDS5ePhTyOGg,3505
|
77
76
|
omlish/antlr/_runtime/xpath/__init__.py,sha256=lMd_BbXYdlDhZQN_q0TKN978XW5G0pq618F0NaLkpFE,71
|
77
|
+
omlish/argparse/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
78
|
+
omlish/argparse/all.py,sha256=EfUSf27vFWqa4Q93AycU5YRsrHt-Nx3pU3uNVapb-EE,1054
|
79
|
+
omlish/argparse/cli.py,sha256=SULYDE7BDGcU_dfKLguIcBQ0k_ttsyCjPjeqdHBN3Qc,7607
|
78
80
|
omlish/asyncs/__init__.py,sha256=uUz9ziKh4_QrgmdhKFMgq6j7mFbiZd3LiogguDCQsGI,587
|
79
81
|
omlish/asyncs/anyio.py,sha256=gfpx-D8QGmUfhnQxHEaHXcAP8zSMQjcGw4COFTGNnHI,8021
|
80
82
|
omlish/asyncs/asyncio.py,sha256=JfM59QgB3asgEbrps0zoVbNjWD4kL2XdsEkRMEIoFos,971
|
@@ -256,8 +258,9 @@ omlish/inject/impl/privates.py,sha256=alpCYyk5VJ9lJknbRH2nLVNFYVvFhkj-VC1Vco3zCF
|
|
256
258
|
omlish/inject/impl/providers.py,sha256=QnwhsujJFIHC0JTgd2Wlo1kP53i3CWTrj1nKU2DNxwg,2375
|
257
259
|
omlish/inject/impl/proxy.py,sha256=1ko0VaKqzu9UG8bIldp9xtUrAVUOFTKWKTjOCqIGr4s,1636
|
258
260
|
omlish/inject/impl/scopes.py,sha256=hKnzNieB-fJSFEXDP_QG1mCfIKoVFIfFlf9LiIt5tk4,5920
|
259
|
-
omlish/io/__init__.py,sha256=
|
261
|
+
omlish/io/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
260
262
|
omlish/io/abc.py,sha256=Cxs8KB1B_69rxpUYxI-MTsilAmNooJJn3w07DKqYKkE,1255
|
263
|
+
omlish/io/buffers.py,sha256=JoifktnJxnNfL8WdhqbcDwEzBcOm-3jJbFk6CooE6aQ,5378
|
261
264
|
omlish/io/pyio.py,sha256=q4RBFVpBE5PYjnGPGT-_4pcZb7dFJmLJ4LtI8OoDRQY,95433
|
262
265
|
omlish/io/trampoline.py,sha256=oUKTQg1F5xQS1431Kt7MbK-NZpX509ubcXU-s86xJr8,7171
|
263
266
|
omlish/io/compress/__init__.py,sha256=qV-aDfPWykTMYcoQmE8THZ4KFDRzqwN3QPPNEJVarXY,86
|
@@ -272,6 +275,12 @@ omlish/io/compress/lzma.py,sha256=8qxi7TniLN00LyJIJLyp6W7UUU50JBaPxxoXYg2j2XQ,22
|
|
272
275
|
omlish/io/compress/snappy.py,sha256=kCPgZ7PTBAxAnmYzpQCq4HKUIJ4APeAEXsU3Vg2CaDU,411
|
273
276
|
omlish/io/compress/zlib.py,sha256=MtnVGfzDlRU1LPl2J8Sa3wwgqnTVBx2uclZygWpH9xI,2115
|
274
277
|
omlish/io/compress/zstd.py,sha256=LrYWVHzk-TqWJA_Bnci2i8QOtrqnFFpppLQhLqanDWM,668
|
278
|
+
omlish/io/fdio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
279
|
+
omlish/io/fdio/corohttp.py,sha256=fJKNpED19W_goXdZ6CN_supOyeaMQNgps-E0TQxxjlo,4132
|
280
|
+
omlish/io/fdio/handlers.py,sha256=ZtJ6MOVVRjLuKim9sfGMJsVCRvOTMvFYNPfzp1Cyn7M,1353
|
281
|
+
omlish/io/fdio/kqueue.py,sha256=YgGBQibkAUYODYDiGl7Enjtx1oQsJXuDsBLBXgqlLQw,3832
|
282
|
+
omlish/io/fdio/manager.py,sha256=q4wWf7nKrNtjx6yPEvrVnFt4UtK_BTvVlquEGw7poEo,1250
|
283
|
+
omlish/io/fdio/pollers.py,sha256=yNadAt3W5wd90PFmd3vD77bq5QwoVb2A6SM2JjZpKRs,5507
|
275
284
|
omlish/io/generators/__init__.py,sha256=40DTZUqyss40dlgm68yKAtiAlqeIlYylTi8zaFrUW40,1135
|
276
285
|
omlish/io/generators/consts.py,sha256=4r6IMLBMic6MJHVn9UiORIkkPAuxsqtzFT3KV0fatC0,33
|
277
286
|
omlish/io/generators/direct.py,sha256=A9VJB1rNKU3l-NatpYIwyCLI3R_ybGglmdx6sAtoTo4,324
|
@@ -312,12 +321,11 @@ omlish/lifecycles/states.py,sha256=zqMOU2ZU-MDNnWuwauM3_anIAiXM8LoBDElDEraptFg,1
|
|
312
321
|
omlish/lifecycles/transitions.py,sha256=qQtFby-h4VzbvgaUqT2NnbNumlcOx9FVVADP9t83xj4,1939
|
313
322
|
omlish/lite/__init__.py,sha256=Y3l4WY4JRi2uLG6kgbGp93fuGfkxkKwZDvhsa0Rwgtk,15
|
314
323
|
omlish/lite/cached.py,sha256=hBW77-F7ZLtFqbLwVrlqaJ4-iFHMQleMWZXaZN1IubA,1308
|
315
|
-
omlish/lite/check.py,sha256=
|
324
|
+
omlish/lite/check.py,sha256=VOf_skD5hRzny_aqxykihQRs0PYd3SwkuihXJ2Bfaps,1874
|
316
325
|
omlish/lite/contextmanagers.py,sha256=DRarS2gx15tbse1YzyI8ZLdBmWYjFgmKPe-i4CSNDYg,1458
|
317
326
|
omlish/lite/deathsig.py,sha256=Etz04WX6R2PXQ-BgqJyVJ0C5Pqym6Ds6PAG7p1cqr5o,626
|
318
327
|
omlish/lite/docker.py,sha256=Dj_7lQjs2sFPc_SmUn5CpJF3LnQQnckEBYGBKz8u5tE,392
|
319
328
|
omlish/lite/inject.py,sha256=aRRmFb6azTKF208ogYwVCEopNZx7496Ta1GZmL_IKBA,23716
|
320
|
-
omlish/lite/io.py,sha256=3ECgUXdRnXyS6pGTSoVr6oB4moI38EpWxTq08zaTM-U,5339
|
321
329
|
omlish/lite/journald.py,sha256=f5Y2Q6-6O3iK_7MoGiwZwoQEOcP7LfkxxQNUR9tMjJM,3882
|
322
330
|
omlish/lite/json.py,sha256=7-02Ny4fq-6YAu5ynvqoijhuYXWpLmfCI19GUeZnb1c,740
|
323
331
|
omlish/lite/logs.py,sha256=1pcGu0ekhVCcLUckLSP16VccnAoprjtl5Vkdfm7y1Wg,6184
|
@@ -337,12 +345,6 @@ omlish/lite/typing.py,sha256=U3-JaEnkDSYxK4tsu_MzUn3RP6qALBe5FXQXpD-licE,1090
|
|
337
345
|
omlish/lite/asyncio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
338
346
|
omlish/lite/asyncio/asyncio.py,sha256=tsqQSLl5rG4GZHPYOBqI7V2yuw45ZVuGZEHe-J4QEhE,1320
|
339
347
|
omlish/lite/asyncio/subprocesses.py,sha256=crG4FlkVIA19sO2QtIagOCtXk8ak9rLaHgbTjGDy3mk,8274
|
340
|
-
omlish/lite/fdio/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
341
|
-
omlish/lite/fdio/corohttp.py,sha256=FHdakDTGI2UYbCihahuwleyailclxQMUGhpkz3suww4,4080
|
342
|
-
omlish/lite/fdio/handlers.py,sha256=Wr0O2cvIC8NuLs3yoDHj9ZG4n1g_oVEeT87B0WDsg0Y,1341
|
343
|
-
omlish/lite/fdio/kqueue.py,sha256=YgGBQibkAUYODYDiGl7Enjtx1oQsJXuDsBLBXgqlLQw,3832
|
344
|
-
omlish/lite/fdio/manager.py,sha256=q4wWf7nKrNtjx6yPEvrVnFt4UtK_BTvVlquEGw7poEo,1250
|
345
|
-
omlish/lite/fdio/pollers.py,sha256=yNadAt3W5wd90PFmd3vD77bq5QwoVb2A6SM2JjZpKRs,5507
|
346
348
|
omlish/lite/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
347
349
|
omlish/lite/http/coroserver.py,sha256=aBaYjP80yQHQxPxwi7PTYHub-fdRDKsMnB-tM8lBc2o,18095
|
348
350
|
omlish/lite/http/handlers.py,sha256=Yu0P3nqz-frklwCM2PbiWvoJNE-NqeTFLBvpNpqcdtA,753
|
@@ -508,9 +510,9 @@ omlish/text/glyphsplit.py,sha256=Ug-dPRO7x-OrNNr8g1y6DotSZ2KH0S-VcOmUobwa4B0,329
|
|
508
510
|
omlish/text/indent.py,sha256=6Jj6TFY9unaPa4xPzrnZemJ-fHsV53IamP93XGjSUHs,1274
|
509
511
|
omlish/text/parts.py,sha256=7vPF1aTZdvLVYJ4EwBZVzRSy8XB3YqPd7JwEnNGGAOo,6495
|
510
512
|
omlish/text/random.py,sha256=jNWpqiaKjKyTdMXC-pWAsSC10AAP-cmRRPVhm59ZWLk,194
|
511
|
-
omlish-0.0.0.
|
512
|
-
omlish-0.0.0.
|
513
|
-
omlish-0.0.0.
|
514
|
-
omlish-0.0.0.
|
515
|
-
omlish-0.0.0.
|
516
|
-
omlish-0.0.0.
|
513
|
+
omlish-0.0.0.dev149.dist-info/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
514
|
+
omlish-0.0.0.dev149.dist-info/METADATA,sha256=z0AUwvKglpElbQTqOlIdPh5J21U5sNjvUuYimEhJncE,4264
|
515
|
+
omlish-0.0.0.dev149.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
516
|
+
omlish-0.0.0.dev149.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
517
|
+
omlish-0.0.0.dev149.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
518
|
+
omlish-0.0.0.dev149.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
|