reykit 1.1.100__py3-none-any.whl → 1.1.102__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 +15 -8
- reykit/rdata.py +6 -6
- reykit/rdll/__init__.py +1 -1
- reykit/remail.py +3 -3
- reykit/rimage.py +3 -3
- reykit/rlog.py +7 -7
- reykit/rmonkey.py +1 -1
- reykit/rnet.py +4 -4
- reykit/rnum.py +2 -2
- reykit/ros.py +16 -16
- reykit/rrand.py +2 -2
- reykit/rre.py +2 -2
- reykit/rschedule.py +19 -28
- reykit/rstdout.py +4 -4
- reykit/rsys.py +7 -7
- reykit/rtable.py +10 -10
- reykit/rtask.py +41 -33
- reykit/rtext.py +3 -3
- reykit/rtime.py +5 -5
- reykit/rwrap.py +3 -3
- reykit/rzip.py +2 -2
- {reykit-1.1.100.dist-info → reykit-1.1.102.dist-info}/METADATA +3 -3
- reykit-1.1.102.dist-info/RECORD +28 -0
- reykit-1.1.100.dist-info/RECORD +0 -28
- {reykit-1.1.100.dist-info → reykit-1.1.102.dist-info}/WHEEL +0 -0
- {reykit-1.1.100.dist-info → reykit-1.1.102.dist-info}/licenses/LICENSE +0 -0
reykit/rbase.py
CHANGED
@@ -9,7 +9,8 @@
|
|
9
9
|
"""
|
10
10
|
|
11
11
|
|
12
|
-
from typing import Any, Literal, Self, TypeVar, Type, NoReturn, overload, final
|
12
|
+
from typing import Any, Literal, Callable, Self, TypeVar, Type, NoReturn, overload, final
|
13
|
+
from types import CoroutineType
|
13
14
|
from collections.abc import Callable, Iterable, Container, Mapping
|
14
15
|
from sys import exc_info as sys_exc_info
|
15
16
|
from os.path import exists as os_exists
|
@@ -30,7 +31,9 @@ __all__ = (
|
|
30
31
|
'KT',
|
31
32
|
'VT',
|
32
33
|
'CallableT',
|
33
|
-
'
|
34
|
+
'CallableSimple',
|
35
|
+
'CoroutineFunction',
|
36
|
+
'CoroutineFunctionSimple',
|
34
37
|
'Base',
|
35
38
|
'StaticMeta',
|
36
39
|
'ConfigMeta',
|
@@ -67,9 +70,13 @@ __all__ = (
|
|
67
70
|
T = TypeVar('T') # Any.
|
68
71
|
U = TypeVar('U') # Any.
|
69
72
|
V = TypeVar('V') # Any.
|
70
|
-
KT = TypeVar('KT') #
|
71
|
-
VT = TypeVar('VT') #
|
72
|
-
CallableT = TypeVar('CallableT', bound=Callable) #
|
73
|
+
KT = TypeVar('KT') # Dictionary key.
|
74
|
+
VT = TypeVar('VT') # Dictionary value.
|
75
|
+
CallableT = TypeVar('CallableT', bound=Callable) # Callable.
|
76
|
+
|
77
|
+
type CallableSimple = Callable[[], Any]
|
78
|
+
type CoroutineFunction = Callable[..., CoroutineType]
|
79
|
+
type CoroutineFunctionSimple = Callable[[], CoroutineType]
|
73
80
|
|
74
81
|
|
75
82
|
class Base(object):
|
@@ -340,7 +347,7 @@ def warn(
|
|
340
347
|
stacklevel : Warning code location, number of recursions up the code level.
|
341
348
|
"""
|
342
349
|
|
343
|
-
#
|
350
|
+
# Parameter.
|
344
351
|
if infos == ():
|
345
352
|
infos = 'Warning!'
|
346
353
|
elif len(infos) == 1:
|
@@ -367,7 +374,7 @@ def catch_exc() -> tuple[str, BaseException, StackSummary]:
|
|
367
374
|
- `StackSummary`: Exception traceback stack instance.
|
368
375
|
"""
|
369
376
|
|
370
|
-
#
|
377
|
+
# Parameter.
|
371
378
|
exc_text = format_exc()
|
372
379
|
exc_text = exc_text.strip()
|
373
380
|
_, exc, traceback = sys_exc_info()
|
@@ -874,7 +881,7 @@ def get_varname(argname: str, level: int = 1) -> str | list[str] | None:
|
|
874
881
|
- `Throw VarnameException`: Return `None`.
|
875
882
|
"""
|
876
883
|
|
877
|
-
#
|
884
|
+
# Parameter.
|
878
885
|
level += 1
|
879
886
|
|
880
887
|
# Get.
|
reykit/rdata.py
CHANGED
@@ -53,7 +53,7 @@ def to_json(
|
|
53
53
|
JSON format string.
|
54
54
|
"""
|
55
55
|
|
56
|
-
#
|
56
|
+
# Parameter.
|
57
57
|
if compact:
|
58
58
|
indent = None
|
59
59
|
separators = (',', ':')
|
@@ -122,7 +122,7 @@ def flatten(data: Any, *, _flattern_data: list | None = None) -> list:
|
|
122
122
|
Data after flatten.
|
123
123
|
"""
|
124
124
|
|
125
|
-
#
|
125
|
+
# Parameter.
|
126
126
|
_flattern_data = _flattern_data or []
|
127
127
|
|
128
128
|
# Flatten.
|
@@ -175,7 +175,7 @@ def split(data: Iterable[T], share: int | None = None, bin_size: int | None = No
|
|
175
175
|
check_least_one(share, bin_size)
|
176
176
|
check_most_one(share, bin_size)
|
177
177
|
|
178
|
-
#
|
178
|
+
# Parameter.
|
179
179
|
data = list(data)
|
180
180
|
|
181
181
|
# Split.
|
@@ -217,7 +217,7 @@ def unique(data: Iterable[T]) -> list[T]:
|
|
217
217
|
List after de duplication.
|
218
218
|
"""
|
219
219
|
|
220
|
-
#
|
220
|
+
# Parameter.
|
221
221
|
data = tuple(data)
|
222
222
|
|
223
223
|
# Delete duplicate.
|
@@ -350,7 +350,7 @@ def default_dict(default: T | Null.Type = Null, data: dict[KT, VT] | None = None
|
|
350
350
|
- `None`: Empty `dict`.
|
351
351
|
"""
|
352
352
|
|
353
|
-
#
|
353
|
+
# Parameter.
|
354
354
|
|
355
355
|
## Null.
|
356
356
|
if default == Null:
|
@@ -472,7 +472,7 @@ class FunctionGenerator(Base):
|
|
472
472
|
kwargs : Function keyword arguments.
|
473
473
|
"""
|
474
474
|
|
475
|
-
#
|
475
|
+
# Parameter.
|
476
476
|
func_args = (
|
477
477
|
*self.args,
|
478
478
|
*args
|
reykit/rdll/__init__.py
CHANGED
reykit/remail.py
CHANGED
@@ -44,7 +44,7 @@ class Email(Base):
|
|
44
44
|
password : Email password.
|
45
45
|
"""
|
46
46
|
|
47
|
-
#
|
47
|
+
# Parameter.
|
48
48
|
host, port = self.get_server_address(username)
|
49
49
|
|
50
50
|
# Set attribute.
|
@@ -121,7 +121,7 @@ class Email(Base):
|
|
121
121
|
show_cc : Show carbon copy email addresses list.
|
122
122
|
"""
|
123
123
|
|
124
|
-
#
|
124
|
+
# Parameter.
|
125
125
|
if type(show_to) == list:
|
126
126
|
show_to = ','.join(show_to)
|
127
127
|
if type(show_cc) == list:
|
@@ -208,7 +208,7 @@ class Email(Base):
|
|
208
208
|
- `list[str]`: Email addresses list.
|
209
209
|
"""
|
210
210
|
|
211
|
-
#
|
211
|
+
# Parameter.
|
212
212
|
|
213
213
|
## To.
|
214
214
|
if type(to) == str:
|
reykit/rimage.py
CHANGED
@@ -87,7 +87,7 @@ def decode_qrcode(image: str | bytes) -> list[str]:
|
|
87
87
|
if isinstance(pyzbar_decode, BaseException):
|
88
88
|
raise pyzbar_decode
|
89
89
|
|
90
|
-
#
|
90
|
+
# Parameter.
|
91
91
|
if type(image) in (bytes, bytearray):
|
92
92
|
image = BytesIO(image)
|
93
93
|
|
@@ -137,7 +137,7 @@ def compress_image(
|
|
137
137
|
Compressed image bytes data.
|
138
138
|
"""
|
139
139
|
|
140
|
-
#
|
140
|
+
# Parameter.
|
141
141
|
if type(input_image) == str:
|
142
142
|
file = File(input_image)
|
143
143
|
input_image = file.str
|
@@ -234,7 +234,7 @@ def generate_captcha_image(
|
|
234
234
|
Captcha image bytes data.
|
235
235
|
"""
|
236
236
|
|
237
|
-
#
|
237
|
+
# Parameter.
|
238
238
|
text = text or 5
|
239
239
|
if type(text) == int:
|
240
240
|
text = randchar(text, False)
|
reykit/rlog.py
CHANGED
@@ -114,7 +114,7 @@ class Log(Base):
|
|
114
114
|
Stack parameters.
|
115
115
|
"""
|
116
116
|
|
117
|
-
#
|
117
|
+
# Parameter.
|
118
118
|
stack_params = get_stack_param('full', 12)
|
119
119
|
stack_param = stack_params[-1]
|
120
120
|
|
@@ -419,7 +419,7 @@ class Log(Base):
|
|
419
419
|
Handler.
|
420
420
|
"""
|
421
421
|
|
422
|
-
#
|
422
|
+
# Parameter.
|
423
423
|
format_ = get_first_notnone(format_, self.default_format)
|
424
424
|
filter_ = filter_ or self.get_default_filter_method(format_, 'print')
|
425
425
|
|
@@ -498,7 +498,7 @@ class Log(Base):
|
|
498
498
|
Handler.
|
499
499
|
"""
|
500
500
|
|
501
|
-
#
|
501
|
+
# Parameter.
|
502
502
|
format_ = get_first_notnone(format_, self.default_format)
|
503
503
|
path = path or self.name
|
504
504
|
filter_ = filter_ or self.get_default_filter_method(format_, 'file')
|
@@ -766,7 +766,7 @@ class Log(Base):
|
|
766
766
|
params : Record Format parameters.
|
767
767
|
"""
|
768
768
|
|
769
|
-
#
|
769
|
+
# Parameter.
|
770
770
|
if (
|
771
771
|
level is None
|
772
772
|
or catch
|
@@ -968,7 +968,7 @@ class Mark(Base):
|
|
968
968
|
Object memory ID.
|
969
969
|
"""
|
970
970
|
|
971
|
-
#
|
971
|
+
# Parameter.
|
972
972
|
obj_id = hash(obj)
|
973
973
|
group_set = self.data.setdefault(group, set())
|
974
974
|
|
@@ -992,7 +992,7 @@ class Mark(Base):
|
|
992
992
|
Judgment result.
|
993
993
|
"""
|
994
994
|
|
995
|
-
#
|
995
|
+
# Parameter.
|
996
996
|
obj_id = hash(obj)
|
997
997
|
group_set = self.data.setdefault(group, set())
|
998
998
|
|
@@ -1031,7 +1031,7 @@ class Mark(Base):
|
|
1031
1031
|
Judgment result.
|
1032
1032
|
"""
|
1033
1033
|
|
1034
|
-
#
|
1034
|
+
# Parameter.
|
1035
1035
|
obj_id = hash(obj)
|
1036
1036
|
group_set = self.data.setdefault(group, set())
|
1037
1037
|
|
reykit/rmonkey.py
CHANGED
reykit/rnet.py
CHANGED
@@ -300,7 +300,7 @@ def request(
|
|
300
300
|
Response object of requests package.
|
301
301
|
"""
|
302
302
|
|
303
|
-
#
|
303
|
+
# Parameter.
|
304
304
|
if method is None:
|
305
305
|
if data is None and json is None and files is None:
|
306
306
|
method = 'get'
|
@@ -389,7 +389,7 @@ def get_response_file_name(response: Response, default_name: str | None = None)
|
|
389
389
|
File name.
|
390
390
|
"""
|
391
391
|
|
392
|
-
#
|
392
|
+
# Parameter.
|
393
393
|
content = response.content
|
394
394
|
|
395
395
|
# Get.
|
@@ -470,7 +470,7 @@ def compute_stream_time(
|
|
470
470
|
File send seconds.
|
471
471
|
"""
|
472
472
|
|
473
|
-
#
|
473
|
+
# Parameter.
|
474
474
|
match source:
|
475
475
|
case str():
|
476
476
|
file = File(source)
|
@@ -503,7 +503,7 @@ def listen_socket(
|
|
503
503
|
handler : Handler function.
|
504
504
|
"""
|
505
505
|
|
506
|
-
#
|
506
|
+
# Parameter.
|
507
507
|
port = int(port)
|
508
508
|
rece_size = 1024 * 1024 * 1024
|
509
509
|
|
reykit/rnum.py
CHANGED
@@ -121,7 +121,7 @@ def number_ch(number: int) -> str:
|
|
121
121
|
# Import.
|
122
122
|
from .rre import sub_batch
|
123
123
|
|
124
|
-
#
|
124
|
+
# Parameter.
|
125
125
|
map_digit = {
|
126
126
|
'0': '零',
|
127
127
|
'1': '一',
|
@@ -154,7 +154,7 @@ def number_ch(number: int) -> str:
|
|
154
154
|
16: '兆'
|
155
155
|
}
|
156
156
|
|
157
|
-
#
|
157
|
+
# Parameter.
|
158
158
|
number_str = str(number)
|
159
159
|
|
160
160
|
# Replace digit.
|
reykit/ros.py
CHANGED
@@ -91,7 +91,7 @@ def format_path(path: str | None = None) -> str:
|
|
91
91
|
Formatted path.
|
92
92
|
"""
|
93
93
|
|
94
|
-
#
|
94
|
+
# Parameter.
|
95
95
|
path = path or ''
|
96
96
|
|
97
97
|
# Format.
|
@@ -137,7 +137,7 @@ def get_md5(data: str | bytes) -> str:
|
|
137
137
|
MD5 value.
|
138
138
|
"""
|
139
139
|
|
140
|
-
#
|
140
|
+
# Parameter.
|
141
141
|
if type(data) == str:
|
142
142
|
data = data.encode()
|
143
143
|
|
@@ -188,7 +188,7 @@ def find_relpath(abspath: str, relpath: str) -> str:
|
|
188
188
|
C:/Folder1/Folder4/File.txt
|
189
189
|
"""
|
190
190
|
|
191
|
-
#
|
191
|
+
# Parameter.
|
192
192
|
level = 0
|
193
193
|
for char in relpath:
|
194
194
|
if char == '.':
|
@@ -371,7 +371,7 @@ class File(Base):
|
|
371
371
|
IO object.
|
372
372
|
"""
|
373
373
|
|
374
|
-
#
|
374
|
+
# Parameter.
|
375
375
|
if 'b' in mode:
|
376
376
|
encode = None
|
377
377
|
|
@@ -430,7 +430,7 @@ class File(Base):
|
|
430
430
|
File data.
|
431
431
|
"""
|
432
432
|
|
433
|
-
#
|
433
|
+
# Parameter.
|
434
434
|
match type_:
|
435
435
|
case 'bytes':
|
436
436
|
mode = 'rb'
|
@@ -461,7 +461,7 @@ class File(Base):
|
|
461
461
|
append : Whether append data, otherwise overwrite data.
|
462
462
|
"""
|
463
463
|
|
464
|
-
#
|
464
|
+
# Parameter.
|
465
465
|
|
466
466
|
## Write mode.
|
467
467
|
if append:
|
@@ -528,7 +528,7 @@ class File(Base):
|
|
528
528
|
New file path.
|
529
529
|
"""
|
530
530
|
|
531
|
-
#
|
531
|
+
# Parameter.
|
532
532
|
move_path = join_path(self.dir, name)
|
533
533
|
|
534
534
|
# Move.
|
@@ -836,7 +836,7 @@ class File(Base):
|
|
836
836
|
Judge result.
|
837
837
|
"""
|
838
838
|
|
839
|
-
#
|
839
|
+
# Parameter.
|
840
840
|
match value:
|
841
841
|
case str():
|
842
842
|
content = self.str
|
@@ -1085,7 +1085,7 @@ class Folder(Base):
|
|
1085
1085
|
New folder path.
|
1086
1086
|
"""
|
1087
1087
|
|
1088
|
-
#
|
1088
|
+
# Parameter.
|
1089
1089
|
move_path = join_path(self.dir, name)
|
1090
1090
|
|
1091
1091
|
# Move.
|
@@ -1287,7 +1287,7 @@ class TempFile(Base):
|
|
1287
1287
|
type\\_ : File data type.
|
1288
1288
|
"""
|
1289
1289
|
|
1290
|
-
#
|
1290
|
+
# Parameter.
|
1291
1291
|
match type_:
|
1292
1292
|
case 'bytes':
|
1293
1293
|
mode = 'w+b'
|
@@ -1541,7 +1541,7 @@ class TempFile(Base):
|
|
1541
1541
|
Judge result.
|
1542
1542
|
"""
|
1543
1543
|
|
1544
|
-
#
|
1544
|
+
# Parameter.
|
1545
1545
|
content = self.read()
|
1546
1546
|
|
1547
1547
|
# Judge.
|
@@ -1953,7 +1953,7 @@ class FileStore(Base):
|
|
1953
1953
|
if self.folder:
|
1954
1954
|
return
|
1955
1955
|
|
1956
|
-
#
|
1956
|
+
# Parameter.
|
1957
1957
|
chars = '0123456789abcdef'
|
1958
1958
|
subdir_names = [
|
1959
1959
|
char1 + char2
|
@@ -1995,7 +1995,7 @@ class FileStore(Base):
|
|
1995
1995
|
File path or not exist.
|
1996
1996
|
"""
|
1997
1997
|
|
1998
|
-
#
|
1998
|
+
# Parameter.
|
1999
1999
|
name = name or md5
|
2000
2000
|
|
2001
2001
|
# Not exist md5.
|
@@ -2037,7 +2037,7 @@ class FileStore(Base):
|
|
2037
2037
|
Store file path.
|
2038
2038
|
"""
|
2039
2039
|
|
2040
|
-
#
|
2040
|
+
# Parameter.
|
2041
2041
|
file_bytes = read_file_bytes(source)
|
2042
2042
|
file_md5 = get_md5(file_bytes)
|
2043
2043
|
name = name or file_md5
|
@@ -2123,7 +2123,7 @@ def doc_to_docx(path: str, save_path: str | None = None) -> str:
|
|
2123
2123
|
# Import.
|
2124
2124
|
from win32com.client import Dispatch, CDispatch
|
2125
2125
|
|
2126
|
-
#
|
2126
|
+
# Parameter.
|
2127
2127
|
if save_path is None:
|
2128
2128
|
pattern = '.[dD][oO][cC]'
|
2129
2129
|
save_path = sub(
|
@@ -2245,7 +2245,7 @@ def extract_file_content(path: str) -> str:
|
|
2245
2245
|
Content.
|
2246
2246
|
"""
|
2247
2247
|
|
2248
|
-
#
|
2248
|
+
# Parameter.
|
2249
2249
|
_, suffix = os_splitext(path)
|
2250
2250
|
suffix = suffix.lower()
|
2251
2251
|
if suffix == '.doc':
|
reykit/rrand.py
CHANGED
@@ -159,7 +159,7 @@ def randn(*thresholds: float, precision: int | None = None) -> int | float:
|
|
159
159
|
- When parameters `precision` is greater than 0, then return float.
|
160
160
|
"""
|
161
161
|
|
162
|
-
#
|
162
|
+
# Parameter.
|
163
163
|
thresholds_len = len(thresholds)
|
164
164
|
match thresholds_len:
|
165
165
|
case 0:
|
@@ -329,7 +329,7 @@ def randchar(
|
|
329
329
|
Random characters.
|
330
330
|
"""
|
331
331
|
|
332
|
-
#
|
332
|
+
# Parameter.
|
333
333
|
char_range = string_digits + string_ascii_letters
|
334
334
|
if punctuation:
|
335
335
|
char_range += string_punctuation
|
reykit/rre.py
CHANGED
@@ -115,7 +115,7 @@ def sub(
|
|
115
115
|
Replaced result.
|
116
116
|
"""
|
117
117
|
|
118
|
-
#
|
118
|
+
# Parameter.
|
119
119
|
replace = replace or ''
|
120
120
|
count = count or 0
|
121
121
|
|
@@ -144,7 +144,7 @@ def split(
|
|
144
144
|
Split result.
|
145
145
|
"""
|
146
146
|
|
147
|
-
#
|
147
|
+
# Parameter.
|
148
148
|
count = count or 0
|
149
149
|
|
150
150
|
# Replace.
|
reykit/rschedule.py
CHANGED
@@ -47,17 +47,8 @@ class Schedule(Base):
|
|
47
47
|
"""
|
48
48
|
Schedule type.
|
49
49
|
Can create database used `self.build_db` method.
|
50
|
-
|
51
|
-
Attributes
|
52
|
-
----------
|
53
|
-
db_names : Database table name mapping dictionary.
|
54
50
|
"""
|
55
51
|
|
56
|
-
db_names = {
|
57
|
-
'schedule': 'schedule',
|
58
|
-
'stats_schedule': 'stats_schedule'
|
59
|
-
}
|
60
|
-
|
61
52
|
|
62
53
|
def __init__(
|
63
54
|
self,
|
@@ -111,29 +102,29 @@ class Schedule(Base):
|
|
111
102
|
|
112
103
|
def build_db(self) -> None:
|
113
104
|
"""
|
114
|
-
Check and build database tables
|
105
|
+
Check and build database tables.
|
115
106
|
"""
|
116
107
|
|
117
108
|
# Check.
|
118
109
|
if self.db is None:
|
119
110
|
throw(ValueError, self.db)
|
120
111
|
|
121
|
-
#
|
112
|
+
# Parameter.
|
113
|
+
database = self.db.database
|
122
114
|
|
123
115
|
## Table.
|
124
|
-
DatabaseTableSchedule._set_name(self.db_names['schedule'])
|
125
116
|
tables = [DatabaseTableSchedule]
|
126
117
|
|
127
118
|
## View stats.
|
128
119
|
views_stats = [
|
129
120
|
{
|
130
|
-
'path':
|
121
|
+
'path': 'stats_schedule',
|
131
122
|
'items': [
|
132
123
|
{
|
133
124
|
'name': 'count',
|
134
125
|
'select': (
|
135
126
|
'SELECT COUNT(1)\n'
|
136
|
-
f'FROM `{
|
127
|
+
f'FROM `{database}`.`schedule`'
|
137
128
|
),
|
138
129
|
'comment': 'Schedule count.'
|
139
130
|
},
|
@@ -141,7 +132,7 @@ class Schedule(Base):
|
|
141
132
|
'name': 'past_day_count',
|
142
133
|
'select': (
|
143
134
|
'SELECT COUNT(1)\n'
|
144
|
-
f'FROM `{
|
135
|
+
f'FROM `{database}`.`schedule`\n'
|
145
136
|
'WHERE TIMESTAMPDIFF(DAY, `create_time`, NOW()) = 0'
|
146
137
|
),
|
147
138
|
'comment': 'Schedule count in the past day.'
|
@@ -150,7 +141,7 @@ class Schedule(Base):
|
|
150
141
|
'name': 'past_week_count',
|
151
142
|
'select': (
|
152
143
|
'SELECT COUNT(1)\n'
|
153
|
-
f'FROM `{
|
144
|
+
f'FROM `{database}`.`schedule`\n'
|
154
145
|
'WHERE TIMESTAMPDIFF(DAY, `create_time`, NOW()) <= 6'
|
155
146
|
),
|
156
147
|
'comment': 'Schedule count in the past week.'
|
@@ -159,7 +150,7 @@ class Schedule(Base):
|
|
159
150
|
'name': 'past_month_count',
|
160
151
|
'select': (
|
161
152
|
'SELECT COUNT(1)\n'
|
162
|
-
f'FROM `{
|
153
|
+
f'FROM `{database}`.`schedule`\n'
|
163
154
|
'WHERE TIMESTAMPDIFF(DAY, `create_time`, NOW()) <= 29'
|
164
155
|
),
|
165
156
|
'comment': 'Schedule count in the past month.'
|
@@ -168,7 +159,7 @@ class Schedule(Base):
|
|
168
159
|
'name': 'task_count',
|
169
160
|
'select': (
|
170
161
|
'SELECT COUNT(DISTINCT `task`)\n'
|
171
|
-
f'FROM `{
|
162
|
+
f'FROM `{database}`.`schedule`'
|
172
163
|
),
|
173
164
|
'comment': 'Task count.'
|
174
165
|
},
|
@@ -176,7 +167,7 @@ class Schedule(Base):
|
|
176
167
|
'name': 'last_time',
|
177
168
|
'select': (
|
178
169
|
'SELECT IFNULL(MAX(`update_time`), MAX(`create_time`))\n'
|
179
|
-
f'FROM `{
|
170
|
+
f'FROM `{database}`.`schedule`'
|
180
171
|
),
|
181
172
|
'comment': 'Schedule last record time.'
|
182
173
|
}
|
@@ -254,7 +245,7 @@ class Schedule(Base):
|
|
254
245
|
kwargs : Keyword arguments of function.
|
255
246
|
"""
|
256
247
|
|
257
|
-
#
|
248
|
+
# Parameter.
|
258
249
|
nonlocal task, note
|
259
250
|
|
260
251
|
# Status executing.
|
@@ -266,7 +257,7 @@ class Schedule(Base):
|
|
266
257
|
with self.db.connect() as conn:
|
267
258
|
conn = self.db.connect()
|
268
259
|
conn.execute.insert(
|
269
|
-
|
260
|
+
'schedule',
|
270
261
|
data
|
271
262
|
)
|
272
263
|
id_ = conn.insert_id()
|
@@ -286,7 +277,7 @@ class Schedule(Base):
|
|
286
277
|
'status': 2
|
287
278
|
}
|
288
279
|
self.db.execute.update(
|
289
|
-
|
280
|
+
'schedule',
|
290
281
|
data
|
291
282
|
)
|
292
283
|
raise
|
@@ -298,7 +289,7 @@ class Schedule(Base):
|
|
298
289
|
'status': 1
|
299
290
|
}
|
300
291
|
self.db.execute.update(
|
301
|
-
|
292
|
+
'schedule',
|
302
293
|
data
|
303
294
|
)
|
304
295
|
|
@@ -329,7 +320,7 @@ class Schedule(Base):
|
|
329
320
|
Task instance.
|
330
321
|
"""
|
331
322
|
|
332
|
-
#
|
323
|
+
# Parameter.
|
333
324
|
if plan is None:
|
334
325
|
plan = {}
|
335
326
|
trigger = plan.get('trigger')
|
@@ -376,7 +367,7 @@ class Schedule(Base):
|
|
376
367
|
note : Task note.
|
377
368
|
"""
|
378
369
|
|
379
|
-
#
|
370
|
+
# Parameter.
|
380
371
|
if type(task) == Job:
|
381
372
|
task = task.id
|
382
373
|
if plan is None:
|
@@ -423,7 +414,7 @@ class Schedule(Base):
|
|
423
414
|
task : Task instance or ID.
|
424
415
|
"""
|
425
416
|
|
426
|
-
#
|
417
|
+
# Parameter.
|
427
418
|
if type(task) == Job:
|
428
419
|
id_ = task.id
|
429
420
|
else:
|
@@ -445,7 +436,7 @@ class Schedule(Base):
|
|
445
436
|
task : Task instance or ID.
|
446
437
|
"""
|
447
438
|
|
448
|
-
#
|
439
|
+
# Parameter.
|
449
440
|
if type(task) == Job:
|
450
441
|
id_ = task.id
|
451
442
|
else:
|
@@ -467,7 +458,7 @@ class Schedule(Base):
|
|
467
458
|
task : Task instance or ID.
|
468
459
|
"""
|
469
460
|
|
470
|
-
#
|
461
|
+
# Parameter.
|
471
462
|
if type(task) == Job:
|
472
463
|
id_ = task.id
|
473
464
|
else:
|
reykit/rstdout.py
CHANGED
@@ -76,7 +76,7 @@ def get_terminal_size(
|
|
76
76
|
Column and line display character count.
|
77
77
|
"""
|
78
78
|
|
79
|
-
#
|
79
|
+
# Parameter.
|
80
80
|
match stream:
|
81
81
|
case 'stdin':
|
82
82
|
stream = 0
|
@@ -130,7 +130,7 @@ def echo(
|
|
130
130
|
# Import.
|
131
131
|
from .rtext import frame_data
|
132
132
|
|
133
|
-
#
|
133
|
+
# Parameter.
|
134
134
|
if title is None:
|
135
135
|
title: list[str] = get_varname('data')
|
136
136
|
if ConfigStdout.force_print_ascii:
|
@@ -191,7 +191,7 @@ def ask(
|
|
191
191
|
# Import.
|
192
192
|
from .rtext import frame_data
|
193
193
|
|
194
|
-
#
|
194
|
+
# Parameter.
|
195
195
|
if ConfigStdout.force_print_ascii:
|
196
196
|
border = 'ascii'
|
197
197
|
|
@@ -320,7 +320,7 @@ def add_print_position() -> None:
|
|
320
320
|
Preprocessed text.
|
321
321
|
"""
|
322
322
|
|
323
|
-
#
|
323
|
+
# Parameter.
|
324
324
|
stack_params = get_stack_param('full', 3)
|
325
325
|
stack_floor = stack_params[-1]
|
326
326
|
|
reykit/rsys.py
CHANGED
@@ -170,7 +170,7 @@ def del_modules(path: str) -> list[str]:
|
|
170
170
|
# Import.
|
171
171
|
from .rre import search
|
172
172
|
|
173
|
-
#
|
173
|
+
# Parameter.
|
174
174
|
deleted_dict = {}
|
175
175
|
module_keys = tuple(sys_modules)
|
176
176
|
|
@@ -256,7 +256,7 @@ def get_cmd_var(*vars: Any) -> list[Any]:
|
|
256
256
|
10 [20, 21] 3
|
257
257
|
"""
|
258
258
|
|
259
|
-
#
|
259
|
+
# Parameter.
|
260
260
|
vars_name: list[str] = get_varname('vars')
|
261
261
|
vars_info = tuple(zip(vars_name, vars))
|
262
262
|
|
@@ -339,7 +339,7 @@ def get_computer_info() -> ComputerInfo:
|
|
339
339
|
- `Key 'login_users'`: Computer login users information.
|
340
340
|
"""
|
341
341
|
|
342
|
-
#
|
342
|
+
# Parameter.
|
343
343
|
info = {}
|
344
344
|
|
345
345
|
# Get.
|
@@ -524,7 +524,7 @@ def search_process(
|
|
524
524
|
List of process instances that match any condition.
|
525
525
|
"""
|
526
526
|
|
527
|
-
#
|
527
|
+
# Parameter.
|
528
528
|
match id_:
|
529
529
|
case None:
|
530
530
|
ids = []
|
@@ -610,7 +610,7 @@ def kill_process(
|
|
610
610
|
List of process instances that match any condition.
|
611
611
|
"""
|
612
612
|
|
613
|
-
#
|
613
|
+
# Parameter.
|
614
614
|
self_pid = os_getpid()
|
615
615
|
|
616
616
|
# Search.
|
@@ -648,7 +648,7 @@ def pause_process(
|
|
648
648
|
List of process instances that match any condition.
|
649
649
|
"""
|
650
650
|
|
651
|
-
#
|
651
|
+
# Parameter.
|
652
652
|
self_pid = os_getpid()
|
653
653
|
|
654
654
|
# Search.
|
@@ -710,7 +710,7 @@ def get_idle_port(min: int = 49152) -> int:
|
|
710
710
|
Idle port number.
|
711
711
|
"""
|
712
712
|
|
713
|
-
#
|
713
|
+
# Parameter.
|
714
714
|
network_table = get_network_table()
|
715
715
|
ports = [
|
716
716
|
info['local_port']
|
reykit/rtable.py
CHANGED
@@ -49,7 +49,7 @@ class Table(Base):
|
|
49
49
|
data : Data.
|
50
50
|
"""
|
51
51
|
|
52
|
-
#
|
52
|
+
# Parameter.
|
53
53
|
self.data = data
|
54
54
|
|
55
55
|
|
@@ -123,7 +123,7 @@ class Table(Base):
|
|
123
123
|
Dictionary.
|
124
124
|
"""
|
125
125
|
|
126
|
-
#
|
126
|
+
# Parameter.
|
127
127
|
data = self.to_table()
|
128
128
|
|
129
129
|
# Check.
|
@@ -175,7 +175,7 @@ class Table(Base):
|
|
175
175
|
List.
|
176
176
|
"""
|
177
177
|
|
178
|
-
#
|
178
|
+
# Parameter.
|
179
179
|
data = self.to_table()
|
180
180
|
|
181
181
|
# Check.
|
@@ -210,7 +210,7 @@ class Table(Base):
|
|
210
210
|
Formatted text.
|
211
211
|
"""
|
212
212
|
|
213
|
-
#
|
213
|
+
# Parameter.
|
214
214
|
data = self.to_table()
|
215
215
|
|
216
216
|
# Convert.
|
@@ -232,7 +232,7 @@ class Table(Base):
|
|
232
232
|
JSON string.
|
233
233
|
"""
|
234
234
|
|
235
|
-
#
|
235
|
+
# Parameter.
|
236
236
|
data = self.to_table()
|
237
237
|
|
238
238
|
# Convert.
|
@@ -250,7 +250,7 @@ class Table(Base):
|
|
250
250
|
SQL string.
|
251
251
|
"""
|
252
252
|
|
253
|
-
#
|
253
|
+
# Parameter.
|
254
254
|
data = self.to_table()
|
255
255
|
data = [
|
256
256
|
{
|
@@ -298,7 +298,7 @@ class Table(Base):
|
|
298
298
|
if type(self.data) == DataFrame:
|
299
299
|
return self.data
|
300
300
|
|
301
|
-
#
|
301
|
+
# Parameter.
|
302
302
|
data = self.to_table()
|
303
303
|
|
304
304
|
# Convert.
|
@@ -316,7 +316,7 @@ class Table(Base):
|
|
316
316
|
HTML string.
|
317
317
|
"""
|
318
318
|
|
319
|
-
#
|
319
|
+
# Parameter.
|
320
320
|
data = self.to_df()
|
321
321
|
|
322
322
|
# Convert.
|
@@ -339,7 +339,7 @@ class Table(Base):
|
|
339
339
|
File absolute path.
|
340
340
|
"""
|
341
341
|
|
342
|
-
#
|
342
|
+
# Parameter.
|
343
343
|
data = self.to_df()
|
344
344
|
file = File(path)
|
345
345
|
if file:
|
@@ -391,7 +391,7 @@ class Table(Base):
|
|
391
391
|
>>> to_excel(data, 'file.xlsx', 'group', sheets_set)
|
392
392
|
"""
|
393
393
|
|
394
|
-
#
|
394
|
+
# Parameter.
|
395
395
|
data = self.to_df()
|
396
396
|
path = os_abspath(path)
|
397
397
|
|
reykit/rtask.py
CHANGED
@@ -10,7 +10,7 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
from typing import Any, Literal, overload
|
13
|
-
from collections.abc import
|
13
|
+
from collections.abc import Iterable, Sequence, Callable, Generator, Coroutine
|
14
14
|
from threading import RLock as TRLock, get_ident as threading_get_ident
|
15
15
|
from concurrent.futures import ThreadPoolExecutor, Future as CFuture, as_completed as concurrent_as_completed
|
16
16
|
from queue import Queue as QQueue
|
@@ -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, check_response_code
|
33
|
+
from .rbase import T, Base, throw, check_most_one, check_response_code, is_iterable
|
34
34
|
from .rtime import randn, TimeMark
|
35
35
|
from .rwrap import wrap_thread
|
36
36
|
|
@@ -111,7 +111,7 @@ class ThreadPool(Base):
|
|
111
111
|
ATask instance.
|
112
112
|
"""
|
113
113
|
|
114
|
-
#
|
114
|
+
# Parameter.
|
115
115
|
func_args = (
|
116
116
|
*self.args,
|
117
117
|
*args
|
@@ -310,16 +310,16 @@ class ThreadPool(Base):
|
|
310
310
|
def async_run(
|
311
311
|
coroutine: Coroutine[Any, Any, T] | ATask[Any, Any, T] | Callable[[], Coroutine[Any, Any, T]],
|
312
312
|
*,
|
313
|
-
before: CallableCoroutine | None = None,
|
314
|
-
after: CallableCoroutine | None = None,
|
313
|
+
before: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
314
|
+
after: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
315
315
|
return_exc: Literal[False] = False
|
316
316
|
) -> T: ...
|
317
317
|
|
318
318
|
@overload
|
319
319
|
def async_run(
|
320
320
|
*coroutines: Coroutine[Any, Any, T] | ATask[Any, Any, T] | Callable[[], Coroutine[Any, Any, T]],
|
321
|
-
before: CallableCoroutine | None = None,
|
322
|
-
after: CallableCoroutine | None = None,
|
321
|
+
before: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
322
|
+
after: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
323
323
|
return_exc: Literal[False] = False
|
324
324
|
) -> list[T]: ...
|
325
325
|
|
@@ -327,23 +327,23 @@ def async_run(
|
|
327
327
|
def async_run(
|
328
328
|
coroutine: Coroutine[Any, Any, T] | ATask[Any, Any, T] | Callable[[], Coroutine[Any, Any, T]],
|
329
329
|
*,
|
330
|
-
before: CallableCoroutine | None = None,
|
331
|
-
after: CallableCoroutine | None = None,
|
330
|
+
before: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
331
|
+
after: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
332
332
|
return_exc: Literal[True]
|
333
333
|
) -> T | BaseException: ...
|
334
334
|
|
335
335
|
@overload
|
336
336
|
def async_run(
|
337
337
|
*coroutines: Coroutine[Any, Any, T] | ATask[Any, Any, T] | Callable[[], Coroutine[Any, Any, T]],
|
338
|
-
before: CallableCoroutine | None = None,
|
339
|
-
after: CallableCoroutine | None = None,
|
338
|
+
before: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
339
|
+
after: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
340
340
|
return_exc: Literal[True]
|
341
341
|
) -> list[T | BaseException]: ...
|
342
342
|
|
343
343
|
def async_run(
|
344
344
|
*coroutines: Coroutine[Any, Any, T] | ATask[Any, Any, T] | Callable[[], Coroutine[Any, Any, T]],
|
345
|
-
before: CallableCoroutine | None = None,
|
346
|
-
after: CallableCoroutine | None = None,
|
345
|
+
before: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
346
|
+
after: CallableCoroutine | Sequence[CallableCoroutine] | None = None,
|
347
347
|
return_exc: bool = False
|
348
348
|
) -> T | BaseException | list[T | BaseException]:
|
349
349
|
"""
|
@@ -351,9 +351,11 @@ def async_run(
|
|
351
351
|
|
352
352
|
Parameters
|
353
353
|
----------
|
354
|
-
coroutines : `Coroutine` instances or `ATask` instances or `Coroutine` functions.
|
354
|
+
coroutines : `Coroutine` instances or `ATask` instances or `Coroutine` functions, asynchronous execute.
|
355
355
|
before : `Coroutine` instance or `ATask` instance or `Coroutine` function of execute before execute.
|
356
|
+
- `Sequence[CallableCoroutine]`: Synchronous execute in order.
|
356
357
|
after : `Coroutine` instance or `ATask` instance or `Coroutine` function of execute after execute.
|
358
|
+
- `Sequence[CallableCoroutine]`: Synchronous execute in order.
|
357
359
|
return_exc : Whether return exception instances, otherwise throw first exception.
|
358
360
|
|
359
361
|
Returns
|
@@ -361,18 +363,24 @@ def async_run(
|
|
361
363
|
run results.
|
362
364
|
"""
|
363
365
|
|
364
|
-
#
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
366
|
+
# Parameter.
|
367
|
+
if before is None:
|
368
|
+
before = ()
|
369
|
+
elif not is_iterable(before):
|
370
|
+
before = (before,)
|
371
|
+
if after is None:
|
372
|
+
after = ()
|
373
|
+
elif not is_iterable(after):
|
374
|
+
after = (after,)
|
375
|
+
handle_tasks_func = lambda tasks: [
|
376
|
+
task()
|
377
|
+
if asyncio_iscoroutinefunction(task)
|
378
|
+
else task
|
379
|
+
for task in tasks
|
370
380
|
]
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
after = after()
|
375
|
-
|
381
|
+
coroutines = handle_tasks_func(coroutines)
|
382
|
+
before = handle_tasks_func(before)
|
383
|
+
after = handle_tasks_func(after)
|
376
384
|
|
377
385
|
# Define.
|
378
386
|
async def async_run_coroutine() -> list[T | BaseException]:
|
@@ -385,15 +393,15 @@ def async_run(
|
|
385
393
|
"""
|
386
394
|
|
387
395
|
# Before.
|
388
|
-
|
389
|
-
await
|
396
|
+
for task in before:
|
397
|
+
await task
|
390
398
|
|
391
399
|
# Gather.
|
392
400
|
results: list[T | BaseException] = await asyncio_gather(*coroutines, return_exceptions=return_exc)
|
393
401
|
|
394
402
|
# After.
|
395
|
-
|
396
|
-
await
|
403
|
+
for task in after:
|
404
|
+
await task
|
397
405
|
|
398
406
|
return results
|
399
407
|
|
@@ -449,7 +457,7 @@ async def async_sleep(*thresholds: float, precision: int | None = None) -> float
|
|
449
457
|
- When parameters `precision` is `greater than 0`, then return float.
|
450
458
|
"""
|
451
459
|
|
452
|
-
#
|
460
|
+
# Parameter.
|
453
461
|
if len(thresholds) == 1:
|
454
462
|
second = thresholds[0]
|
455
463
|
else:
|
@@ -488,7 +496,7 @@ async def async_wait(
|
|
488
496
|
Total spend seconds or None.
|
489
497
|
"""
|
490
498
|
|
491
|
-
#
|
499
|
+
# Parameter.
|
492
500
|
tm = TimeMark()
|
493
501
|
tm()
|
494
502
|
|
@@ -683,7 +691,7 @@ async def async_request(
|
|
683
691
|
# Check.
|
684
692
|
check_most_one(data, json)
|
685
693
|
|
686
|
-
#
|
694
|
+
# Parameter.
|
687
695
|
if method is None:
|
688
696
|
if data is None and json is None:
|
689
697
|
method = 'get'
|
@@ -845,7 +853,7 @@ class AsyncPool(Base):
|
|
845
853
|
kwargs : Function keyword arguments, after default keyword arguments.
|
846
854
|
"""
|
847
855
|
|
848
|
-
#
|
856
|
+
# Parameter.
|
849
857
|
func_args = (
|
850
858
|
*self.args,
|
851
859
|
*args
|
reykit/rtext.py
CHANGED
@@ -50,7 +50,7 @@ def to_text(data: Any, width: int | None = None) -> str:
|
|
50
50
|
Formatted text.
|
51
51
|
"""
|
52
52
|
|
53
|
-
#
|
53
|
+
# Parameter.
|
54
54
|
if width is None:
|
55
55
|
width, _ = get_terminal_size()
|
56
56
|
|
@@ -135,7 +135,7 @@ def get_width(text: str) -> int:
|
|
135
135
|
Text display width.
|
136
136
|
"""
|
137
137
|
|
138
|
-
#
|
138
|
+
# Parameter.
|
139
139
|
widths = (
|
140
140
|
(126, 1),
|
141
141
|
(159, 0),
|
@@ -291,7 +291,7 @@ def frame_text(
|
|
291
291
|
Added frame text.
|
292
292
|
"""
|
293
293
|
|
294
|
-
#
|
294
|
+
# Parameter.
|
295
295
|
if width is None:
|
296
296
|
width, _ = get_terminal_size()
|
297
297
|
line_chars_dict = {
|
reykit/rtime.py
CHANGED
@@ -237,7 +237,7 @@ def text_to_time(
|
|
237
237
|
Object or null.
|
238
238
|
"""
|
239
239
|
|
240
|
-
#
|
240
|
+
# Parameter.
|
241
241
|
time_obj = None
|
242
242
|
str_len = len(string)
|
243
243
|
|
@@ -420,7 +420,7 @@ def sleep(
|
|
420
420
|
- When parameters `precision` is `greater than 0`, then return float.
|
421
421
|
"""
|
422
422
|
|
423
|
-
#
|
423
|
+
# Parameter.
|
424
424
|
if len(thresholds) == 1:
|
425
425
|
second = thresholds[0]
|
426
426
|
else:
|
@@ -459,7 +459,7 @@ def wait(
|
|
459
459
|
Total spend seconds or None.
|
460
460
|
"""
|
461
461
|
|
462
|
-
#
|
462
|
+
# Parameter.
|
463
463
|
tm = TimeMark()
|
464
464
|
tm()
|
465
465
|
|
@@ -579,7 +579,7 @@ class TimeMark(Base):
|
|
579
579
|
# Import.
|
580
580
|
from pandas import DataFrame
|
581
581
|
|
582
|
-
#
|
582
|
+
# Parameter.
|
583
583
|
record_len = len(self.records)
|
584
584
|
data = [
|
585
585
|
info.copy()
|
@@ -647,7 +647,7 @@ class TimeMark(Base):
|
|
647
647
|
if len(self.records) <= 1:
|
648
648
|
return 0.0
|
649
649
|
|
650
|
-
#
|
650
|
+
# Parameter.
|
651
651
|
first_timestamp = self.records[0]['timestamp']
|
652
652
|
max_index = max(self.records)
|
653
653
|
last_timestamp = self.records[max_index]['timestamp']
|
reykit/rwrap.py
CHANGED
@@ -254,7 +254,7 @@ def wrap_thread(
|
|
254
254
|
Thread instance.
|
255
255
|
"""
|
256
256
|
|
257
|
-
#
|
257
|
+
# Parameter.
|
258
258
|
thread_name = '%s_%d' % (func.__name__, now('timestamp'))
|
259
259
|
|
260
260
|
# Create thread.
|
@@ -411,7 +411,7 @@ def wrap_dos_command(
|
|
411
411
|
Function return.
|
412
412
|
"""
|
413
413
|
|
414
|
-
#
|
414
|
+
# Parameter.
|
415
415
|
arg_info = get_arg_info(func)
|
416
416
|
|
417
417
|
# Set DOS command.
|
@@ -606,7 +606,7 @@ def wrap_redirect_stdout(
|
|
606
606
|
Function return.
|
607
607
|
"""
|
608
608
|
|
609
|
-
#
|
609
|
+
# Parameter.
|
610
610
|
if isinstance(redirect, IOBase):
|
611
611
|
str_io = redirect
|
612
612
|
else:
|
reykit/rzip.py
CHANGED
@@ -40,7 +40,7 @@ def compress(
|
|
40
40
|
overwrite : Whether to overwrite.
|
41
41
|
"""
|
42
42
|
|
43
|
-
#
|
43
|
+
# Parameter.
|
44
44
|
build_dir = Folder(build_dir).path
|
45
45
|
if overwrite:
|
46
46
|
mode = 'w'
|
@@ -102,7 +102,7 @@ def decompress(
|
|
102
102
|
if not is_support:
|
103
103
|
raise AssertionError('file format that cannot be decompressed')
|
104
104
|
|
105
|
-
#
|
105
|
+
# Parameter.
|
106
106
|
build_dir = build_dir or os_getcwd()
|
107
107
|
|
108
108
|
# Decompress.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: reykit
|
3
|
-
Version: 1.1.
|
3
|
+
Version: 1.1.102
|
4
4
|
Summary: Kit method set.
|
5
5
|
Project-URL: homepage, https://github.com/reyxbo/reykit/
|
6
6
|
Author-email: Rey <reyxbo@163.com>
|
@@ -12,7 +12,7 @@ License: Copyright 2025 ReyXBo
|
|
12
12
|
|
13
13
|
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
14
14
|
License-File: LICENSE
|
15
|
-
Keywords: kit,rey,reyxbo,tool
|
15
|
+
Keywords: kit,rey,reyxbo,tool
|
16
16
|
Requires-Python: >=3.12
|
17
17
|
Requires-Dist: aiohttp
|
18
18
|
Requires-Dist: apscheduler
|
@@ -34,7 +34,7 @@ Description-Content-Type: text/markdown
|
|
34
34
|
|
35
35
|
# reykit
|
36
36
|
|
37
|
-
>
|
37
|
+
> Kit method set.
|
38
38
|
|
39
39
|
## Install
|
40
40
|
|
@@ -0,0 +1,28 @@
|
|
1
|
+
reykit/__init__.py,sha256=V86CHqPAAVkooVx3_QIOKpDIFVneQCTTSwfJ-uWgBno,788
|
2
|
+
reykit/rall.py,sha256=7Hip02YOkIDm3_xkoSDjvvYV2LhdBV2r4UKzWWnIfIo,628
|
3
|
+
reykit/rbase.py,sha256=UCBNQb19cX4Hvy4zQHhi2Dm5q9qFFnJY5ZyQmGCTBlU,22335
|
4
|
+
reykit/rdata.py,sha256=JLdq6vAaHsMIV59GifWqb9J5WSuWJr313WtcKI_XvJY,11332
|
5
|
+
reykit/remail.py,sha256=ybWJ2mXSgtIzr-p_OYyrijxjNxQXt5wEMtUUMbhQfLg,6702
|
6
|
+
reykit/rimage.py,sha256=onM8cdkIY2L84nocvSyBoY9-JieIAJn0eWBh30WRPeg,6133
|
7
|
+
reykit/rlog.py,sha256=cayYGf_VuvxUDIt8Lz3te2IfCNRNsE3TbCMqCcKWf3Q,25734
|
8
|
+
reykit/rmonkey.py,sha256=1JPAtaf-cNYcLlOv6CEAzBPWRheXS_LyrqiqxaL588M,7931
|
9
|
+
reykit/rnet.py,sha256=p-Z-jMt3LELGQgRPzzkqbdS4X6m7BafGrqn_JLLmsEY,16846
|
10
|
+
reykit/rnum.py,sha256=O8tFLAbDIGG25SvC3i_d9Jq8lRaR1JrzZe5WN0pqIiU,3612
|
11
|
+
reykit/ros.py,sha256=0QIBlhDUv3BCeiuVRBZQbhS6wHLF1RWrLHW1Uq9nUw8,47723
|
12
|
+
reykit/rrand.py,sha256=dcBVVzlRDmSsdWs9MH4SSNMZ_ORhnIBwLzLzX2yvKDk,8558
|
13
|
+
reykit/rre.py,sha256=gNRM94qXWWdyha5kaXeDj03WFs4BGFirq_Orhgi18wY,6010
|
14
|
+
reykit/rschedule.py,sha256=mbAEjnpA7hrVIP1JTRB0SWrHhvEDZHENR3HjfS2e5CQ,12112
|
15
|
+
reykit/rstdout.py,sha256=ZGddn5w87jy5vI5RvnMvXravtp8sB7qdrsz4wdOnbYc,8172
|
16
|
+
reykit/rsys.py,sha256=kmk20RozJxSFgqPuUOk7mo7YcKEF1u6irTULpVW4ZLA,24903
|
17
|
+
reykit/rtable.py,sha256=e4Eh06p4XFXLDcIfKPVvFd56nMklvPpaff_pe6NhEIM,10596
|
18
|
+
reykit/rtask.py,sha256=8LSxhfOiNTRMXK7mSWkFKfcFEnmCXuZhdRIf2MkO5PM,27745
|
19
|
+
reykit/rtext.py,sha256=M92jCkmak5nELlue7YCFNXS02g_d2Uc1YQSjsdw3KA8,13236
|
20
|
+
reykit/rtime.py,sha256=p6mcGqQZX7XRFOIv4VyOI7K8XWADoltXPT26b2ha2wY,17775
|
21
|
+
reykit/rwrap.py,sha256=noJ_tNqAH95ZgXcFtyiLzKr4MCLkGXFPZvREM-4J068,15074
|
22
|
+
reykit/rzip.py,sha256=kPSjz1hCgPFqmINn3qw_8yVCb6wAPbSq4-VIcan98z8,3442
|
23
|
+
reykit/rdll/__init__.py,sha256=DUYGZzREGzhis36rKYGzI5JYCZJlUoKb80mkoXFfsV4,694
|
24
|
+
reykit/rdll/rdll_core.py,sha256=o6-rKcTQgxZQe0kD3GnwyNb3KL9IogzgCQNOmYLMm7A,5086
|
25
|
+
reykit-1.1.102.dist-info/METADATA,sha256=ZrIzzpTfR-CUdYPWAjGNcMBIV63dLyTYnpgIavy4aRk,1861
|
26
|
+
reykit-1.1.102.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
27
|
+
reykit-1.1.102.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
28
|
+
reykit-1.1.102.dist-info/RECORD,,
|
reykit-1.1.100.dist-info/RECORD
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
reykit/__init__.py,sha256=V86CHqPAAVkooVx3_QIOKpDIFVneQCTTSwfJ-uWgBno,788
|
2
|
-
reykit/rall.py,sha256=7Hip02YOkIDm3_xkoSDjvvYV2LhdBV2r4UKzWWnIfIo,628
|
3
|
-
reykit/rbase.py,sha256=SLnGRzNdHyFQhTW-SI9ncIMS0V7nTjlW9GJZZBT3LF0,22104
|
4
|
-
reykit/rdata.py,sha256=oBp3G7OZwb4rLDU_f4qi80u93bCvZ41ZdSM_1FBsMIE,11356
|
5
|
-
reykit/remail.py,sha256=5ImoIRX0pHG_c1kEoMPJdeEaqakgMVIXeWBl9Db5ul4,6714
|
6
|
-
reykit/rimage.py,sha256=3fMGbDwTdbmnlsz1Q33zCw-ht-xOUpj8NXYl6CzvYq0,6145
|
7
|
-
reykit/rlog.py,sha256=2-dStWPCHMmBpm-8J4HgTQ9B-pc9vDQ2bAF9R8XeanE,25762
|
8
|
-
reykit/rmonkey.py,sha256=uTL7gXfeVfKGh1exY1rfsV50xnnMty_E7RofFAp2vzk,7935
|
9
|
-
reykit/rnet.py,sha256=jkFnXKyjgILK2A9CtBZwjOeuABdGwejFtwPV_YK1jNc,16862
|
10
|
-
reykit/rnum.py,sha256=jEhPQatAAaIV6kPx2tVtfjuK0F09UCWU6BjfPRamqBE,3620
|
11
|
-
reykit/ros.py,sha256=n9aqChdRQQFozOn_jXQns_UrKoEstCNRzFTgOBel4wM,47787
|
12
|
-
reykit/rrand.py,sha256=kh9yWOW8zaj8bUU0H0RL_GiOs2K8JDviVzKSoPLEuls,8566
|
13
|
-
reykit/rre.py,sha256=uqqved1_SWrJOQK-o5WYRoJf3JH0YpEktnxwA0x7TPU,6018
|
14
|
-
reykit/rschedule.py,sha256=dx2lDfRhxPm8hGgH3mVGPoUSKg35OYQ3UQiRFnPo4yI,12607
|
15
|
-
reykit/rstdout.py,sha256=bLN_kXsWpgTrCrBJNgaEE27DUk-ojsBV-9YJtWH41b4,8188
|
16
|
-
reykit/rsys.py,sha256=PEXUU_jyglEgIyN-URtnpUcrqKF5PFeAVAljEmaSqOs,24931
|
17
|
-
reykit/rtable.py,sha256=97bbGtcwiAk89WwfVU_wXhQuJOh6bnjtMImcBiWYBu0,10636
|
18
|
-
reykit/rtask.py,sha256=C-VySd7Gk_qtP7FigLckYUhDKsuWPVeGtoRlkdnpyDw,27099
|
19
|
-
reykit/rtext.py,sha256=3wbnsvNX-ibPt7QCpv-CYDUgaFq48eZjCix8jcFPj_M,13248
|
20
|
-
reykit/rtime.py,sha256=8GL2uycThxB-dODuD3D35v2RbSFO-LgTdl6U-ZhuSZc,17795
|
21
|
-
reykit/rwrap.py,sha256=8MqbOjq56DbDKuTix75wYGXcAykzLiAPKrgl13Gk4xQ,15086
|
22
|
-
reykit/rzip.py,sha256=u-yyEFXY5iOysgzzqEbaaDTFfoHBj0L2sv5m4AQLt1c,3450
|
23
|
-
reykit/rdll/__init__.py,sha256=TEVZjiW9Y1_VxbZgIygcwmRp5xFHM2wLgwZccZ6gjng,698
|
24
|
-
reykit/rdll/rdll_core.py,sha256=o6-rKcTQgxZQe0kD3GnwyNb3KL9IogzgCQNOmYLMm7A,5086
|
25
|
-
reykit-1.1.100.dist-info/METADATA,sha256=rss_UcJwBV58cc6VPS71BxC4OMZ6cIZuJdLiDy2ZMCE,1873
|
26
|
-
reykit-1.1.100.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
27
|
-
reykit-1.1.100.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
|
28
|
-
reykit-1.1.100.dist-info/RECORD,,
|
File without changes
|
File without changes
|