reykit 1.1.108__py3-none-any.whl → 1.2.0__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.
- reykit/rbase.py +0 -84
- reykit/rnet.py +51 -19
- reykit/rtask.py +21 -3
- {reykit-1.1.108.dist-info → reykit-1.2.0.dist-info}/METADATA +1 -1
- {reykit-1.1.108.dist-info → reykit-1.2.0.dist-info}/RECORD +7 -7
- {reykit-1.1.108.dist-info → reykit-1.2.0.dist-info}/WHEEL +0 -0
- {reykit-1.1.108.dist-info → reykit-1.2.0.dist-info}/licenses/LICENSE +0 -0
reykit/rbase.py
CHANGED
@@ -50,7 +50,6 @@ __all__ = (
|
|
50
50
|
'check_most_one',
|
51
51
|
'check_file_found',
|
52
52
|
'check_file_exist',
|
53
|
-
'check_response_code',
|
54
53
|
'is_class',
|
55
54
|
'is_instance',
|
56
55
|
'is_iterable',
|
@@ -84,51 +83,6 @@ class Base(object):
|
|
84
83
|
Base type.
|
85
84
|
"""
|
86
85
|
|
87
|
-
def __getitem__(self, name: str) -> Any:
|
88
|
-
"""
|
89
|
-
Get Attribute.
|
90
|
-
|
91
|
-
Parameters
|
92
|
-
----------
|
93
|
-
name : Attribute name.
|
94
|
-
|
95
|
-
Returns
|
96
|
-
-------
|
97
|
-
Attribute value.
|
98
|
-
"""
|
99
|
-
|
100
|
-
# Get.
|
101
|
-
value = getattr(self, name)
|
102
|
-
|
103
|
-
return value
|
104
|
-
|
105
|
-
|
106
|
-
def __setitem__(self, name: str, value: Any) -> None:
|
107
|
-
"""
|
108
|
-
Set Attribute.
|
109
|
-
|
110
|
-
Parameters
|
111
|
-
----------
|
112
|
-
name : Attribute name.
|
113
|
-
value : Attribute value.
|
114
|
-
"""
|
115
|
-
|
116
|
-
# Set.
|
117
|
-
setattr(self, name, value)
|
118
|
-
|
119
|
-
|
120
|
-
def __delitem__(self, name: str) -> None:
|
121
|
-
"""
|
122
|
-
Delete Attribute.
|
123
|
-
|
124
|
-
Parameters
|
125
|
-
----------
|
126
|
-
name : Attribute name.
|
127
|
-
"""
|
128
|
-
|
129
|
-
# Delete.
|
130
|
-
delattr(self, name)
|
131
|
-
|
132
86
|
|
133
87
|
class StaticMeta(Base, type):
|
134
88
|
"""
|
@@ -489,44 +443,6 @@ def check_file_exist(path: str) -> None:
|
|
489
443
|
throw(FileExistsError, path)
|
490
444
|
|
491
445
|
|
492
|
-
def check_response_code(
|
493
|
-
code: int,
|
494
|
-
range_: int | Iterable[int] | None = None
|
495
|
-
) -> bool:
|
496
|
-
"""
|
497
|
-
Check if the response code is in range.
|
498
|
-
|
499
|
-
Parameters
|
500
|
-
----------
|
501
|
-
code : Response code.
|
502
|
-
range\\_ : Pass the code range.
|
503
|
-
- `None`: Check if is between 200 and 299.
|
504
|
-
- `int`: Check if is this value.
|
505
|
-
- `Iterable`: Check if is in sequence.
|
506
|
-
|
507
|
-
Returns
|
508
|
-
-------
|
509
|
-
Check result.
|
510
|
-
"""
|
511
|
-
|
512
|
-
# Check.
|
513
|
-
match range_:
|
514
|
-
case None:
|
515
|
-
result = code // 100 == 2
|
516
|
-
case int():
|
517
|
-
result = code == range_
|
518
|
-
case _ if hasattr(range_, '__contains__'):
|
519
|
-
result = code in range_
|
520
|
-
case _:
|
521
|
-
throw(TypeError, range_)
|
522
|
-
|
523
|
-
# Throw exception.
|
524
|
-
if not result:
|
525
|
-
throw(AssertionError, code)
|
526
|
-
|
527
|
-
return result
|
528
|
-
|
529
|
-
|
530
446
|
def is_class(obj: Any) -> bool:
|
531
447
|
"""
|
532
448
|
Judge whether it is class.
|
reykit/rnet.py
CHANGED
@@ -14,7 +14,11 @@ from collections.abc import Callable, Iterable
|
|
14
14
|
from warnings import filterwarnings
|
15
15
|
from os.path import abspath as os_abspath, isfile as os_isfile
|
16
16
|
from socket import socket as Socket
|
17
|
-
from urllib.parse import
|
17
|
+
from urllib.parse import (
|
18
|
+
urlsplit as urllib_urlsplit,
|
19
|
+
quote as urllib_quote,
|
20
|
+
unquote as urllib_unquote
|
21
|
+
)
|
18
22
|
from requests.api import request as requests_request
|
19
23
|
from requests.models import Response
|
20
24
|
from requests_cache import (
|
@@ -30,9 +34,9 @@ from mimetypes import guess_type
|
|
30
34
|
from filetype import guess as filetype_guess
|
31
35
|
from datetime import datetime
|
32
36
|
|
33
|
-
from .rbase import Base, throw
|
37
|
+
from .rbase import Base, throw
|
34
38
|
from .ros import File, get_md5
|
35
|
-
from .rre import search, split
|
39
|
+
from .rre import search, split, sub
|
36
40
|
|
37
41
|
|
38
42
|
__all__ = (
|
@@ -63,34 +67,45 @@ RequestCacheParameters = TypedDict(
|
|
63
67
|
)
|
64
68
|
|
65
69
|
|
66
|
-
def join_url(
|
70
|
+
def join_url(*urls: str, **params: dict) -> str:
|
67
71
|
"""
|
68
72
|
Join URL and parameters.
|
69
73
|
|
70
74
|
Parameters
|
71
75
|
----------
|
72
|
-
|
73
|
-
params :
|
76
|
+
urls : URL.
|
77
|
+
params : URL parameters.
|
74
78
|
|
75
79
|
Returns
|
76
80
|
-------
|
77
81
|
Joined URL.
|
78
82
|
"""
|
79
83
|
|
80
|
-
#
|
81
|
-
|
82
|
-
|
83
|
-
f'{key}={urllib_quote(value)}'
|
84
|
-
for key, value in params.items()
|
85
|
-
]
|
86
|
-
)
|
84
|
+
# Check.
|
85
|
+
if len(urls) == 0:
|
86
|
+
throw(ValueError, urls)
|
87
87
|
|
88
88
|
# Join URL.
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
url
|
89
|
+
url: str = '/'.join(urls)
|
90
|
+
url = url.replace('\\', '/')
|
91
|
+
pattern = '(?<!:)//+'
|
92
|
+
url = sub(pattern, url, '/')
|
93
|
+
if url[-1] == '/':
|
94
|
+
url = url[:-1]
|
95
|
+
|
96
|
+
# Join parameter.
|
97
|
+
if params != {}:
|
98
|
+
params_str = '&'.join(
|
99
|
+
[
|
100
|
+
f'{key}={urllib_quote(str(value))}'
|
101
|
+
for key, value in params.items()
|
102
|
+
]
|
103
|
+
)
|
104
|
+
if '?' not in url:
|
105
|
+
url += '?'
|
106
|
+
elif url[-1] != '?':
|
107
|
+
url += '&'
|
108
|
+
url += params_str
|
94
109
|
|
95
110
|
return url
|
96
111
|
|
@@ -369,7 +384,24 @@ def request(
|
|
369
384
|
range_ = None
|
370
385
|
else:
|
371
386
|
range_ = check
|
372
|
-
|
387
|
+
match range_:
|
388
|
+
case None:
|
389
|
+
result = response.status_code // 100 == 2
|
390
|
+
case int():
|
391
|
+
result = response.status_code == range_
|
392
|
+
case _ if hasattr(range_, '__contains__'):
|
393
|
+
result = response.status_code in range_
|
394
|
+
case _:
|
395
|
+
throw(TypeError, range_)
|
396
|
+
|
397
|
+
## Throw exception.
|
398
|
+
if not result:
|
399
|
+
response_text = response.text[:100]
|
400
|
+
if len(response.text) > 100:
|
401
|
+
response_text += '...'
|
402
|
+
response_text = repr(response_text)
|
403
|
+
text = f"response code is '{response.status_code}', response content is {response_text}"
|
404
|
+
throw(AssertionError, text=text)
|
373
405
|
|
374
406
|
return response
|
375
407
|
|
reykit/rtask.py
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
# -*- coding: utf-8 -*-
|
3
3
|
|
4
4
|
"""
|
5
|
-
@Time : 2022-12-19
|
5
|
+
@Time : 2022-12-19 20:06:20
|
6
6
|
@Author : Rey
|
7
7
|
@Contact : reyxbo@163.com
|
8
8
|
@Explain : Multi task methods.
|
@@ -30,7 +30,7 @@ from asyncio import (
|
|
30
30
|
)
|
31
31
|
from aiohttp import ClientSession, ClientResponse
|
32
32
|
|
33
|
-
from .rbase import T, Base, throw, check_most_one,
|
33
|
+
from .rbase import T, Base, throw, check_most_one, is_iterable
|
34
34
|
from .rtime import randn, TimeMark
|
35
35
|
from .rwrap import wrap_thread
|
36
36
|
|
@@ -715,7 +715,25 @@ async def async_request(
|
|
715
715
|
range_ = None
|
716
716
|
else:
|
717
717
|
range_ = check
|
718
|
-
|
718
|
+
match range_:
|
719
|
+
case None:
|
720
|
+
result = response.status // 100 == 2
|
721
|
+
case int():
|
722
|
+
result = response.status == range_
|
723
|
+
case _ if hasattr(range_, '__contains__'):
|
724
|
+
result = response.status in range_
|
725
|
+
case _:
|
726
|
+
throw(TypeError, range_)
|
727
|
+
|
728
|
+
## Throw exception.
|
729
|
+
if not result:
|
730
|
+
response_text = await response.text()
|
731
|
+
response_text = response_text[:100]
|
732
|
+
if len(response_text) > 100:
|
733
|
+
response_text += '...'
|
734
|
+
response_text = repr(response_text)
|
735
|
+
text = f"response code is '{response.status_code}', response content is {response_text}"
|
736
|
+
throw(AssertionError, text=text)
|
719
737
|
|
720
738
|
# Receive.
|
721
739
|
match handler:
|
@@ -1,12 +1,12 @@
|
|
1
1
|
reykit/__init__.py,sha256=5oKzVHvTmotJB08LhrMFQO3tFVFy7JuqXMn9PqnJEH8,779
|
2
2
|
reykit/rall.py,sha256=-gxGRcEcK7zTcA66DgGLw46QuDsJcdda6NQA_Xuyq8w,619
|
3
|
-
reykit/rbase.py,sha256=
|
3
|
+
reykit/rbase.py,sha256=snRdHOMTdsaWFYDQ5sTIcdJRybNcMarlz59EErbrepA,20897
|
4
4
|
reykit/rdata.py,sha256=j3BBeWKMIwowjC-W_5wkJxIWvVlZsqt1mYMKuQbaPG0,11323
|
5
5
|
reykit/remail.py,sha256=DE4sxfJEXNu6MiBJKUsWXqvBrIOJNmnm_1lnGL0tZec,6693
|
6
6
|
reykit/rimage.py,sha256=z-cjI_MgEbUhuKgIbvDS_e2fy2CrnBhr_FS6D8XuAg0,6124
|
7
7
|
reykit/rlog.py,sha256=yBArs48wl509v4q7e1vHbE3E_Bqi3VHEV-Iuw2Y58f8,25649
|
8
8
|
reykit/rmonkey.py,sha256=PBA19EqlJHI9FxT8C4-t59RlyAfwfhX7xV9ZJ3PegWo,7894
|
9
|
-
reykit/rnet.py,sha256=
|
9
|
+
reykit/rnet.py,sha256=XaPV8jTrO8u9Uv7JKeSwr-Fpc8vXXCZ2EXRNfiDuJuE,17849
|
10
10
|
reykit/rnum.py,sha256=WNtvKSS-MkgmudIqDR8Xv4WIdNLyEPIO0jz5ukL3cXg,3603
|
11
11
|
reykit/ros.py,sha256=quDCZfqpYtZRgyK2wtscm92oPm3PaKoBqDBAaM29HV8,47714
|
12
12
|
reykit/rrand.py,sha256=nH0e4wRiLba7Tg6pRyn7qnPrzIXdlJxm7e4S1EqsBLQ,8549
|
@@ -15,14 +15,14 @@ reykit/rschedule.py,sha256=H7JQbX3kVFetmGS2EZ_216NnZj-ilGl6h1MusIx8ZWk,12288
|
|
15
15
|
reykit/rstdout.py,sha256=YEKP8-OcCSk8TTtChgqTkO7NSnJ5LOb77d2qiE_3vLI,8081
|
16
16
|
reykit/rsys.py,sha256=zxHeahRwCNonyprHfw6yFT9qMkITBwInOlWuvaXgnhQ,24894
|
17
17
|
reykit/rtable.py,sha256=fTeuiZNGelSfAT-BIjT2u-wgkh9WpphgdD7gj_TcFw0,10587
|
18
|
-
reykit/rtask.py,sha256=
|
18
|
+
reykit/rtask.py,sha256=Yx44brRNh3AlshchJ8UEBgjmJxCJtBLjBW93E4fJrng,28372
|
19
19
|
reykit/rtext.py,sha256=cf3a0uGmdr2ucKjGzYkQFkUPdixKJW1c82FPDdmRzwM,13227
|
20
20
|
reykit/rtime.py,sha256=3UPpUK027TY1Wgf5bzwCQo1N4ZceZ2YtcZzM9I8Q9Qg,17766
|
21
21
|
reykit/rwrap.py,sha256=lOKBhSqx8V_PcsdipPP4SaiGXXcpfaEhO_qEGSySEkw,15065
|
22
22
|
reykit/rzip.py,sha256=vYw17toqg-DbMjvycluohU9zVX73uYYqQGAp_b21pA8,3433
|
23
23
|
reykit/rdll/__init__.py,sha256=mewj06HHIzzW6oreQAz-6in2zYwNJ4-d1eWWL7CPQgc,685
|
24
24
|
reykit/rdll/rdll_core.py,sha256=zBmOyxD6LkbNIadXmFHLJinj-6UFko8D6w5d7hYA7vU,5077
|
25
|
-
reykit-1.
|
26
|
-
reykit-1.
|
27
|
-
reykit-1.
|
28
|
-
reykit-1.
|
25
|
+
reykit-1.2.0.dist-info/METADATA,sha256=a7tM1JYPOslzUizVLL3rrEHwaEwjSZm5bZhouwZVRe0,1880
|
26
|
+
reykit-1.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
27
|
+
reykit-1.2.0.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
28
|
+
reykit-1.2.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|