omlish 0.0.0.dev467__py3-none-any.whl → 0.0.0.dev468__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/__about__.py +2 -2
- omlish/dataclasses/impl/api/classes/decorator.py +3 -0
- omlish/dataclasses/impl/api/classes/make.py +3 -0
- omlish/dataclasses/impl/concerns/repr.py +15 -2
- omlish/dataclasses/specs.py +1 -0
- omlish/http/all.py +13 -1
- omlish/http/clients/default.py +117 -31
- omlish/http/clients/httpx.py +58 -0
- omlish/sync.py +39 -0
- {omlish-0.0.0.dev467.dist-info → omlish-0.0.0.dev468.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev467.dist-info → omlish-0.0.0.dev468.dist-info}/RECORD +15 -15
- {omlish-0.0.0.dev467.dist-info → omlish-0.0.0.dev468.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev467.dist-info → omlish-0.0.0.dev468.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev467.dist-info → omlish-0.0.0.dev468.dist-info}/licenses/LICENSE +0 -0
- {omlish-0.0.0.dev467.dist-info → omlish-0.0.0.dev468.dist-info}/top_level.txt +0 -0
omlish/__about__.py
CHANGED
|
@@ -10,6 +10,7 @@ from ..... import lang
|
|
|
10
10
|
from ...._internals import STD_FIELDS_ATTR
|
|
11
11
|
from ...._internals import STD_PARAMS_ATTR
|
|
12
12
|
from ....specs import ClassSpec
|
|
13
|
+
from ....specs import ReprFn
|
|
13
14
|
from ...processing.driving import drive_cls_processing
|
|
14
15
|
from ...utils import class_decorator
|
|
15
16
|
from ..fields.building import build_cls_std_fields
|
|
@@ -53,6 +54,7 @@ def dataclass(
|
|
|
53
54
|
|
|
54
55
|
repr_id: bool | None = None,
|
|
55
56
|
terse_repr: bool | None = None,
|
|
57
|
+
default_repr_fn: ReprFn | None = None,
|
|
56
58
|
|
|
57
59
|
allow_redundant_decorator: bool | None = None,
|
|
58
60
|
|
|
@@ -158,6 +160,7 @@ def dataclass(
|
|
|
158
160
|
|
|
159
161
|
repr_id=repr_id,
|
|
160
162
|
terse_repr=terse_repr,
|
|
163
|
+
default_repr_fn=default_repr_fn,
|
|
161
164
|
|
|
162
165
|
allow_redundant_decorator=allow_redundant_decorator,
|
|
163
166
|
),
|
|
@@ -4,6 +4,7 @@ import sys
|
|
|
4
4
|
import types
|
|
5
5
|
import typing as ta
|
|
6
6
|
|
|
7
|
+
from ....specs import ReprFn
|
|
7
8
|
from .decorator import dataclass
|
|
8
9
|
|
|
9
10
|
|
|
@@ -53,6 +54,7 @@ def make_dataclass( # noqa
|
|
|
53
54
|
|
|
54
55
|
repr_id: bool | None = None,
|
|
55
56
|
terse_repr: bool | None = None,
|
|
57
|
+
default_repr_fn: ReprFn | None = None,
|
|
56
58
|
|
|
57
59
|
allow_redundant_decorator: bool | None = None,
|
|
58
60
|
|
|
@@ -174,6 +176,7 @@ def make_dataclass( # noqa
|
|
|
174
176
|
|
|
175
177
|
repr_id=repr_id,
|
|
176
178
|
terse_repr=terse_repr,
|
|
179
|
+
default_repr_fn=default_repr_fn,
|
|
177
180
|
|
|
178
181
|
allow_redundant_decorator=allow_redundant_decorator,
|
|
179
182
|
)
|
|
@@ -32,6 +32,7 @@ class ReprPlan(Plan):
|
|
|
32
32
|
|
|
33
33
|
id: bool = False
|
|
34
34
|
terse: bool = False
|
|
35
|
+
default_fn: OpRef[ReprFn] | None = None
|
|
35
36
|
|
|
36
37
|
|
|
37
38
|
@register_generator_type(ReprPlan)
|
|
@@ -66,11 +67,17 @@ class ReprGenerator(Generator[ReprPlan]):
|
|
|
66
67
|
fn=fnr,
|
|
67
68
|
))
|
|
68
69
|
|
|
70
|
+
drf: OpRef | None = None
|
|
71
|
+
if ctx.cs.default_repr_fn is not None:
|
|
72
|
+
drf = OpRef(f'repr.default_fn')
|
|
73
|
+
orm[drf] = ctx.cs.default_repr_fn
|
|
74
|
+
|
|
69
75
|
return PlanResult(
|
|
70
76
|
ReprPlan(
|
|
71
77
|
fields=tuple(rfs),
|
|
72
78
|
id=ctx.cs.repr_id,
|
|
73
79
|
terse=ctx.cs.terse_repr,
|
|
80
|
+
default_fn=drf,
|
|
74
81
|
),
|
|
75
82
|
orm,
|
|
76
83
|
)
|
|
@@ -85,10 +92,16 @@ class ReprGenerator(Generator[ReprPlan]):
|
|
|
85
92
|
if not (pl.terse and not f.kw_only):
|
|
86
93
|
pfx = f'{f.name}='
|
|
87
94
|
|
|
95
|
+
fn: OpRef[ReprFn] | None = None
|
|
88
96
|
if f.fn is not None:
|
|
89
|
-
|
|
97
|
+
fn = f.fn
|
|
98
|
+
elif pl.default_fn is not None:
|
|
99
|
+
fn = pl.default_fn
|
|
100
|
+
|
|
101
|
+
if fn is not None:
|
|
102
|
+
ors.add(fn)
|
|
90
103
|
part_lines.extend([
|
|
91
|
-
f' if (s := {
|
|
104
|
+
f' if (s := {fn.ident()}(self.{f.name})) is not None:',
|
|
92
105
|
f' parts.append(f"{pfx}{{s}}")',
|
|
93
106
|
])
|
|
94
107
|
else:
|
omlish/dataclasses/specs.py
CHANGED
omlish/http/all.py
CHANGED
|
@@ -4,6 +4,16 @@ from .. import lang as _lang
|
|
|
4
4
|
with _lang.auto_proxy_init(globals()):
|
|
5
5
|
##
|
|
6
6
|
|
|
7
|
+
from .clients.asyncs import ( # noqa
|
|
8
|
+
AsyncStreamHttpResponse,
|
|
9
|
+
|
|
10
|
+
async_close_response,
|
|
11
|
+
async_closing_response,
|
|
12
|
+
async_read_response,
|
|
13
|
+
|
|
14
|
+
AsyncHttpClient,
|
|
15
|
+
)
|
|
16
|
+
|
|
7
17
|
from .clients.base import ( # noqa
|
|
8
18
|
DEFAULT_ENCODING,
|
|
9
19
|
|
|
@@ -20,8 +30,10 @@ with _lang.auto_proxy_init(globals()):
|
|
|
20
30
|
|
|
21
31
|
from .clients.default import ( # noqa
|
|
22
32
|
client,
|
|
23
|
-
|
|
24
33
|
request,
|
|
34
|
+
|
|
35
|
+
async_client,
|
|
36
|
+
async_request,
|
|
25
37
|
)
|
|
26
38
|
|
|
27
39
|
from .clients.httpx import ( # noqa
|
omlish/http/clients/default.py
CHANGED
|
@@ -1,60 +1,146 @@
|
|
|
1
|
+
import abc
|
|
1
2
|
import typing as ta
|
|
2
3
|
|
|
4
|
+
from ... import lang
|
|
3
5
|
from ..headers import CanHttpHeaders
|
|
6
|
+
from .asyncs import AsyncHttpClient
|
|
4
7
|
from .base import HttpRequest
|
|
5
8
|
from .base import HttpResponse
|
|
6
9
|
from .sync import HttpClient
|
|
7
|
-
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
with lang.auto_proxy_import(globals()):
|
|
13
|
+
from . import httpx as _httpx
|
|
14
|
+
from . import urllib as _urllib
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
C = ta.TypeVar('C')
|
|
18
|
+
R = ta.TypeVar('R')
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
##
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class _DefaultRequester(lang.Abstract, ta.Generic[C, R]):
|
|
25
|
+
def __call__(
|
|
26
|
+
self,
|
|
27
|
+
url: str,
|
|
28
|
+
method: str | None = None,
|
|
29
|
+
*,
|
|
30
|
+
headers: CanHttpHeaders | None = None,
|
|
31
|
+
data: bytes | str | None = None,
|
|
32
|
+
|
|
33
|
+
timeout_s: float | None = None,
|
|
34
|
+
|
|
35
|
+
check: bool = False,
|
|
36
|
+
client: C | None = None, # noqa
|
|
37
|
+
|
|
38
|
+
**kwargs: ta.Any,
|
|
39
|
+
) -> R:
|
|
40
|
+
req = HttpRequest(
|
|
41
|
+
url,
|
|
42
|
+
method=method,
|
|
43
|
+
|
|
44
|
+
headers=headers,
|
|
45
|
+
data=data,
|
|
46
|
+
|
|
47
|
+
timeout_s=timeout_s,
|
|
48
|
+
|
|
49
|
+
**kwargs,
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
return self._do(
|
|
53
|
+
req,
|
|
54
|
+
check=check,
|
|
55
|
+
client=client,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
@abc.abstractmethod
|
|
59
|
+
def _do(
|
|
60
|
+
self,
|
|
61
|
+
req: HttpRequest,
|
|
62
|
+
*,
|
|
63
|
+
check: bool = False,
|
|
64
|
+
client: C | None = None, # noqa
|
|
65
|
+
) -> R:
|
|
66
|
+
raise NotImplementedError
|
|
8
67
|
|
|
9
68
|
|
|
10
69
|
##
|
|
11
70
|
|
|
12
71
|
|
|
13
72
|
def _default_client() -> HttpClient:
|
|
14
|
-
return UrllibHttpClient()
|
|
73
|
+
return _urllib.UrllibHttpClient()
|
|
15
74
|
|
|
16
75
|
|
|
17
76
|
def client() -> HttpClient:
|
|
18
77
|
return _default_client()
|
|
19
78
|
|
|
20
79
|
|
|
21
|
-
|
|
22
|
-
url: str,
|
|
23
|
-
method: str | None = None,
|
|
24
|
-
*,
|
|
25
|
-
headers: CanHttpHeaders | None = None,
|
|
26
|
-
data: bytes | str | None = None,
|
|
80
|
+
#
|
|
27
81
|
|
|
28
|
-
timeout_s: float | None = None,
|
|
29
82
|
|
|
30
|
-
|
|
83
|
+
class _SyncDefaultRequester(_DefaultRequester[HttpClient, HttpResponse]):
|
|
84
|
+
def _do(
|
|
85
|
+
self,
|
|
86
|
+
req: HttpRequest,
|
|
87
|
+
*,
|
|
88
|
+
check: bool = False,
|
|
89
|
+
client: HttpClient | None = None, # noqa
|
|
90
|
+
) -> HttpResponse:
|
|
91
|
+
def do(cli: HttpClient) -> HttpResponse: # noqa
|
|
92
|
+
return cli.request(
|
|
93
|
+
req,
|
|
31
94
|
|
|
32
|
-
|
|
95
|
+
check=check,
|
|
96
|
+
)
|
|
33
97
|
|
|
34
|
-
|
|
35
|
-
)
|
|
36
|
-
req = HttpRequest(
|
|
37
|
-
url,
|
|
38
|
-
method=method,
|
|
98
|
+
if client is not None:
|
|
99
|
+
return do(client)
|
|
39
100
|
|
|
40
|
-
|
|
41
|
-
|
|
101
|
+
else:
|
|
102
|
+
with _default_client() as cli:
|
|
103
|
+
return do(cli)
|
|
42
104
|
|
|
43
|
-
timeout_s=timeout_s,
|
|
44
105
|
|
|
45
|
-
|
|
46
|
-
)
|
|
106
|
+
request = _SyncDefaultRequester()
|
|
47
107
|
|
|
48
|
-
def do(cli: HttpClient) -> HttpResponse:
|
|
49
|
-
return cli.request(
|
|
50
|
-
req,
|
|
51
108
|
|
|
52
|
-
|
|
53
|
-
|
|
109
|
+
##
|
|
110
|
+
|
|
111
|
+
|
|
112
|
+
def _default_async_client() -> AsyncHttpClient:
|
|
113
|
+
return _httpx.HttpxAsyncHttpClient()
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def async_client() -> AsyncHttpClient:
|
|
117
|
+
return _default_async_client()
|
|
118
|
+
|
|
119
|
+
|
|
120
|
+
#
|
|
121
|
+
|
|
122
|
+
|
|
123
|
+
class _AsyncDefaultRequester(_DefaultRequester[AsyncHttpClient, ta.Awaitable[HttpResponse]]):
|
|
124
|
+
async def _do(
|
|
125
|
+
self,
|
|
126
|
+
req: HttpRequest,
|
|
127
|
+
*,
|
|
128
|
+
check: bool = False,
|
|
129
|
+
client: AsyncHttpClient | None = None, # noqa
|
|
130
|
+
) -> HttpResponse:
|
|
131
|
+
async def do(cli: AsyncHttpClient) -> HttpResponse: # noqa
|
|
132
|
+
return await cli.request(
|
|
133
|
+
req,
|
|
134
|
+
|
|
135
|
+
check=check,
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
if client is not None:
|
|
139
|
+
return await do(client)
|
|
140
|
+
|
|
141
|
+
else:
|
|
142
|
+
async with _default_async_client() as cli:
|
|
143
|
+
return await do(cli)
|
|
54
144
|
|
|
55
|
-
if client is not None:
|
|
56
|
-
return do(client)
|
|
57
145
|
|
|
58
|
-
|
|
59
|
-
with _default_client() as cli:
|
|
60
|
-
return do(cli)
|
|
146
|
+
async_request = _AsyncDefaultRequester()
|
omlish/http/clients/httpx.py
CHANGED
|
@@ -2,12 +2,16 @@
|
|
|
2
2
|
TODO:
|
|
3
3
|
- standardize following redirects
|
|
4
4
|
"""
|
|
5
|
+
import contextlib
|
|
5
6
|
import functools
|
|
7
|
+
import io
|
|
6
8
|
import typing as ta
|
|
7
9
|
|
|
8
10
|
from ... import dataclasses as dc
|
|
9
11
|
from ... import lang
|
|
10
12
|
from ..headers import HttpHeaders
|
|
13
|
+
from .asyncs import AsyncHttpClient
|
|
14
|
+
from .asyncs import AsyncStreamHttpResponse
|
|
11
15
|
from .base import HttpClientError
|
|
12
16
|
from .base import HttpRequest
|
|
13
17
|
from .sync import HttpClient
|
|
@@ -29,6 +33,7 @@ class HttpxHttpClient(HttpClient):
|
|
|
29
33
|
it: ta.Iterator[bytes]
|
|
30
34
|
|
|
31
35
|
def read(self, /, n: int = -1) -> bytes:
|
|
36
|
+
# FIXME: lol n
|
|
32
37
|
if n < 0:
|
|
33
38
|
return b''.join(self.it)
|
|
34
39
|
else:
|
|
@@ -70,3 +75,56 @@ class HttpxHttpClient(HttpClient):
|
|
|
70
75
|
except Exception:
|
|
71
76
|
resp_close()
|
|
72
77
|
raise
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
##
|
|
81
|
+
|
|
82
|
+
|
|
83
|
+
class HttpxAsyncHttpClient(AsyncHttpClient):
|
|
84
|
+
@dc.dataclass(frozen=True)
|
|
85
|
+
class _StreamAdapter:
|
|
86
|
+
it: ta.AsyncIterator[bytes]
|
|
87
|
+
|
|
88
|
+
async def read(self, /, n: int = -1) -> bytes:
|
|
89
|
+
# FIXME: lol n
|
|
90
|
+
if n < 0:
|
|
91
|
+
buf = io.BytesIO()
|
|
92
|
+
async for chunk in self.it:
|
|
93
|
+
buf.write(chunk)
|
|
94
|
+
return buf.getvalue()
|
|
95
|
+
else:
|
|
96
|
+
try:
|
|
97
|
+
return await anext(self.it)
|
|
98
|
+
except StopIteration:
|
|
99
|
+
return b''
|
|
100
|
+
|
|
101
|
+
async def _stream_request(self, req: HttpRequest) -> AsyncStreamHttpResponse:
|
|
102
|
+
es = contextlib.AsyncExitStack()
|
|
103
|
+
|
|
104
|
+
try:
|
|
105
|
+
client = await es.enter_async_context(httpx.AsyncClient())
|
|
106
|
+
|
|
107
|
+
resp = await es.enter_async_context(client.stream(
|
|
108
|
+
method=req.method_or_default,
|
|
109
|
+
url=req.url,
|
|
110
|
+
headers=req.headers_ or None, # type: ignore
|
|
111
|
+
content=req.data,
|
|
112
|
+
timeout=req.timeout_s,
|
|
113
|
+
))
|
|
114
|
+
|
|
115
|
+
return AsyncStreamHttpResponse(
|
|
116
|
+
status=resp.status_code,
|
|
117
|
+
headers=HttpHeaders(resp.headers.raw),
|
|
118
|
+
request=req,
|
|
119
|
+
underlying=resp,
|
|
120
|
+
stream=self._StreamAdapter(resp.aiter_bytes()),
|
|
121
|
+
_closer=es.aclose,
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
except httpx.HTTPError as e:
|
|
125
|
+
await es.aclose()
|
|
126
|
+
raise HttpClientError from e
|
|
127
|
+
|
|
128
|
+
except Exception:
|
|
129
|
+
await es.aclose()
|
|
130
|
+
raise
|
omlish/sync.py
CHANGED
|
@@ -141,6 +141,45 @@ class ConditionDeque(ta.Generic[T]):
|
|
|
141
141
|
##
|
|
142
142
|
|
|
143
143
|
|
|
144
|
+
class BufferRelay(ta.Generic[T]):
|
|
145
|
+
def __init__(
|
|
146
|
+
self,
|
|
147
|
+
*,
|
|
148
|
+
wake_fn: ta.Callable[[], None],
|
|
149
|
+
) -> None:
|
|
150
|
+
super().__init__()
|
|
151
|
+
|
|
152
|
+
self._wake_fn = wake_fn
|
|
153
|
+
|
|
154
|
+
self._lock = threading.Lock()
|
|
155
|
+
self._buffer: BufferRelay._Buffer = BufferRelay._Buffer()
|
|
156
|
+
|
|
157
|
+
class _Buffer:
|
|
158
|
+
def __init__(self) -> None:
|
|
159
|
+
self.lst: list = []
|
|
160
|
+
self.age = 0
|
|
161
|
+
|
|
162
|
+
def __repr__(self) -> str:
|
|
163
|
+
return f'{self.__class__.__qualname__}({self.lst!r}, age={self.age!r})'
|
|
164
|
+
|
|
165
|
+
def push(self, *vs: T) -> None:
|
|
166
|
+
with self._lock:
|
|
167
|
+
buf = self._buffer
|
|
168
|
+
needs_wake = not buf.age
|
|
169
|
+
buf.lst.extend(vs)
|
|
170
|
+
buf.age += 1
|
|
171
|
+
if needs_wake:
|
|
172
|
+
self._wake_fn()
|
|
173
|
+
|
|
174
|
+
def swap(self) -> ta.Sequence[T]:
|
|
175
|
+
with self._lock:
|
|
176
|
+
buf, self._buffer = self._buffer, BufferRelay._Buffer()
|
|
177
|
+
return buf.lst
|
|
178
|
+
|
|
179
|
+
|
|
180
|
+
##
|
|
181
|
+
|
|
182
|
+
|
|
144
183
|
class CountDownLatch:
|
|
145
184
|
def __init__(self, count: int) -> None:
|
|
146
185
|
super().__init__()
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
omlish/.omlish-manifests.json,sha256=FLw7xkPiSXuImZgqSP8BwrEib2R1doSzUPLUkc-QUIA,8410
|
|
2
|
-
omlish/__about__.py,sha256=
|
|
2
|
+
omlish/__about__.py,sha256=WE_K_l1J2e6fzoAW-jZ_o6mRow7zeKS-5ul4tkWVAFw,3611
|
|
3
3
|
omlish/__init__.py,sha256=SsyiITTuK0v74XpKV8dqNaCmjOlan1JZKrHQv5rWKPA,253
|
|
4
4
|
omlish/c3.py,sha256=ZNIMl1kwg3qdei4DiUrJPQe5M81S1e76N-GuNSwLBAE,8683
|
|
5
5
|
omlish/cached.py,sha256=MLap_p0rdGoDIMVhXVHm1tsbcWobJF0OanoodV03Ju8,542
|
|
@@ -9,7 +9,7 @@ omlish/libc.py,sha256=mNY2FWZ2BjSucOx5TEW8IP_B5n84tVZWuVPL3Z3sUH8,15644
|
|
|
9
9
|
omlish/metadata.py,sha256=lTh3NYVyjHtLTyAGiZxXJMjZrSPQ1E8zXvnJCgKSESA,4179
|
|
10
10
|
omlish/runmodule.py,sha256=vQ9VZN_c3sQX9rj036dW9lXuMWTjGOfWnwDcWTSWnn0,705
|
|
11
11
|
omlish/shlex.py,sha256=rlbgHWxjwpkCBRphOPqSIN_KD6qWJMLldNJUILulKT0,253
|
|
12
|
-
omlish/sync.py,sha256=
|
|
12
|
+
omlish/sync.py,sha256=mUjvZZUnnaAdTBPGu8QsUYS9f86MYW6TFl_PTN5pxGQ,4492
|
|
13
13
|
omlish/algorithm/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
14
|
omlish/algorithm/all.py,sha256=FudUHwoaRLNNmqYM3jhP2Yd2BpmYhNBRPaVZzARMoSc,194
|
|
15
15
|
omlish/algorithm/distribute.py,sha256=juv6JaCynQG6RaxX0fnNNEVJcvZ8hUS2Mv3ND2t9Y3w,1544
|
|
@@ -133,15 +133,15 @@ omlish/dataclasses/debug.py,sha256=giBiv6aXvX0IagwNCW64qBzNjfOFr3-VmgDy_KYlb-k,2
|
|
|
133
133
|
omlish/dataclasses/errors.py,sha256=QeJVRmrZQer3m66jSDiuAyfAngCBtocMxfnsoSxzOVw,2520
|
|
134
134
|
omlish/dataclasses/inspect.py,sha256=EpVb50CsEUWpn70gkjBa-hI1mr5_VubHTERsofgE-Lw,4600
|
|
135
135
|
omlish/dataclasses/reflection.py,sha256=6BD2FUiOEtpi_2JREWyVzemjbBJdBMUm8XxQ9SVIKGs,2799
|
|
136
|
-
omlish/dataclasses/specs.py,sha256=
|
|
136
|
+
omlish/dataclasses/specs.py,sha256=t5JIFsGOg5sQGb1kUZvcrs7ScANAHcAIMuBx9k2q-qY,7251
|
|
137
137
|
omlish/dataclasses/impl/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
138
138
|
omlish/dataclasses/impl/configs.py,sha256=ZW3Nf7uImc8VZLAdX1yh9TzzaOomVQ0zlcRuDcSUeXc,1520
|
|
139
139
|
omlish/dataclasses/impl/utils.py,sha256=jAD6IIILo70aD_s60CaqRU2YvpZxBKy4K5EG-MTiqVo,1871
|
|
140
140
|
omlish/dataclasses/impl/api/__init__.py,sha256=k5iS9QOwf_f4iOfGffYhnqDOcmEIwEUUTp00u11kIPM,455
|
|
141
141
|
omlish/dataclasses/impl/api/classes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
142
142
|
omlish/dataclasses/impl/api/classes/conversion.py,sha256=T1I-aZKui2tv8rknuw9yCvGQLTrFnzTuHDFoezhE0ko,908
|
|
143
|
-
omlish/dataclasses/impl/api/classes/decorator.py,sha256=
|
|
144
|
-
omlish/dataclasses/impl/api/classes/make.py,sha256=
|
|
143
|
+
omlish/dataclasses/impl/api/classes/decorator.py,sha256=J0uz7wkI8xsQWKvover-3njviThRrRIt1PL0fychEAo,4192
|
|
144
|
+
omlish/dataclasses/impl/api/classes/make.py,sha256=yfhf68ZoRfR_DXXGUzJ4bnCPbCnNvlaokW2gkrNWm6M,5331
|
|
145
145
|
omlish/dataclasses/impl/api/classes/metadata.py,sha256=sMZgtoZaybfCoBKOVj7hKc-xqfU2Lca9WFrqg8UAAsE,2773
|
|
146
146
|
omlish/dataclasses/impl/api/classes/params.py,sha256=cJAMxLHgW6xyKURlCnDQpA-TYfOgWpVBCavie-IZTOM,2000
|
|
147
147
|
omlish/dataclasses/impl/api/fields/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -164,7 +164,7 @@ omlish/dataclasses/impl/concerns/order.py,sha256=f1JVDkeTWllO9Tu79xKkjHul-_rpsYZ
|
|
|
164
164
|
omlish/dataclasses/impl/concerns/override.py,sha256=eegJ4KRs-p3Oj5ipY1eySwXJ3vFyVXG5gWRQZcsmvUQ,2810
|
|
165
165
|
omlish/dataclasses/impl/concerns/params.py,sha256=O_1f83gH8l_PzvOndxC4vlw2-bp8PNhNQUqB-0mJrWw,407
|
|
166
166
|
omlish/dataclasses/impl/concerns/replace.py,sha256=2lZCmTpz4uxMsNw8a29OzSykDqWHaINzvk13qyMpVUA,1509
|
|
167
|
-
omlish/dataclasses/impl/concerns/repr.py,sha256=
|
|
167
|
+
omlish/dataclasses/impl/concerns/repr.py,sha256=EOmKjjPuIWLJzUDgYwpZKjyjTH6NMUQEVRILwlqxwNw,3885
|
|
168
168
|
omlish/dataclasses/impl/concerns/slots.py,sha256=onEWZRPVhiCJOoyk3lNA_PTh0w49TDyqmTmcCY_oiHs,6604
|
|
169
169
|
omlish/dataclasses/impl/generation/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
170
170
|
omlish/dataclasses/impl/generation/base.py,sha256=UhG2_851oM_O9gQiSzj6I3CLpdljrOWyOdFDwX6ZJl4,712
|
|
@@ -302,7 +302,7 @@ omlish/graphs/dot/make.py,sha256=e-M1IEdh4kHEjJmBxpaEUPxvFLrm5uIXdGxjQZr2HRo,365
|
|
|
302
302
|
omlish/graphs/dot/rendering.py,sha256=SGSpwswdFqsjEnznQDyryIsXE8bzPXSUFAJHlB2uT2Y,3655
|
|
303
303
|
omlish/graphs/dot/utils.py,sha256=8cGKIdcM-w1q4ITUYyC0lnYwLqNWuH2OddmmbLxVgEo,806
|
|
304
304
|
omlish/http/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
305
|
-
omlish/http/all.py,sha256=
|
|
305
|
+
omlish/http/all.py,sha256=YdSZdd_Sq0CxxqcSBli0xBc75Fx-flA306zkSX_z4AQ,1654
|
|
306
306
|
omlish/http/asgi.py,sha256=4r2Gw1ojwp2OVpwonof1p4GFRcseIJqPhpkQpLhM9Jw,3243
|
|
307
307
|
omlish/http/consts.py,sha256=7BJ4D1MdIvqBcepkgCfBFHolgTwbOlqsOEiee_IjxOA,2289
|
|
308
308
|
omlish/http/cookies.py,sha256=uuOYlHR6e2SC3GM41V0aozK10nef9tYg83Scqpn5-HM,6351
|
|
@@ -322,8 +322,8 @@ omlish/http/wsgi.py,sha256=1JpfrY2JrQ0wrEVE0oLdQMWZw8Zcx0b4_9f3VmH4JKA,1070
|
|
|
322
322
|
omlish/http/clients/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
323
323
|
omlish/http/clients/asyncs.py,sha256=9AAVQVYuntDZVGZNatiK2SRS2OxHqDHlDgpuu6rkpSQ,3923
|
|
324
324
|
omlish/http/clients/base.py,sha256=2yv4zLMBhE0JYSKpUHZ9MUVZZ_if3AyOIFTVcZsepAs,2670
|
|
325
|
-
omlish/http/clients/default.py,sha256=
|
|
326
|
-
omlish/http/clients/httpx.py,sha256=
|
|
325
|
+
omlish/http/clients/default.py,sha256=y8dmcCmBgqnj_2ogVZ8NYyfq4k6dpI6t293o-12aorY,2937
|
|
326
|
+
omlish/http/clients/httpx.py,sha256=zjF0fg_XkurXP5CukYGzRrEaTJNFp4VaDjV5xGxj2Fo,3529
|
|
327
327
|
omlish/http/clients/sync.py,sha256=E85phmFqOkdE-LgyXOZGc6u2hA24Vm5-p3UzMpYdgBs,3572
|
|
328
328
|
omlish/http/clients/urllib.py,sha256=dQEI_nwTqn92vA2ikrnwDBD88a_DELRG6qBPS1kxGRQ,2701
|
|
329
329
|
omlish/http/coro/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -831,9 +831,9 @@ omlish/typedvalues/marshal.py,sha256=2xqX6JllhtGpmeYkU7C-qzgU__0x-vd6CzYbAsocQlc
|
|
|
831
831
|
omlish/typedvalues/of_.py,sha256=UXkxSj504WI2UrFlqdZJbu2hyDwBhL7XVrc2qdR02GQ,1309
|
|
832
832
|
omlish/typedvalues/reflect.py,sha256=PAvKW6T4cW7u--iX80w3HWwZUS3SmIZ2_lQjT65uAyk,1026
|
|
833
833
|
omlish/typedvalues/values.py,sha256=ym46I-q2QJ_6l4UlERqv3yj87R-kp8nCKMRph0xQ3UA,1307
|
|
834
|
-
omlish-0.0.0.
|
|
835
|
-
omlish-0.0.0.
|
|
836
|
-
omlish-0.0.0.
|
|
837
|
-
omlish-0.0.0.
|
|
838
|
-
omlish-0.0.0.
|
|
839
|
-
omlish-0.0.0.
|
|
834
|
+
omlish-0.0.0.dev468.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
|
|
835
|
+
omlish-0.0.0.dev468.dist-info/METADATA,sha256=HSlC60OEdYHNi6x1X5xQznGGPwJyx3qBuHjhB9OR9Xk,18999
|
|
836
|
+
omlish-0.0.0.dev468.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
837
|
+
omlish-0.0.0.dev468.dist-info/entry_points.txt,sha256=Lt84WvRZJskWCAS7xnQGZIeVWksprtUHj0llrvVmod8,35
|
|
838
|
+
omlish-0.0.0.dev468.dist-info/top_level.txt,sha256=pePsKdLu7DvtUiecdYXJ78iO80uDNmBlqe-8hOzOmfs,7
|
|
839
|
+
omlish-0.0.0.dev468.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|