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 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
- 'CoroutineFunctionT',
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') # Any dictionary key.
71
- VT = TypeVar('VT') # Any dictionary value.
72
- CallableT = TypeVar('CallableT', bound=Callable) # Any 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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
475
+ # Parameter.
476
476
  func_args = (
477
477
  *self.args,
478
478
  *args
reykit/rdll/__init__.py CHANGED
@@ -35,7 +35,7 @@ def inject_dll(
35
35
  from ctypes import create_string_buffer
36
36
  from .rdll_core import InjectDLL
37
37
 
38
- # Set parameter.
38
+ # Parameter.
39
39
  path_bytes = path.encode()
40
40
  buffer = create_string_buffer(path_bytes)
41
41
 
reykit/remail.py CHANGED
@@ -44,7 +44,7 @@ class Email(Base):
44
44
  password : Email password.
45
45
  """
46
46
 
47
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
1034
+ # Parameter.
1035
1035
  obj_id = hash(obj)
1036
1036
  group_set = self.data.setdefault(group, set())
1037
1037
 
reykit/rmonkey.py CHANGED
@@ -83,7 +83,7 @@ def monkey_sqlalchemy_result_more_fetch():
83
83
  - `<0`: Limit last few row.
84
84
  """
85
85
 
86
- # Set parameter.
86
+ # Parameter.
87
87
  limit = limit or 0
88
88
 
89
89
  # Convert.
reykit/rnet.py CHANGED
@@ -300,7 +300,7 @@ def request(
300
300
  Response object of requests package.
301
301
  """
302
302
 
303
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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, by `self.db_names`.
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
- # Set parameter.
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': self.db_names['stats_schedule'],
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 `{self.db.database}`.`{self.db_names['schedule']}`'
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 `{self.db.database}`.`{self.db_names['schedule']}`\n'
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 `{self.db.database}`.`{self.db_names['schedule']}`\n'
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 `{self.db.database}`.`{self.db_names['schedule']}`\n'
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 `{self.db.database}`.`{self.db_names['schedule']}`'
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 `{self.db.database}`.`{self.db_names['schedule']}`'
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
- # Set parameter.
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
- self.db_names['schedule'],
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
- self.db_names['schedule'],
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
- self.db_names['schedule'],
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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 Callable, Iterable, Generator, Coroutine
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
- # Set parameter.
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
- # Set parameter.
365
- coroutines = [
366
- coroutine()
367
- if asyncio_iscoroutinefunction(coroutine)
368
- else coroutine
369
- for coroutine in coroutines
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
- if asyncio_iscoroutinefunction(before):
372
- before = before()
373
- if asyncio_iscoroutinefunction(after):
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
- if before is not None:
389
- await before
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
- if after is not None:
396
- await after
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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
- # Set parameter.
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.100
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,tools
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
- > Rey's kit method set.
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,,
@@ -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,,