omlish 0.0.0.dev148__py3-none-any.whl → 0.0.0.dev150__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} +59 -99
- omlish/check.py +49 -462
- omlish/http/__init__.py +0 -48
- omlish/http/all.py +48 -0
- omlish/{lite/http → http}/coroserver.py +11 -12
- omlish/{lite/http → http}/handlers.py +2 -1
- omlish/{lite/http → http}/parsing.py +1 -0
- omlish/{lite/http → http}/versions.py +1 -0
- omlish/io/__init__.py +0 -3
- omlish/{lite/io.py → io/buffers.py} +8 -9
- omlish/{lite → io}/fdio/corohttp.py +13 -16
- omlish/{lite → io}/fdio/handlers.py +3 -3
- omlish/lite/asyncio/subprocesses.py +9 -12
- omlish/lite/check.py +438 -75
- omlish/lite/contextmanagers.py +3 -4
- omlish/lite/inject.py +12 -16
- omlish/lite/marshal.py +7 -8
- omlish/lite/socketserver.py +2 -2
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev150.dist-info}/METADATA +1 -1
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev150.dist-info}/RECORD +31 -29
- /omlish/{lite/fdio → argparse}/__init__.py +0 -0
- /omlish/{lite/http → io/fdio}/__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.dev150.dist-info}/LICENSE +0 -0
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev150.dist-info}/WHEEL +0 -0
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev150.dist-info}/entry_points.txt +0 -0
- {omlish-0.0.0.dev148.dist-info → omlish-0.0.0.dev150.dist-info}/top_level.txt +0 -0
omlish/check.py
CHANGED
@@ -1,18 +1,13 @@
|
|
1
|
-
"""
|
2
|
-
TODO:
|
3
|
-
- def maybe(v: lang.Maybe[T])
|
4
|
-
"""
|
5
|
-
import collections
|
6
|
-
import threading
|
7
1
|
import typing as ta
|
8
2
|
|
3
|
+
from .lite.check import CheckArgsRenderer as ArgsRenderer # noqa
|
4
|
+
from .lite.check import CheckExceptionFactory as ExceptionFactory # noqa
|
5
|
+
from .lite.check import CheckLateConfigureFn as LateConfigureFn # noqa
|
6
|
+
from .lite.check import CheckMessage as Message # noqa
|
7
|
+
from .lite.check import CheckOnRaiseFn as OnRaiseFn # noqa
|
8
|
+
from .lite.check import Checks
|
9
|
+
from .lite.check import check
|
9
10
|
|
10
|
-
T = ta.TypeVar('T')
|
11
|
-
SizedT = ta.TypeVar('SizedT', bound=ta.Sized)
|
12
|
-
|
13
|
-
Message: ta.TypeAlias = str | ta.Callable[..., str | None] | None
|
14
|
-
|
15
|
-
_NONE_TYPE = type(None)
|
16
11
|
|
17
12
|
_isinstance = isinstance
|
18
13
|
_issubclass = issubclass
|
@@ -22,43 +17,21 @@ _callable = callable
|
|
22
17
|
##
|
23
18
|
|
24
19
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
OnRaiseFn: ta.TypeAlias = ta.Callable[[Exception], None]
|
29
|
-
_ON_RAISE: ta.Sequence[OnRaiseFn] = []
|
30
|
-
|
31
|
-
|
32
|
-
def register_on_raise(fn: OnRaiseFn) -> None:
|
33
|
-
global _ON_RAISE
|
34
|
-
with _CONFIG_LOCK:
|
35
|
-
_ON_RAISE = [*_ON_RAISE, fn]
|
36
|
-
|
37
|
-
|
38
|
-
def unregister_on_raise(fn: OnRaiseFn) -> None:
|
39
|
-
global _ON_RAISE
|
40
|
-
with _CONFIG_LOCK:
|
41
|
-
_ON_RAISE = [e for e in _ON_RAISE if e != fn]
|
20
|
+
register_on_raise = check.register_on_raise
|
21
|
+
unregister_on_raise = check.unregister_on_raise
|
42
22
|
|
43
23
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
_ARGS_RENDERER: ta.Callable[..., str | None] | None = None
|
48
|
-
|
24
|
+
##
|
49
25
|
|
50
|
-
def _try_enable_args_rendering() -> bool:
|
51
|
-
global _ARGS_RENDERER
|
52
|
-
if _ARGS_RENDERER is not None:
|
53
|
-
return True
|
54
26
|
|
27
|
+
def _try_get_args_rendering() -> ArgsRenderer | None:
|
55
28
|
try:
|
56
29
|
from .diag.asts import ArgsRenderer
|
57
30
|
|
58
31
|
ArgsRenderer.smoketest()
|
59
32
|
|
60
33
|
except Exception: # noqa
|
61
|
-
return
|
34
|
+
return None
|
62
35
|
|
63
36
|
def _real_render_args(fmt: str, *args: ta.Any) -> str | None:
|
64
37
|
ra = ArgsRenderer(back=3).render_args(*args)
|
@@ -67,445 +40,59 @@ def _try_enable_args_rendering() -> bool:
|
|
67
40
|
|
68
41
|
return fmt % tuple(str(a) for a in ra)
|
69
42
|
|
70
|
-
|
71
|
-
return True
|
72
|
-
|
73
|
-
|
74
|
-
_TRIED_ENABLED_ARGS_RENDERING: bool | None = None
|
75
|
-
|
76
|
-
|
77
|
-
def try_enable_args_rendering() -> bool:
|
78
|
-
global _TRIED_ENABLED_ARGS_RENDERING
|
79
|
-
if _TRIED_ENABLED_ARGS_RENDERING is not None:
|
80
|
-
return _TRIED_ENABLED_ARGS_RENDERING
|
81
|
-
|
82
|
-
with _CONFIG_LOCK:
|
83
|
-
if _TRIED_ENABLED_ARGS_RENDERING is None:
|
84
|
-
_TRIED_ENABLED_ARGS_RENDERING = _try_enable_args_rendering()
|
85
|
-
|
86
|
-
return _TRIED_ENABLED_ARGS_RENDERING
|
87
|
-
|
88
|
-
|
89
|
-
##
|
90
|
-
|
91
|
-
|
92
|
-
def _default_exception_factory(exc_cls: type[Exception], *args, **kwargs) -> Exception:
|
93
|
-
return exc_cls(*args, **kwargs) # noqa
|
94
|
-
|
95
|
-
|
96
|
-
_EXCEPTION_FACTORY = _default_exception_factory
|
97
|
-
|
98
|
-
|
99
|
-
class _ArgsKwargs:
|
100
|
-
def __init__(self, *args, **kwargs):
|
101
|
-
self.args = args
|
102
|
-
self.kwargs = kwargs
|
103
|
-
|
104
|
-
|
105
|
-
def _raise(
|
106
|
-
exception_type: type[Exception],
|
107
|
-
default_message: str,
|
108
|
-
message: Message,
|
109
|
-
ak: _ArgsKwargs = _ArgsKwargs(),
|
110
|
-
*,
|
111
|
-
render_fmt: str | None = None,
|
112
|
-
) -> ta.NoReturn:
|
113
|
-
exc_args = ()
|
114
|
-
if _callable(message):
|
115
|
-
message = ta.cast(ta.Callable, message)(*ak.args, **ak.kwargs)
|
116
|
-
if _isinstance(message, tuple):
|
117
|
-
message, *exc_args = message # type: ignore
|
118
|
-
|
119
|
-
if message is None:
|
120
|
-
message = default_message
|
121
|
-
|
122
|
-
try_enable_args_rendering()
|
123
|
-
|
124
|
-
if render_fmt is not None and _ARGS_RENDERER is not None:
|
125
|
-
rendered_args = _ARGS_RENDERER(render_fmt, *ak.args)
|
126
|
-
if rendered_args is not None:
|
127
|
-
message = f'{message} : {rendered_args}'
|
128
|
-
|
129
|
-
exc = _EXCEPTION_FACTORY(
|
130
|
-
exception_type,
|
131
|
-
message,
|
132
|
-
*exc_args,
|
133
|
-
*ak.args,
|
134
|
-
**ak.kwargs,
|
135
|
-
)
|
136
|
-
|
137
|
-
for fn in _ON_RAISE:
|
138
|
-
fn(exc)
|
139
|
-
|
140
|
-
raise exc
|
141
|
-
|
142
|
-
|
143
|
-
##
|
144
|
-
|
145
|
-
|
146
|
-
def _unpack_isinstance_spec(spec: ta.Any) -> tuple:
|
147
|
-
if _isinstance(spec, type):
|
148
|
-
return (spec,)
|
149
|
-
if not _isinstance(spec, tuple):
|
150
|
-
spec = (spec,)
|
151
|
-
if None in spec:
|
152
|
-
spec = tuple(filter(None, spec)) + (_NONE_TYPE,) # noqa
|
153
|
-
if ta.Any in spec:
|
154
|
-
spec = (object,)
|
155
|
-
return spec
|
156
|
-
|
157
|
-
|
158
|
-
def isinstance(v: ta.Any, spec: type[T] | tuple, msg: Message = None) -> T: # noqa
|
159
|
-
if not _isinstance(v, _unpack_isinstance_spec(spec)):
|
160
|
-
_raise(
|
161
|
-
TypeError,
|
162
|
-
'Must be instance',
|
163
|
-
msg,
|
164
|
-
_ArgsKwargs(v, spec),
|
165
|
-
render_fmt='not isinstance(%s, %s)',
|
166
|
-
)
|
167
|
-
|
168
|
-
return v
|
169
|
-
|
170
|
-
|
171
|
-
def of_isinstance(spec: type[T] | tuple, msg: Message = None) -> ta.Callable[[ta.Any], T]:
|
172
|
-
def inner(v):
|
173
|
-
return isinstance(v, _unpack_isinstance_spec(spec), msg)
|
174
|
-
|
175
|
-
return inner
|
176
|
-
|
177
|
-
|
178
|
-
def cast(v: ta.Any, cls: type[T], msg: Message = None) -> T: # noqa
|
179
|
-
if not _isinstance(v, cls):
|
180
|
-
_raise(
|
181
|
-
TypeError,
|
182
|
-
'Must be instance',
|
183
|
-
msg,
|
184
|
-
_ArgsKwargs(v, cls),
|
185
|
-
)
|
186
|
-
|
187
|
-
return v
|
188
|
-
|
189
|
-
|
190
|
-
def of_cast(cls: type[T], msg: Message = None) -> ta.Callable[[T], T]:
|
191
|
-
def inner(v):
|
192
|
-
return isinstance(v, cls, msg)
|
193
|
-
|
194
|
-
return inner
|
195
|
-
|
196
|
-
|
197
|
-
def not_isinstance(v: T, spec: ta.Any, msg: Message = None) -> T: # noqa
|
198
|
-
if _isinstance(v, _unpack_isinstance_spec(spec)):
|
199
|
-
_raise(
|
200
|
-
TypeError,
|
201
|
-
'Must not be instance',
|
202
|
-
msg,
|
203
|
-
_ArgsKwargs(v, spec),
|
204
|
-
render_fmt='isinstance(%s, %s)',
|
205
|
-
)
|
206
|
-
|
207
|
-
return v
|
208
|
-
|
43
|
+
return _real_render_args
|
209
44
|
|
210
|
-
def of_not_isinstance(spec: ta.Any, msg: Message = None) -> ta.Callable[[T], T]:
|
211
|
-
def inner(v):
|
212
|
-
return not_isinstance(v, _unpack_isinstance_spec(spec), msg)
|
213
45
|
|
214
|
-
|
46
|
+
def _try_enable_args_rendering(c: Checks) -> None:
|
47
|
+
if (rf := _try_get_args_rendering()) is not None:
|
48
|
+
c.set_args_renderer(rf)
|
215
49
|
|
216
50
|
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
def issubclass(v: type[T], spec: ta.Any, msg: Message = None) -> type[T]: # noqa
|
221
|
-
if not _issubclass(v, spec):
|
222
|
-
_raise(
|
223
|
-
TypeError,
|
224
|
-
'Must be subclass',
|
225
|
-
msg,
|
226
|
-
_ArgsKwargs(v, spec),
|
227
|
-
render_fmt='not issubclass(%s, %s)',
|
228
|
-
)
|
229
|
-
|
230
|
-
return v
|
231
|
-
|
232
|
-
|
233
|
-
def not_issubclass(v: type[T], spec: ta.Any, msg: Message = None) -> type[T]: # noqa
|
234
|
-
if _issubclass(v, spec):
|
235
|
-
_raise(
|
236
|
-
TypeError,
|
237
|
-
'Must not be subclass',
|
238
|
-
msg,
|
239
|
-
_ArgsKwargs(v, spec),
|
240
|
-
render_fmt='issubclass(%s, %s)',
|
241
|
-
)
|
242
|
-
|
243
|
-
return v
|
244
|
-
|
245
|
-
|
246
|
-
##
|
247
|
-
|
248
|
-
|
249
|
-
def in_(v: T, c: ta.Container[T], msg: Message = None) -> T:
|
250
|
-
if v not in c:
|
251
|
-
_raise(
|
252
|
-
ValueError,
|
253
|
-
'Must be in',
|
254
|
-
msg,
|
255
|
-
_ArgsKwargs(v, c),
|
256
|
-
render_fmt='%s not in %s',
|
257
|
-
)
|
258
|
-
|
259
|
-
return v
|
260
|
-
|
261
|
-
|
262
|
-
def not_in(v: T, c: ta.Container[T], msg: Message = None) -> T:
|
263
|
-
if v in c:
|
264
|
-
_raise(
|
265
|
-
ValueError,
|
266
|
-
'Must not be in',
|
267
|
-
msg,
|
268
|
-
_ArgsKwargs(v, c),
|
269
|
-
render_fmt='%s in %s',
|
270
|
-
)
|
271
|
-
|
272
|
-
return v
|
273
|
-
|
274
|
-
|
275
|
-
def empty(v: SizedT, msg: Message = None) -> SizedT:
|
276
|
-
if len(v) != 0:
|
277
|
-
_raise(
|
278
|
-
ValueError,
|
279
|
-
'Must be empty',
|
280
|
-
msg,
|
281
|
-
_ArgsKwargs(v),
|
282
|
-
render_fmt='%s',
|
283
|
-
)
|
284
|
-
|
285
|
-
return v
|
286
|
-
|
287
|
-
|
288
|
-
def iterempty(v: ta.Iterable[T], msg: Message = None) -> ta.Iterable[T]:
|
289
|
-
it = iter(v)
|
290
|
-
try:
|
291
|
-
next(it)
|
292
|
-
except StopIteration:
|
293
|
-
pass
|
294
|
-
else:
|
295
|
-
_raise(
|
296
|
-
ValueError,
|
297
|
-
'Must be empty',
|
298
|
-
msg,
|
299
|
-
_ArgsKwargs(v),
|
300
|
-
render_fmt='%s',
|
301
|
-
)
|
302
|
-
|
303
|
-
return v
|
304
|
-
|
305
|
-
|
306
|
-
def not_empty(v: SizedT, msg: Message = None) -> SizedT:
|
307
|
-
if len(v) == 0:
|
308
|
-
_raise(
|
309
|
-
ValueError,
|
310
|
-
'Must not be empty',
|
311
|
-
msg,
|
312
|
-
_ArgsKwargs(v),
|
313
|
-
render_fmt='%s',
|
314
|
-
)
|
315
|
-
|
316
|
-
return v
|
317
|
-
|
318
|
-
|
319
|
-
def unique(it: ta.Iterable[T], msg: Message = None) -> ta.Iterable[T]:
|
320
|
-
dupes = [e for e, c in collections.Counter(it).items() if c > 1]
|
321
|
-
if dupes:
|
322
|
-
_raise(
|
323
|
-
ValueError,
|
324
|
-
'Must be unique',
|
325
|
-
msg,
|
326
|
-
_ArgsKwargs(it, dupes),
|
327
|
-
)
|
328
|
-
|
329
|
-
return it
|
330
|
-
|
331
|
-
|
332
|
-
def single(obj: ta.Iterable[T], message: Message = None) -> T:
|
333
|
-
try:
|
334
|
-
[value] = obj
|
335
|
-
except ValueError:
|
336
|
-
_raise(
|
337
|
-
ValueError,
|
338
|
-
'Must be single',
|
339
|
-
message,
|
340
|
-
_ArgsKwargs(obj),
|
341
|
-
render_fmt='%s',
|
342
|
-
)
|
343
|
-
|
344
|
-
return value
|
345
|
-
|
346
|
-
|
347
|
-
def opt_single(obj: ta.Iterable[T], message: Message = None) -> T | None:
|
348
|
-
it = iter(obj)
|
349
|
-
try:
|
350
|
-
value = next(it)
|
351
|
-
except StopIteration:
|
352
|
-
return None
|
353
|
-
|
354
|
-
try:
|
355
|
-
next(it)
|
356
|
-
except StopIteration:
|
357
|
-
return value # noqa
|
358
|
-
|
359
|
-
_raise(
|
360
|
-
ValueError,
|
361
|
-
'Must be empty or single',
|
362
|
-
message,
|
363
|
-
_ArgsKwargs(obj),
|
364
|
-
render_fmt='%s',
|
365
|
-
)
|
51
|
+
check.register_late_configure(_try_enable_args_rendering)
|
366
52
|
|
367
53
|
|
368
54
|
##
|
369
55
|
|
370
56
|
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
376
|
-
|
377
|
-
_ArgsKwargs(v),
|
378
|
-
render_fmt='%s',
|
379
|
-
)
|
380
|
-
|
381
|
-
|
382
|
-
def not_none(v: T | None, msg: Message = None) -> T:
|
383
|
-
if v is None:
|
384
|
-
_raise(
|
385
|
-
ValueError,
|
386
|
-
'Must not be None',
|
387
|
-
msg,
|
388
|
-
_ArgsKwargs(v),
|
389
|
-
render_fmt='%s',
|
390
|
-
)
|
391
|
-
|
392
|
-
return v
|
393
|
-
|
394
|
-
|
395
|
-
##
|
396
|
-
|
397
|
-
|
398
|
-
def equal(v: T, o: ta.Any, msg: Message = None) -> T:
|
399
|
-
if o != v:
|
400
|
-
_raise(
|
401
|
-
ValueError,
|
402
|
-
'Must be equal',
|
403
|
-
msg,
|
404
|
-
_ArgsKwargs(v, o),
|
405
|
-
render_fmt='%s != %s',
|
406
|
-
)
|
407
|
-
|
408
|
-
return v
|
409
|
-
|
410
|
-
|
411
|
-
def is_(v: T, o: ta.Any, msg: Message = None) -> T:
|
412
|
-
if o is not v:
|
413
|
-
_raise(
|
414
|
-
ValueError,
|
415
|
-
'Must be the same',
|
416
|
-
msg,
|
417
|
-
_ArgsKwargs(v, o),
|
418
|
-
render_fmt='%s is not %s',
|
419
|
-
)
|
420
|
-
|
421
|
-
return v
|
422
|
-
|
423
|
-
|
424
|
-
def is_not(v: T, o: ta.Any, msg: Message = None) -> T:
|
425
|
-
if o is v:
|
426
|
-
_raise(
|
427
|
-
ValueError,
|
428
|
-
'Must not be the same',
|
429
|
-
msg,
|
430
|
-
_ArgsKwargs(v, o),
|
431
|
-
render_fmt='%s is %s',
|
432
|
-
)
|
433
|
-
|
434
|
-
return v
|
435
|
-
|
436
|
-
|
437
|
-
def callable(v: T, msg: Message = None) -> T: # noqa
|
438
|
-
if not _callable(v):
|
439
|
-
_raise(
|
440
|
-
TypeError,
|
441
|
-
'Must be callable',
|
442
|
-
msg,
|
443
|
-
_ArgsKwargs(v),
|
444
|
-
render_fmt='%s',
|
445
|
-
)
|
446
|
-
|
447
|
-
return v # type: ignore
|
448
|
-
|
449
|
-
|
450
|
-
def non_empty_str(v: str | None, msg: Message = None) -> str:
|
451
|
-
if not _isinstance(v, str) or not v:
|
452
|
-
_raise(
|
453
|
-
ValueError,
|
454
|
-
'Must be non-empty str',
|
455
|
-
msg,
|
456
|
-
_ArgsKwargs(v),
|
457
|
-
render_fmt='%s',
|
458
|
-
)
|
459
|
-
|
460
|
-
return v
|
57
|
+
isinstance = check.isinstance # noqa
|
58
|
+
of_isinstance = check.of_isinstance
|
59
|
+
cast = check.cast
|
60
|
+
of_cast = check.of_cast
|
61
|
+
not_isinstance = check.not_isinstance
|
62
|
+
of_not_isinstance = check.of_not_isinstance
|
461
63
|
|
64
|
+
#
|
462
65
|
|
463
|
-
|
464
|
-
|
465
|
-
_raise(
|
466
|
-
ValueError,
|
467
|
-
'Must be replacing',
|
468
|
-
msg,
|
469
|
-
_ArgsKwargs(expected, old, new),
|
470
|
-
render_fmt='%s -> %s -> %s',
|
471
|
-
)
|
66
|
+
issubclass = check.issubclass # noqa
|
67
|
+
not_issubclass = check.not_issubclass
|
472
68
|
|
473
|
-
|
69
|
+
#
|
474
70
|
|
71
|
+
in_ = check.in_
|
72
|
+
not_in = check.not_in
|
73
|
+
empty = check.empty
|
74
|
+
iterempty = check.iterempty
|
75
|
+
not_empty = check.not_empty
|
76
|
+
unique = check.unique
|
77
|
+
single = check.single
|
78
|
+
opt_single = check.opt_single
|
475
79
|
|
476
|
-
|
477
|
-
if old is not None:
|
478
|
-
_raise(
|
479
|
-
ValueError,
|
480
|
-
'Must be replacing None',
|
481
|
-
msg,
|
482
|
-
_ArgsKwargs(old, new),
|
483
|
-
render_fmt='%s -> %s',
|
484
|
-
)
|
80
|
+
#
|
485
81
|
|
486
|
-
|
82
|
+
none = check.none
|
83
|
+
not_none = check.not_none
|
487
84
|
|
85
|
+
#
|
488
86
|
|
489
|
-
|
87
|
+
equal = check.equal
|
88
|
+
is_ = check.is_
|
89
|
+
is_not = check.is_not
|
90
|
+
callable = check.callable # noqa
|
91
|
+
non_empty_str = check.non_empty_str
|
92
|
+
replacing = check.replacing
|
93
|
+
replacing_none = check.replacing_none
|
490
94
|
|
95
|
+
#
|
491
96
|
|
492
|
-
|
493
|
-
|
494
|
-
_raise(
|
495
|
-
RuntimeError,
|
496
|
-
'Argument condition not met',
|
497
|
-
msg,
|
498
|
-
_ArgsKwargs(v),
|
499
|
-
render_fmt='%s',
|
500
|
-
)
|
501
|
-
|
502
|
-
|
503
|
-
def state(v: bool, msg: Message = None) -> None:
|
504
|
-
if not v:
|
505
|
-
_raise(
|
506
|
-
RuntimeError,
|
507
|
-
'State condition not met',
|
508
|
-
msg,
|
509
|
-
_ArgsKwargs(v),
|
510
|
-
render_fmt='%s',
|
511
|
-
)
|
97
|
+
arg = check.arg
|
98
|
+
state = check.state
|
omlish/http/__init__.py
CHANGED
@@ -1,48 +0,0 @@
|
|
1
|
-
from . import consts # noqa
|
2
|
-
|
3
|
-
from .clients import ( # noqa
|
4
|
-
HttpClient,
|
5
|
-
HttpClientError,
|
6
|
-
HttpRequest,
|
7
|
-
HttpResponse,
|
8
|
-
HttpxHttpClient,
|
9
|
-
UrllibHttpClient,
|
10
|
-
client,
|
11
|
-
request,
|
12
|
-
)
|
13
|
-
|
14
|
-
from .cookies import ( # noqa
|
15
|
-
CookieTooBigError,
|
16
|
-
dump_cookie,
|
17
|
-
parse_cookie,
|
18
|
-
)
|
19
|
-
|
20
|
-
from .dates import ( # noqa
|
21
|
-
http_date,
|
22
|
-
parse_date,
|
23
|
-
)
|
24
|
-
|
25
|
-
from .encodings import ( # noqa
|
26
|
-
latin1_decode,
|
27
|
-
latin1_encode,
|
28
|
-
)
|
29
|
-
|
30
|
-
from .headers import ( # noqa
|
31
|
-
CanHttpHeaders,
|
32
|
-
HttpHeaders,
|
33
|
-
headers,
|
34
|
-
)
|
35
|
-
|
36
|
-
from .json import ( # noqa
|
37
|
-
JSON_TAGGER,
|
38
|
-
JsonTag,
|
39
|
-
JsonTagger,
|
40
|
-
json_dumps,
|
41
|
-
json_loads,
|
42
|
-
)
|
43
|
-
|
44
|
-
from .multipart import ( # noqa
|
45
|
-
MultipartData,
|
46
|
-
MultipartEncoder,
|
47
|
-
MultipartField,
|
48
|
-
)
|
omlish/http/all.py
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
from . import consts # noqa
|
2
|
+
|
3
|
+
from .clients import ( # noqa
|
4
|
+
HttpClient,
|
5
|
+
HttpClientError,
|
6
|
+
HttpRequest,
|
7
|
+
HttpResponse,
|
8
|
+
HttpxHttpClient,
|
9
|
+
UrllibHttpClient,
|
10
|
+
client,
|
11
|
+
request,
|
12
|
+
)
|
13
|
+
|
14
|
+
from .cookies import ( # noqa
|
15
|
+
CookieTooBigError,
|
16
|
+
dump_cookie,
|
17
|
+
parse_cookie,
|
18
|
+
)
|
19
|
+
|
20
|
+
from .dates import ( # noqa
|
21
|
+
http_date,
|
22
|
+
parse_date,
|
23
|
+
)
|
24
|
+
|
25
|
+
from .encodings import ( # noqa
|
26
|
+
latin1_decode,
|
27
|
+
latin1_encode,
|
28
|
+
)
|
29
|
+
|
30
|
+
from .headers import ( # noqa
|
31
|
+
CanHttpHeaders,
|
32
|
+
HttpHeaders,
|
33
|
+
headers,
|
34
|
+
)
|
35
|
+
|
36
|
+
from .json import ( # noqa
|
37
|
+
JSON_TAGGER,
|
38
|
+
JsonTag,
|
39
|
+
JsonTagger,
|
40
|
+
json_dumps,
|
41
|
+
json_loads,
|
42
|
+
)
|
43
|
+
|
44
|
+
from .multipart import ( # noqa
|
45
|
+
MultipartData,
|
46
|
+
MultipartEncoder,
|
47
|
+
MultipartField,
|
48
|
+
)
|