omlish 0.0.0.dev351__py3-none-any.whl → 0.0.0.dev353__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.
Potentially problematic release.
This version of omlish might be problematic. Click here for more details.
- omlish/.manifests.json +1 -1
- omlish/__about__.py +3 -3
- omlish/formats/json/literals.py +37 -34
- omlish/formats/json5/__init__.py +2 -0
- omlish/formats/json5/codec.py +34 -5
- omlish/http/coro/fdio.py +7 -1
- omlish/http/coro/server.py +13 -5
- omlish/http/coro/simple.py +2 -0
- omlish/http/coro/sockets.py +20 -2
- omlish/lang/__init__.py +5 -0
- omlish/lang/datetimes.py +10 -0
- omlish/lang/outcomes.py +1 -1
- omlish/lang/sys.py +1 -1
- omlish/os/linux.py +1 -1
- {omlish-0.0.0.dev351.dist-info → omlish-0.0.0.dev353.dist-info}/METADATA +2 -2
- {omlish-0.0.0.dev351.dist-info → omlish-0.0.0.dev353.dist-info}/RECORD +20 -20
- {omlish-0.0.0.dev351.dist-info → omlish-0.0.0.dev353.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev351.dist-info → omlish-0.0.0.dev353.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev351.dist-info → omlish-0.0.0.dev353.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev351.dist-info → omlish-0.0.0.dev353.dist-info}/top_level.txt +0 -0
omlish/.manifests.json
CHANGED
omlish/__about__.py
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
__version__ = '0.0.0.
|
|
2
|
-
__revision__ = '
|
|
1
|
+
__version__ = '0.0.0.dev353'
|
|
2
|
+
__revision__ = 'eb296edf6f44e6692a1928f89169ac77fbee1816'
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
#
|
|
@@ -10,7 +10,7 @@ class ProjectBase:
|
|
|
10
10
|
authors = [{'name': 'wrmsr'}]
|
|
11
11
|
urls = {'source': 'https://github.com/wrmsr/omlish'}
|
|
12
12
|
license = {'text': 'BSD-3-Clause'}
|
|
13
|
-
requires_python = '>=3.
|
|
13
|
+
requires_python = '>=3.13'
|
|
14
14
|
|
|
15
15
|
version = __version__
|
|
16
16
|
|
omlish/formats/json/literals.py
CHANGED
|
@@ -77,22 +77,46 @@ def encode_string(
|
|
|
77
77
|
lq: str | None = None,
|
|
78
78
|
rq: str | None = None,
|
|
79
79
|
escape_map: ta.Mapping[str, str] | None = None,
|
|
80
|
+
ensure_ascii: bool = False,
|
|
80
81
|
) -> str:
|
|
81
82
|
"""Return a JSON representation of a Python string."""
|
|
82
83
|
|
|
84
|
+
s = _convert_to_string(s)
|
|
85
|
+
|
|
86
|
+
lq, rq = _handle_encode_quote_args(q, lq, rq)
|
|
87
|
+
|
|
83
88
|
if escape_map is None:
|
|
84
89
|
escape_map = ESCAPE_MAP
|
|
85
90
|
|
|
86
|
-
|
|
91
|
+
if ensure_ascii:
|
|
92
|
+
pat = _ESCAPE_ASCII_PAT
|
|
87
93
|
|
|
88
|
-
|
|
89
|
-
|
|
94
|
+
def replace(m):
|
|
95
|
+
s = m.group(0)
|
|
90
96
|
|
|
91
|
-
|
|
97
|
+
try:
|
|
98
|
+
return escape_map[s]
|
|
99
|
+
|
|
100
|
+
except KeyError:
|
|
101
|
+
n = ord(s)
|
|
102
|
+
if n < 0x10000:
|
|
103
|
+
return f'\\u{n:04x}'
|
|
104
|
+
|
|
105
|
+
# surrogate pair
|
|
106
|
+
n -= 0x10000
|
|
107
|
+
s1 = 0xD800 | ((n >> 10) & 0x3FF)
|
|
108
|
+
s2 = 0xDC00 | (n & 0x3FF)
|
|
109
|
+
return f'\\u{s1:04x}\\u{s2:04x}'
|
|
110
|
+
|
|
111
|
+
else:
|
|
112
|
+
pat = _ESCAPE_PAT
|
|
113
|
+
|
|
114
|
+
def replace(m):
|
|
115
|
+
return escape_map[m.group(0)]
|
|
92
116
|
|
|
93
117
|
return ''.join([
|
|
94
118
|
lq,
|
|
95
|
-
|
|
119
|
+
pat.sub(replace, s),
|
|
96
120
|
rq,
|
|
97
121
|
])
|
|
98
122
|
|
|
@@ -107,35 +131,14 @@ def encode_string_ascii(
|
|
|
107
131
|
) -> str:
|
|
108
132
|
"""Return an ASCII-only JSON representation of a Python string."""
|
|
109
133
|
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
try:
|
|
119
|
-
return escape_map[s]
|
|
120
|
-
|
|
121
|
-
except KeyError:
|
|
122
|
-
n = ord(s)
|
|
123
|
-
if n < 0x10000:
|
|
124
|
-
return f'\\u{n:04x}'
|
|
125
|
-
|
|
126
|
-
# surrogate pair
|
|
127
|
-
n -= 0x10000
|
|
128
|
-
s1 = 0xD800 | ((n >> 10) & 0x3FF)
|
|
129
|
-
s2 = 0xDC00 | (n & 0x3FF)
|
|
130
|
-
return f'\\u{s1:04x}\\u{s2:04x}'
|
|
131
|
-
|
|
132
|
-
lq, rq = _handle_encode_quote_args(q, lq, rq)
|
|
133
|
-
|
|
134
|
-
return ''.join([
|
|
135
|
-
lq,
|
|
136
|
-
str(_ESCAPE_ASCII_PAT.sub(replace, s)),
|
|
137
|
-
rq,
|
|
138
|
-
])
|
|
134
|
+
return encode_string(
|
|
135
|
+
s,
|
|
136
|
+
q,
|
|
137
|
+
lq=lq,
|
|
138
|
+
rq=rq,
|
|
139
|
+
escape_map=escape_map,
|
|
140
|
+
ensure_ascii=True,
|
|
141
|
+
)
|
|
139
142
|
|
|
140
143
|
|
|
141
144
|
##
|
omlish/formats/json5/__init__.py
CHANGED
omlish/formats/json5/codec.py
CHANGED
|
@@ -1,20 +1,49 @@
|
|
|
1
1
|
import typing as ta
|
|
2
2
|
|
|
3
|
+
from ... import lang
|
|
3
4
|
from .. import json
|
|
4
5
|
from ..codecs import make_object_lazy_loaded_codec
|
|
5
6
|
from ..codecs import make_str_object_codec
|
|
6
|
-
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
if ta.TYPE_CHECKING:
|
|
10
|
+
from . import parsing
|
|
11
|
+
from . import rendering
|
|
12
|
+
else:
|
|
13
|
+
parsing = lang.proxy_import('.parsing', __package__)
|
|
14
|
+
rendering = lang.proxy_import('.rendering', __package__)
|
|
7
15
|
|
|
8
16
|
|
|
9
17
|
##
|
|
10
18
|
|
|
11
19
|
|
|
12
|
-
def dumps(
|
|
13
|
-
|
|
20
|
+
def dumps(
|
|
21
|
+
obj: ta.Any,
|
|
22
|
+
*,
|
|
23
|
+
multiline_strings: bool = False,
|
|
24
|
+
**kwargs: ta.Any,
|
|
25
|
+
) -> str:
|
|
26
|
+
if multiline_strings:
|
|
27
|
+
return rendering.Json5Renderer.render_str(
|
|
28
|
+
obj,
|
|
29
|
+
multiline_strings=True,
|
|
30
|
+
**kwargs,
|
|
31
|
+
)
|
|
32
|
+
|
|
33
|
+
else:
|
|
34
|
+
return json.dumps(obj, **kwargs)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def dumps_pretty(obj: ta.Any, **kwargs: ta.Any) -> str:
|
|
38
|
+
return dumps(obj, **json.PRETTY_KWARGS, **kwargs)
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def dumps_compact(obj: ta.Any, **kwargs: ta.Any) -> str:
|
|
42
|
+
return dumps(obj, **json.COMPACT_KWARGS, **kwargs)
|
|
14
43
|
|
|
15
44
|
|
|
16
|
-
def loads(s: str) -> ta.Any:
|
|
17
|
-
return parse(s)
|
|
45
|
+
def loads(s: str, **kwargs: ta.Any) -> ta.Any:
|
|
46
|
+
return parsing.parse(s, **kwargs)
|
|
18
47
|
|
|
19
48
|
|
|
20
49
|
##
|
omlish/http/coro/fdio.py
CHANGED
|
@@ -39,7 +39,13 @@ class CoroHttpServerConnectionFdioHandler(SocketFdioHandler):
|
|
|
39
39
|
addr,
|
|
40
40
|
handler=self._handler,
|
|
41
41
|
)
|
|
42
|
-
self._srv_coro: ta.Optional[
|
|
42
|
+
self._srv_coro: ta.Optional[
|
|
43
|
+
ta.Generator[
|
|
44
|
+
CoroHttpServer.Io,
|
|
45
|
+
ta.Optional[bytes],
|
|
46
|
+
CoroHttpServer.CoroHandleResult,
|
|
47
|
+
],
|
|
48
|
+
] = self._coro_srv.coro_handle()
|
|
43
49
|
|
|
44
50
|
self._cur_io: ta.Optional[CoroHttpServer.Io] = None
|
|
45
51
|
self._next_io()
|
omlish/http/coro/server.py
CHANGED
|
@@ -417,7 +417,11 @@ class CoroHttpServer:
|
|
|
417
417
|
|
|
418
418
|
#
|
|
419
419
|
|
|
420
|
-
|
|
420
|
+
@dc.dataclass(frozen=True)
|
|
421
|
+
class CoroHandleResult:
|
|
422
|
+
close_reason: ta.Literal['response', 'internal', None] = None
|
|
423
|
+
|
|
424
|
+
def coro_handle(self) -> ta.Generator[Io, ta.Optional[bytes], CoroHandleResult]:
|
|
421
425
|
return self._coro_run_handler(self._coro_handle_one())
|
|
422
426
|
|
|
423
427
|
class Close(Exception): # noqa
|
|
@@ -430,7 +434,7 @@ class CoroHttpServer:
|
|
|
430
434
|
ta.Optional[bytes],
|
|
431
435
|
None,
|
|
432
436
|
],
|
|
433
|
-
) -> ta.Generator[Io, ta.Optional[bytes],
|
|
437
|
+
) -> ta.Generator[Io, ta.Optional[bytes], CoroHandleResult]:
|
|
434
438
|
i: ta.Optional[bytes]
|
|
435
439
|
o: ta.Any = next(gen)
|
|
436
440
|
while True:
|
|
@@ -454,7 +458,9 @@ class CoroHttpServer:
|
|
|
454
458
|
|
|
455
459
|
o.close()
|
|
456
460
|
if o.close_connection:
|
|
457
|
-
|
|
461
|
+
return self.CoroHandleResult(
|
|
462
|
+
close_reason='response',
|
|
463
|
+
)
|
|
458
464
|
o = None
|
|
459
465
|
|
|
460
466
|
else:
|
|
@@ -463,9 +469,11 @@ class CoroHttpServer:
|
|
|
463
469
|
try:
|
|
464
470
|
o = gen.send(i)
|
|
465
471
|
except self.Close:
|
|
466
|
-
return
|
|
472
|
+
return self.CoroHandleResult(
|
|
473
|
+
close_reason='internal',
|
|
474
|
+
)
|
|
467
475
|
except StopIteration:
|
|
468
|
-
|
|
476
|
+
return self.CoroHandleResult()
|
|
469
477
|
|
|
470
478
|
except Exception: # noqa
|
|
471
479
|
if hasattr(o, 'close'):
|
omlish/http/coro/simple.py
CHANGED
|
@@ -39,6 +39,7 @@ def make_simple_http_server(
|
|
|
39
39
|
handler: HttpHandler,
|
|
40
40
|
*,
|
|
41
41
|
server_version: HttpProtocolVersion = HttpProtocolVersions.HTTP_1_1,
|
|
42
|
+
keep_alive: bool = False,
|
|
42
43
|
ssl_context: ta.Optional['ssl.SSLContext'] = None,
|
|
43
44
|
ignore_ssl_errors: bool = False,
|
|
44
45
|
executor: ta.Optional[cf.Executor] = None,
|
|
@@ -60,6 +61,7 @@ def make_simple_http_server(
|
|
|
60
61
|
|
|
61
62
|
socket_handler = CoroHttpServerSocketHandler(
|
|
62
63
|
server_factory,
|
|
64
|
+
keep_alive=keep_alive,
|
|
63
65
|
)
|
|
64
66
|
|
|
65
67
|
#
|
omlish/http/coro/sockets.py
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
# ruff: noqa: UP006 UP007 UP045
|
|
2
2
|
# @omlish-lite
|
|
3
|
+
import itertools
|
|
3
4
|
import typing as ta
|
|
4
5
|
|
|
6
|
+
from ...lite.check import check
|
|
5
7
|
from ...sockets.addresses import SocketAddress
|
|
6
8
|
from ...sockets.handlers import SocketHandler_
|
|
7
9
|
from ...sockets.io import SocketIoPair
|
|
@@ -17,16 +19,32 @@ class CoroHttpServerSocketHandler(SocketHandler_):
|
|
|
17
19
|
self,
|
|
18
20
|
server_factory: CoroHttpServerFactory,
|
|
19
21
|
*,
|
|
22
|
+
keep_alive: bool = False,
|
|
20
23
|
log_handler: ta.Optional[ta.Callable[[CoroHttpServer, CoroHttpServer.AnyLogIo], None]] = None,
|
|
21
24
|
) -> None:
|
|
22
25
|
super().__init__()
|
|
23
26
|
|
|
24
27
|
self._server_factory = server_factory
|
|
28
|
+
self._keep_alive = keep_alive
|
|
25
29
|
self._log_handler = log_handler
|
|
26
30
|
|
|
27
31
|
def __call__(self, client_address: SocketAddress, fp: SocketIoPair) -> None:
|
|
28
32
|
server = self._server_factory(client_address)
|
|
29
33
|
|
|
34
|
+
if self._keep_alive:
|
|
35
|
+
for i in itertools.count(): # noqa
|
|
36
|
+
res = self._handle_one(server, fp)
|
|
37
|
+
if res.close_reason is not None:
|
|
38
|
+
break
|
|
39
|
+
|
|
40
|
+
else:
|
|
41
|
+
self._handle_one(server, fp)
|
|
42
|
+
|
|
43
|
+
def _handle_one(
|
|
44
|
+
self,
|
|
45
|
+
server: CoroHttpServer,
|
|
46
|
+
fp: SocketIoPair,
|
|
47
|
+
) -> CoroHttpServer.CoroHandleResult:
|
|
30
48
|
gen = server.coro_handle()
|
|
31
49
|
|
|
32
50
|
o = next(gen)
|
|
@@ -55,5 +73,5 @@ class CoroHttpServerSocketHandler(SocketHandler_):
|
|
|
55
73
|
o = gen.send(i)
|
|
56
74
|
else:
|
|
57
75
|
o = next(gen)
|
|
58
|
-
except StopIteration:
|
|
59
|
-
|
|
76
|
+
except StopIteration as e:
|
|
77
|
+
return check.isinstance(e.value, CoroHttpServer.CoroHandleResult)
|
omlish/lang/__init__.py
CHANGED
omlish/lang/datetimes.py
CHANGED
|
@@ -4,6 +4,16 @@ import datetime
|
|
|
4
4
|
##
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
ISO_FMT = '%Y-%m-%dT%H:%M:%S%z'
|
|
8
|
+
ISO_FMT_US = '%Y-%m-%dT%H:%M:%S.%f%z'
|
|
9
|
+
|
|
10
|
+
ISO_FMT_NTZ = '%Y-%m-%dT%H:%M:%S'
|
|
11
|
+
ISO_FMT_US_NTZ = '%Y-%m-%dT%H:%M:%S.%f'
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
#
|
|
15
|
+
|
|
16
|
+
|
|
7
17
|
def utcnow() -> datetime.datetime:
|
|
8
18
|
return datetime.datetime.now(tz=datetime.UTC)
|
|
9
19
|
|
omlish/lang/outcomes.py
CHANGED
|
@@ -203,7 +203,7 @@ class Outcome(abc.ABC, ta.Generic[ValueT_co]):
|
|
|
203
203
|
class Value(Outcome[ValueT_co], ta.Generic[ValueT_co]):
|
|
204
204
|
"""Concrete :class:`Outcome` subclass representing a regular value."""
|
|
205
205
|
|
|
206
|
-
_value: ValueT_co
|
|
206
|
+
_value: ValueT_co # type: ignore[misc] # FIXME: Cannot use a covariant type variable as a parameter
|
|
207
207
|
|
|
208
208
|
def __repr__(self) -> str:
|
|
209
209
|
return f'Value({self._value!r})'
|
omlish/lang/sys.py
CHANGED
omlish/os/linux.py
CHANGED
|
@@ -19,7 +19,7 @@ ID=ubuntu
|
|
|
19
19
|
ID_LIKE=debian
|
|
20
20
|
UBUNTU_CODENAME=jammy
|
|
21
21
|
|
|
22
|
-
➜ omlish git:(master) docker run -i python:3.
|
|
22
|
+
➜ omlish git:(master) docker run -i python:3.13 cat /etc/os-release
|
|
23
23
|
PRETTY_NAME="Debian GNU/Linux 12 (bookworm)"
|
|
24
24
|
NAME="Debian GNU/Linux"
|
|
25
25
|
VERSION_ID="12"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: omlish
|
|
3
|
-
Version: 0.0.0.
|
|
3
|
+
Version: 0.0.0.dev353
|
|
4
4
|
Summary: omlish
|
|
5
5
|
Author: wrmsr
|
|
6
6
|
License: BSD-3-Clause
|
|
@@ -10,7 +10,7 @@ Classifier: Development Status :: 2 - Pre-Alpha
|
|
|
10
10
|
Classifier: Intended Audience :: Developers
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Operating System :: POSIX
|
|
13
|
-
Requires-Python: >=3.
|
|
13
|
+
Requires-Python: >=3.13
|
|
14
14
|
License-File: LICENSE
|
|
15
15
|
Provides-Extra: all
|
|
16
16
|
Requires-Dist: anyio~=4.9; extra == "all"
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
omlish/.manifests.json,sha256=
|
|
2
|
-
omlish/__about__.py,sha256=
|
|
1
|
+
omlish/.manifests.json,sha256=Egsh9irGGefBuu0l9ppa8a-6lo-r9iD7DnUYVmHaTMY,8587
|
|
2
|
+
omlish/__about__.py,sha256=sKHGEGFJIvff1zQHTqExCpHnwV0__sUW7Hyjb7QqZYY,3478
|
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
|
4
4
|
omlish/c3.py,sha256=rer-TPOFDU6fYq_AWio_AmA-ckZ8JDY5shIzQ_yXfzA,8414
|
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
|
@@ -265,7 +265,7 @@ omlish/formats/json/__init__.py,sha256=i41uhoyXjuLjj5JmdRj4Ud2sfKD0j6KAyk_XyyCIB
|
|
|
265
265
|
omlish/formats/json/codecs.py,sha256=wvPHZw8cDHaOV6u7e9rfpCH3JVF_IjA6ND_fQUhcCXU,844
|
|
266
266
|
omlish/formats/json/consts.py,sha256=A0cTAGGLyjo-gcYIQrL4JIaardI0yPMhQoNmh42BaRg,387
|
|
267
267
|
omlish/formats/json/encoding.py,sha256=iwoYyJePibgvRDZ6e9b2OlXmOBJEczquRNoiffVf3hE,502
|
|
268
|
-
omlish/formats/json/literals.py,sha256=
|
|
268
|
+
omlish/formats/json/literals.py,sha256=EG-nZpi7Eaalo8PJWceeYq_yKj55PxmaSme6csFBO_M,8185
|
|
269
269
|
omlish/formats/json/rendering.py,sha256=5p8kG1t3aGm2GXsb82h1S90Mmz4lzbX8sX9_qh7fH1U,4915
|
|
270
270
|
omlish/formats/json/types.py,sha256=ueO9-uOU2eVWowJf0LH1fHFLjZ6fTIZyq9qybcLQaiQ,147
|
|
271
271
|
omlish/formats/json/backends/__init__.py,sha256=K5nAP-fCgUvaSylHqgRvmJp6j6PTWdMjrNhvMouKrFc,161
|
|
@@ -283,8 +283,8 @@ omlish/formats/json/stream/parsing.py,sha256=AXsg0N5s0jEvdfEQrzprplZDNkB62l6Q3Pv
|
|
|
283
283
|
omlish/formats/json/stream/rendering.py,sha256=uuJc__MR0G5kypYMAAudBNjBfiIzA_GGli-DWT90428,3730
|
|
284
284
|
omlish/formats/json/stream/utils.py,sha256=UhBRuWbb25wrdQWl8Ttq7xGRLoa329TvNdecGCZxgzg,1197
|
|
285
285
|
omlish/formats/json5/Json5.g4,sha256=ZUmgJPvj8lSMUD_v3wijp10ZQExYB5mu5Q089dYEJSU,2389
|
|
286
|
-
omlish/formats/json5/__init__.py,sha256=
|
|
287
|
-
omlish/formats/json5/codec.py,sha256=
|
|
286
|
+
omlish/formats/json5/__init__.py,sha256=5D7pUwtS8HMgs8rGJG3xUBLhOq5uFUULcwE-jIlpwmY,139
|
|
287
|
+
omlish/formats/json5/codec.py,sha256=IVllnRk5Nc0CnrsPiC36P1Mh8MZeasU-yq8OBZRtIk0,1185
|
|
288
288
|
omlish/formats/json5/errors.py,sha256=AHkR9ySjAoQdUrizpqgL8fg0M5oe5mHZkml3KZHEvC4,38
|
|
289
289
|
omlish/formats/json5/literals.py,sha256=rj4-9KFXfgdq5oK_eUkp57cgoMQ8T0gRaG9ga430he4,2429
|
|
290
290
|
omlish/formats/json5/parsing.py,sha256=CWJHfe_FXCQuyDk00a7PI5wOdROq7Tc3fbWrNuwaKCw,2346
|
|
@@ -336,10 +336,10 @@ omlish/http/clients/default.py,sha256=fO8So3pI2z8ateLqt9Sv50UoOJFkUZbgMdoDyWsjBN
|
|
|
336
336
|
omlish/http/clients/httpx.py,sha256=Grl9_sG7QNIZj8HqaU7XduAsBDyfXl36RjbYQzQqal0,1787
|
|
337
337
|
omlish/http/clients/urllib.py,sha256=DVKFPLQzANiZmwnlbFw5pWs5ZPLLvvgCb3UInvCSqPE,2701
|
|
338
338
|
omlish/http/coro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
339
|
-
omlish/http/coro/fdio.py,sha256=
|
|
340
|
-
omlish/http/coro/server.py,sha256=
|
|
341
|
-
omlish/http/coro/simple.py,sha256=
|
|
342
|
-
omlish/http/coro/sockets.py,sha256=
|
|
339
|
+
omlish/http/coro/fdio.py,sha256=mFhOzUocGOwrxLbSssULHora3hINfTcOwLOggXemYag,4146
|
|
340
|
+
omlish/http/coro/server.py,sha256=L8EO-Iok4ExlM-2LTDQOCZilLRdDNO2wvn1DN8dghR0,18641
|
|
341
|
+
omlish/http/coro/simple.py,sha256=wpIDGa4AYndmAq2mCCj2IWpkLx67uM3JpKXKgrHLiD8,3275
|
|
342
|
+
omlish/http/coro/sockets.py,sha256=ziTzdDCsw3mrwskoGBa4stqkm21ReNq6BtrM-ZkxB3k,2257
|
|
343
343
|
omlish/inject/__init__.py,sha256=pY-A8Q4v08-Xa4a-XdZ3lSFC3OwCO2T9HhesB67Q4tQ,1895
|
|
344
344
|
omlish/inject/binder.py,sha256=3-6KMOcSgFE5bvthy3YUrRzCX5w7YSGmdJ3Tv2yXZGw,4022
|
|
345
345
|
omlish/inject/bindings.py,sha256=PlvOnUREjvc6F8nOJdzl1k9SAf80icRB4qWFqDop87M,536
|
|
@@ -404,14 +404,14 @@ omlish/iterators/iterators.py,sha256=RxW35yQ5ed8vBQ22IqpDXFx-i5JiLQdp7-pkMZXhJJ8
|
|
|
404
404
|
omlish/iterators/recipes.py,sha256=wOwOZg-zWG9Zc3wcAxJFSe2rtavVBYwZOfG09qYEx_4,472
|
|
405
405
|
omlish/iterators/tools.py,sha256=M16LXrJhMdsz5ea2qH0vws30ZvhQuQSCVFSLpRf_gTg,2096
|
|
406
406
|
omlish/iterators/unique.py,sha256=Nw0pSaNEcHAkve0ugfLPvJcirDOn9ECyC5wIL8JlJKI,1395
|
|
407
|
-
omlish/lang/__init__.py,sha256=
|
|
407
|
+
omlish/lang/__init__.py,sha256=IGHLuq5B1H3BPj8cnShqsHdw33QcYFWNny8UU3Rym1A,6512
|
|
408
408
|
omlish/lang/attrs.py,sha256=zFiVuGVOq88x45464T_LxDa-ZEq_RD9zJLq2zeVEBDc,5105
|
|
409
409
|
omlish/lang/casing.py,sha256=cFUlbDdXLhwnWwcYx4qnM5c4zGX7hIRUfcjiZbxUD28,4636
|
|
410
410
|
omlish/lang/clsdct.py,sha256=HAGIvBSbCefzRjXriwYSBLO7QHKRv2UsE78jixOb-fA,1828
|
|
411
411
|
omlish/lang/collections.py,sha256=LVm0Sory60IXyFzYhhO8BZAWy_z_pjiA-meXNlSJP7o,2465
|
|
412
412
|
omlish/lang/comparison.py,sha256=MOwEG0Yny-jBPHO9kQto9FSRyeNpQW24UABsghkrHxY,1356
|
|
413
413
|
omlish/lang/contextmanagers.py,sha256=Cv6lLCKFSBpJO9TGph4wyLlVs_kxKK98KI8pC_rS0FI,7226
|
|
414
|
-
omlish/lang/datetimes.py,sha256=
|
|
414
|
+
omlish/lang/datetimes.py,sha256=01tg21QOx-PWDlm-CSFTalym3vpqF0EKzeinmtcVNoU,379
|
|
415
415
|
omlish/lang/descriptors.py,sha256=zBtgO9LjdSTGHNUgiIqswh78WOVoGH6KzS0NbgB1Wls,6572
|
|
416
416
|
omlish/lang/enums.py,sha256=F9tflHfaAoV2MpyuhZzpfX9-H55M3zNa9hCszsngEo8,111
|
|
417
417
|
omlish/lang/functions.py,sha256=qNqzWF6vI6PGTzKhgkhnNXP8e1gSerb8GsHG3_wVBP8,6386
|
|
@@ -419,14 +419,14 @@ omlish/lang/generators.py,sha256=a4D5HU_mySs2T2z3xCmE_s3t4QJkj0YRrK4-hhpGd0A,519
|
|
|
419
419
|
omlish/lang/imports.py,sha256=y9W9Y-d_cQ35QCLuSIPoa6vnEqSErFCz8b-34IH128U,10552
|
|
420
420
|
omlish/lang/iterables.py,sha256=y1SX2Co3VsOeX2wlfFF7K3rwLvF7Dtre7VY6EpfwAwA,3338
|
|
421
421
|
omlish/lang/objects.py,sha256=ZsibJwNp1EXorbaObm9TlCNtuuM65snCmVb7H4_llqI,6116
|
|
422
|
-
omlish/lang/outcomes.py,sha256=
|
|
422
|
+
omlish/lang/outcomes.py,sha256=0PqxoKaGbBXU9UYZ6AE2QSq94Z-gFDt6wYdp0KomNQw,8712
|
|
423
423
|
omlish/lang/overrides.py,sha256=IBzK6ljfLX6TLgIyKTSjhqTLcuKRkQNVtEOnBLS4nuA,2095
|
|
424
424
|
omlish/lang/params.py,sha256=sfbNoGrKCsAtubFufj_uh_WKshIgA8fqJ4PmLH1PH00,6639
|
|
425
425
|
omlish/lang/recursion.py,sha256=1VfSqzKO-8Is3t9LKw0W4jwPfE0aBS70EUlbUxAx4eE,1900
|
|
426
426
|
omlish/lang/resolving.py,sha256=ei9LDyJexsMMHB9z8diUkNmynWhd_da7h7TqrMYM6lA,1611
|
|
427
427
|
omlish/lang/resources.py,sha256=WKkAddC3ctMK1bvGw-elGe8ZxAj2IaUTKVSu2nfgHTo,2839
|
|
428
428
|
omlish/lang/strings.py,sha256=kJmRFd1D36xXcjd9MdB12BCwF_-MVhNr-TpWj7hMi_4,4252
|
|
429
|
-
omlish/lang/sys.py,sha256=
|
|
429
|
+
omlish/lang/sys.py,sha256=KPe1UOXk1VxlOYt_aLmhN0KqsA4wnP-4nm4WEwO49pw,411
|
|
430
430
|
omlish/lang/typing.py,sha256=eWI3RKhVi-_SV2rN4SGq8IbFo5XbGapbiWeduF97uG8,3846
|
|
431
431
|
omlish/lang/cached/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
432
432
|
omlish/lang/cached/function.py,sha256=su9QxYECK9NK-UfMFKbgx4lqH2WoGBiYshnEfaGvfhw,11522
|
|
@@ -551,7 +551,7 @@ omlish/os/filemodes.py,sha256=prgEmqLrFolGsHgc-rNRRFSo2k4BudEQiMoBAyik8Ig,4581
|
|
|
551
551
|
omlish/os/files.py,sha256=5ZnxeuHE1rYi6IpIvkFEJW-OFuoYEXO0waYa4WDvbl8,1112
|
|
552
552
|
omlish/os/forkhooks.py,sha256=sLrDCOletKcuiKTKIstksmvYw8GNg5e5yHUGuJ0dEeo,5678
|
|
553
553
|
omlish/os/journald.py,sha256=Ysm-lyjBfTvRA9PZtkdNxeFNNuSdLwoCXnBgePeRu3Y,3909
|
|
554
|
-
omlish/os/linux.py,sha256=
|
|
554
|
+
omlish/os/linux.py,sha256=Vns2CDAS9HChEb4i-19c-ey4_MRG1DgGA1vb5b3lS9o,18944
|
|
555
555
|
omlish/os/mangle.py,sha256=W-LP7nIkMXl0y4a1Qir1RIT2q1z_Ghct2PIVUnf-cQs,530
|
|
556
556
|
omlish/os/paths.py,sha256=uQbzLumxGxaIpt0bdOr-Q75gc2VpZX9nWEHX8d4iEyY,850
|
|
557
557
|
omlish/os/signals.py,sha256=WJfW21RdFjGsSmXmFjr9I-AuYh3rmi7wMjZfMkJRPXE,353
|
|
@@ -866,9 +866,9 @@ omlish/typedvalues/marshal.py,sha256=AtBz7Jq-BfW8vwM7HSxSpR85JAXmxK2T0xDblmm1HI0
|
|
|
866
866
|
omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
|
|
867
867
|
omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
|
|
868
868
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
|
869
|
-
omlish-0.0.0.
|
|
870
|
-
omlish-0.0.0.
|
|
871
|
-
omlish-0.0.0.
|
|
872
|
-
omlish-0.0.0.
|
|
873
|
-
omlish-0.0.0.
|
|
874
|
-
omlish-0.0.0.
|
|
869
|
+
omlish-0.0.0.dev353.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
870
|
+
omlish-0.0.0.dev353.dist-info/METADATA,sha256=sdAJ_0gr9hDTDSpMvCSVvIDgX5o01tyzUBFy0w3MpDU,4416
|
|
871
|
+
omlish-0.0.0.dev353.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
872
|
+
omlish-0.0.0.dev353.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
|
873
|
+
omlish-0.0.0.dev353.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
|
874
|
+
omlish-0.0.0.dev353.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|