reykit 1.1.89__py3-none-any.whl → 1.1.90__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
@@ -320,7 +320,7 @@ def warn(
320
320
  stacklevel : Warning code location, number of recursions up the code level.
321
321
  """
322
322
 
323
- # Handle parameter.
323
+ # Set parameter.
324
324
  if infos == ():
325
325
  infos = 'Warning!'
326
326
  elif len(infos) == 1:
@@ -347,7 +347,7 @@ def catch_exc() -> tuple[str, BaseException, StackSummary]:
347
347
  - `StackSummary`: Exception traceback stack instance.
348
348
  """
349
349
 
350
- # Handle parameter.
350
+ # Set parameter.
351
351
  exc_text = format_exc()
352
352
  exc_text = exc_text.strip()
353
353
  _, exc, traceback = sys_exc_info()
@@ -854,7 +854,7 @@ def get_varname(argname: str, level: int = 1) -> str | list[str] | None:
854
854
  - `Throw VarnameException`: Return `None`.
855
855
  """
856
856
 
857
- # Handle parameter.
857
+ # Set parameter.
858
858
  level += 1
859
859
 
860
860
  # Get.
reykit/rdata.py CHANGED
@@ -53,7 +53,7 @@ def to_json(
53
53
  JSON format string.
54
54
  """
55
55
 
56
- # Handle parameter.
56
+ # Set 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
- # Handle parameter.
125
+ # Set 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
- # Handle parameter.
178
+ # Set 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
- # Handle parameter.
220
+ # Set parameter.
221
221
  data = tuple(data)
222
222
 
223
223
  # Delete duplicate.
@@ -350,7 +350,7 @@ def default_dict(default: T | Null = Null, data: dict[KT, VT] | None = None) ->
350
350
  - `None`: Empty `dict`.
351
351
  """
352
352
 
353
- # Handle parameter.
353
+ # Set parameter.
354
354
 
355
355
  ## Null.
356
356
  if default == Null:
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
- # Handle parameter.
38
+ # Set 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
- # Handle parameter.
47
+ # Set 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
- # Handle parameter.
124
+ # Set 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
- # Handle parameter.
211
+ # Set 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
- # Handle parameter.
90
+ # Set 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
- # Handle parameter.
140
+ # Set 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
- # Handle parameter.
237
+ # Set 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
- # Handle parameter.
117
+ # Set 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
- # Handle parameter.
422
+ # Set 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
- # Handle parameter.
501
+ # Set 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
- # Handle parameter.
769
+ # Set 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
- # Handle parameter.
971
+ # Set 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
- # Handle parameter.
995
+ # Set 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
- # Handle parameter.
1034
+ # Set parameter.
1035
1035
  obj_id = hash(obj)
1036
1036
  group_set = self.data.setdefault(group, set())
1037
1037
 
reykit/rmonkey.py CHANGED
@@ -90,7 +90,7 @@ def monkey_sqlalchemy_result_more_fetch():
90
90
  - `<0`: Limit last few row.
91
91
  """
92
92
 
93
- # Handle parameter.
93
+ # Set parameter.
94
94
  limit = limit or 0
95
95
 
96
96
  # Convert.
reykit/rnet.py CHANGED
@@ -300,7 +300,7 @@ def request(
300
300
  Response object of requests package.
301
301
  """
302
302
 
303
- # Handle parameter.
303
+ # Set 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
- # Handle parameter.
392
+ # Set 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
- # Handle parameter.
473
+ # Set 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
- # Handle parameter.
506
+ # Set parameter.
507
507
  port = int(port)
508
508
  rece_size = 1024 * 1024 * 1024
509
509
 
reykit/rnum.py CHANGED
@@ -154,7 +154,7 @@ def number_ch(number: int) -> str:
154
154
  16: '兆'
155
155
  }
156
156
 
157
- # Handle parameter.
157
+ # Set 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
- # Handle parameter.
94
+ # Set 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
- # Handle parameter.
140
+ # Set 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
- # Handle parameter.
191
+ # Set 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
- # Handle parameter.
374
+ # Set 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
- # Handle parameter.
433
+ # Set 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
- # Handle parameter.
464
+ # Set 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
- # Handle parameter.
531
+ # Set 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
- # Handle parameter.
839
+ # Set 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
- # Handle parameter.
1088
+ # Set 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
- # Handle parameter.
1290
+ # Set 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
- # Handle parameter.
1544
+ # Set 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
- # Handle parameter.
1956
+ # Set 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
- # Handle parameter.
1998
+ # Set 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
- # Handle parameter.
2040
+ # Set 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
- # Handle parameter.
2126
+ # Set 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
- # Handle parameter.
2248
+ # Set 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
- # Handle parameter.
162
+ # Set 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
- # Handle parameter.
332
+ # Set 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
- # Handle parameter.
118
+ # Set 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
- # Handle parameter.
147
+ # Set parameter.
148
148
  count = count or 0
149
149
 
150
150
  # Replace.
reykit/rschedule.py CHANGED
@@ -16,7 +16,8 @@ from apscheduler.executors.pool import ThreadPoolExecutor
16
16
  from apscheduler.schedulers.background import BackgroundScheduler
17
17
  from apscheduler.schedulers.blocking import BlockingScheduler
18
18
  from apscheduler.job import Job
19
- from reydb.rdb import Database
19
+ from reydb import rorm
20
+ from reydb.rdb import Database, DatabaseAsync
20
21
 
21
22
  from .rbase import Base, throw
22
23
 
@@ -30,8 +31,17 @@ class Schedule(Base):
30
31
  """
31
32
  Schedule type.
32
33
  Can create database used `self.build_db` method.
34
+
35
+ Attributes
36
+ ----------
37
+ db_names : Database table name mapping dictionary.
33
38
  """
34
39
 
40
+ db_names = {
41
+ 'schedule': 'schedule',
42
+ 'stats_schedule': 'stats_schedule'
43
+ }
44
+
35
45
 
36
46
  def __init__(
37
47
  self,
@@ -39,7 +49,7 @@ class Schedule(Base):
39
49
  max_instances: int = 1,
40
50
  coalesce: bool = True,
41
51
  block: bool = False,
42
- database: Database | None = None
52
+ db: Database | DatabaseAsync | None = None
43
53
  ) -> None:
44
54
  """
45
55
  Build instance attributes.
@@ -50,7 +60,7 @@ class Schedule(Base):
50
60
  max_instances : Maximum number of synchronized executions of tasks with the same ID.
51
61
  coalesce : Whether to coalesce tasks with the same ID.
52
62
  block : Whether to block.
53
- database : `Database` instance.
63
+ db : Database instance.
54
64
  - `None`: Not use database.
55
65
  - `Database`: Automatic record to database.
56
66
  """
@@ -80,14 +90,7 @@ class Schedule(Base):
80
90
  self.scheduler.start()
81
91
 
82
92
  ## Database.
83
- self.database = database
84
-
85
- ### Database path name.
86
- self.db_names = {
87
- 'base': 'base',
88
- 'base.schedule': 'schedule',
89
- 'base.stats_schedule': 'stats_schedule'
90
- }
93
+ self.db = db
91
94
 
92
95
 
93
96
  def pause(self) -> None:
@@ -150,7 +153,7 @@ class Schedule(Base):
150
153
  kwargs : Keyword arguments of function.
151
154
  """
152
155
 
153
- # Handle parameter.
156
+ # Set parameter.
154
157
  nonlocal task, note
155
158
 
156
159
  # Status executing.
@@ -159,10 +162,10 @@ class Schedule(Base):
159
162
  'task': task.__name__,
160
163
  'note': note
161
164
  }
162
- with self.database.connect() as conn:
163
- conn = self.database.connect()
165
+ with self.db.connect() as conn:
166
+ conn = self.db.connect()
164
167
  conn.execute.insert(
165
- self.db_names['base.schedule'],
168
+ self.db_names['schedule'],
166
169
  data
167
170
  )
168
171
  id_ = conn.insert_id()
@@ -170,7 +173,7 @@ class Schedule(Base):
170
173
  # Try execute.
171
174
 
172
175
  ## Record error.
173
- task = self.database.error.wrap(task, note=note)
176
+ task = self.db.error.wrap(task, note=note)
174
177
 
175
178
  try:
176
179
  task(*args, **kwargs)
@@ -181,8 +184,8 @@ class Schedule(Base):
181
184
  'id': id_,
182
185
  'status': 2
183
186
  }
184
- self.database.execute.update(
185
- self.db_names['base.schedule'],
187
+ self.db.execute.update(
188
+ self.db_names['schedule'],
186
189
  data
187
190
  )
188
191
  raise
@@ -193,8 +196,8 @@ class Schedule(Base):
193
196
  'id': id_,
194
197
  'status': 1
195
198
  }
196
- self.database.execute.update(
197
- self.db_names['base.schedule'],
199
+ self.db.execute.update(
200
+ self.db_names['schedule'],
198
201
  data
199
202
  )
200
203
 
@@ -225,7 +228,7 @@ class Schedule(Base):
225
228
  Task instance.
226
229
  """
227
230
 
228
- # Handle parameter.
231
+ # Set parameter.
229
232
  if plan is None:
230
233
  plan = {}
231
234
  trigger = plan.get('trigger')
@@ -238,7 +241,7 @@ class Schedule(Base):
238
241
  # Add.
239
242
 
240
243
  ## Database.
241
- if self.database is not None:
244
+ if self.db is not None:
242
245
  task = self.wrap_record_db(task, note)
243
246
 
244
247
  job = self.scheduler.add_job(
@@ -272,7 +275,7 @@ class Schedule(Base):
272
275
  note : Task note.
273
276
  """
274
277
 
275
- # Handle parameter.
278
+ # Set parameter.
276
279
  if type(task) == Job:
277
280
  task = task.id
278
281
  if plan is None:
@@ -319,7 +322,7 @@ class Schedule(Base):
319
322
  task : Task instance or ID.
320
323
  """
321
324
 
322
- # Handle parameter.
325
+ # Set parameter.
323
326
  if type(task) == Job:
324
327
  id_ = task.id
325
328
  else:
@@ -341,7 +344,7 @@ class Schedule(Base):
341
344
  task : Task instance or ID.
342
345
  """
343
346
 
344
- # Handle parameter.
347
+ # Set parameter.
345
348
  if type(task) == Job:
346
349
  id_ = task.id
347
350
  else:
@@ -363,7 +366,7 @@ class Schedule(Base):
363
366
  task : Task instance or ID.
364
367
  """
365
368
 
366
- # Handle parameter.
369
+ # Set parameter.
367
370
  if type(task) == Job:
368
371
  id_ = task.id
369
372
  else:
@@ -379,99 +382,33 @@ class Schedule(Base):
379
382
  """
380
383
 
381
384
  # Check.
382
- if self.database is None:
383
- throw(ValueError, self.database)
385
+ if self.db is None:
386
+ throw(ValueError, self.db)
384
387
 
385
388
  # Set parameter.
386
389
 
387
- ## Database.
388
- databases = [
389
- {
390
- 'name': self.db_names['base']
391
- }
392
- ]
393
-
394
390
  ## Table.
395
- tables = [
396
-
397
- ### 'schedule'.
398
- {
399
- 'path': (self.db_names['base'], self.db_names['base.schedule']),
400
- 'fields': [
401
- {
402
- 'name': 'create_time',
403
- 'type': 'datetime',
404
- 'constraint': 'NOT NULL DEFAULT CURRENT_TIMESTAMP',
405
- 'comment': 'Record create time.'
406
- },
407
- {
408
- 'name': 'update_time',
409
- 'type': 'datetime',
410
- 'constraint': 'DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP',
411
- 'comment': 'Record update time.'
412
- },
413
- {
414
- 'name': 'id',
415
- 'type': 'int unsigned',
416
- 'constraint': 'NOT NULL AUTO_INCREMENT',
417
- 'comment': 'ID.'
418
- },
419
- {
420
- 'name': 'status',
421
- 'type': 'tinyint',
422
- 'constraint': 'NOT NULL',
423
- 'comment': 'Schedule status, 0 is executing, 1 is completed, 2 is occurred error.'
424
- },
425
- {
426
- 'name': 'task',
427
- 'type': 'varchar(100)',
428
- 'constraint': 'NOT NULL',
429
- 'comment': 'Schedule task function name.'
430
- },
431
- {
432
- 'name': 'note',
433
- 'type': 'varchar(500)',
434
- 'comment': 'Schedule note.'
435
- }
436
- ],
437
- 'primary': 'id',
438
- 'indexes': [
439
- {
440
- 'name': 'n_create_time',
441
- 'fields': 'create_time',
442
- 'type': 'noraml',
443
- 'comment': 'Record create time normal index.'
444
- },
445
- {
446
- 'name': 'n_update_time',
447
- 'fields': 'update_time',
448
- 'type': 'noraml',
449
- 'comment': 'Record update time normal index.'
450
- },
451
- {
452
- 'name': 'n_task',
453
- 'fields': 'task',
454
- 'type': 'noraml',
455
- 'comment': 'Schedule task function name normal index.'
456
- }
457
- ],
458
- 'comment': 'Schedule execute record table.'
459
- }
460
-
461
- ]
391
+ class Schedule(rorm.Model, table=True):
392
+ __name__ = self.db_names['schedule']
393
+ __comment__ = 'Schedule execute record table.'
394
+ create_time: rorm.Datetime = rorm.Field(field_default='CURRENT_TIMESTAMP', not_null=True, index_n=True, comment='Record create time.')
395
+ update_time: rorm.Datetime = rorm.Field(field_default='CURRENT_TIMESTAMP', index_n=True, comment='Record update time.')
396
+ id: int = rorm.Field(field_type=rorm.types_mysql.INTEGER(unsigned=True), key_auto=True, comment='ID.')
397
+ status: str = rorm.Field(field_type=rorm.types_mysql.TINYINT(unsigned=True), not_null=True, comment='Schedule status, 0 is executing, 1 is completed, 2 is occurred error.')
398
+ task: str = rorm.Field(field_type=rorm.types.VARCHAR(100), not_null=True, comment='Schedule task function name.')
399
+ note: str = rorm.Field(field_type=rorm.types.VARCHAR(500), comment='Schedule note.')
400
+ tables = [Schedule]
462
401
 
463
402
  ## View stats.
464
403
  views_stats = [
465
-
466
- ### 'stats_schedule'.
467
404
  {
468
- 'path': (self.db_names['base'], self.db_names['base.stats_schedule']),
405
+ 'path': self.db_names['stats_schedule'],
469
406
  'items': [
470
407
  {
471
408
  'name': 'count',
472
409
  'select': (
473
410
  'SELECT COUNT(1)\n'
474
- f'FROM `{self.db_names['base']}`.`{self.db_names['base.schedule']}`'
411
+ f'FROM `{self.db.database}`.`{self.db_names['schedule']}`'
475
412
  ),
476
413
  'comment': 'Schedule count.'
477
414
  },
@@ -479,7 +416,7 @@ class Schedule(Base):
479
416
  'name': 'past_day_count',
480
417
  'select': (
481
418
  'SELECT COUNT(1)\n'
482
- f'FROM `{self.db_names['base']}`.`{self.db_names['base.schedule']}`\n'
419
+ f'FROM `{self.db.database}`.`{self.db_names['schedule']}`\n'
483
420
  'WHERE TIMESTAMPDIFF(DAY, `create_time`, NOW()) = 0'
484
421
  ),
485
422
  'comment': 'Schedule count in the past day.'
@@ -488,7 +425,7 @@ class Schedule(Base):
488
425
  'name': 'past_week_count',
489
426
  'select': (
490
427
  'SELECT COUNT(1)\n'
491
- f'FROM `{self.db_names['base']}`.`{self.db_names['base.schedule']}`\n'
428
+ f'FROM `{self.db.database}`.`{self.db_names['schedule']}`\n'
492
429
  'WHERE TIMESTAMPDIFF(DAY, `create_time`, NOW()) <= 6'
493
430
  ),
494
431
  'comment': 'Schedule count in the past week.'
@@ -497,7 +434,7 @@ class Schedule(Base):
497
434
  'name': 'past_month_count',
498
435
  'select': (
499
436
  'SELECT COUNT(1)\n'
500
- f'FROM `{self.db_names['base']}`.`{self.db_names['base.schedule']}`\n'
437
+ f'FROM `{self.db.database}`.`{self.db_names['schedule']}`\n'
501
438
  'WHERE TIMESTAMPDIFF(DAY, `create_time`, NOW()) <= 29'
502
439
  ),
503
440
  'comment': 'Schedule count in the past month.'
@@ -506,7 +443,7 @@ class Schedule(Base):
506
443
  'name': 'task_count',
507
444
  'select': (
508
445
  'SELECT COUNT(DISTINCT `task`)\n'
509
- f'FROM `{self.db_names['base']}`.`{self.db_names['base.schedule']}`'
446
+ f'FROM `{self.db.database}`.`{self.db_names['schedule']}`'
510
447
  ),
511
448
  'comment': 'Task count.'
512
449
  },
@@ -514,21 +451,19 @@ class Schedule(Base):
514
451
  'name': 'last_time',
515
452
  'select': (
516
453
  'SELECT IFNULL(MAX(`update_time`), MAX(`create_time`))\n'
517
- f'FROM `{self.db_names['base']}`.`{self.db_names['base.schedule']}`'
454
+ f'FROM `{self.db.database}`.`{self.db_names['schedule']}`'
518
455
  ),
519
456
  'comment': 'Schedule last record time.'
520
457
  }
521
458
  ]
522
-
523
459
  }
524
-
525
460
  ]
526
461
 
527
462
  # Build.
528
- self.database.build.build(databases, tables, views_stats=views_stats)
463
+ self.db.build.build(tables=tables, views_stats=views_stats, skip=True)
529
464
 
530
465
  ## Error.
531
- self.database.error.build_db()
466
+ self.db.error.build_db()
532
467
 
533
468
 
534
469
  __iter__ = tasks
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
- # Handle parameter.
79
+ # Set 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
- # Handle parameter.
133
+ # Set 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
- # Handle parameter.
194
+ # Set 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
- # Handle parameter.
323
+ # Set parameter.
324
324
  stack_params = get_stack_param('full', 3)
325
325
  stack_floor = stack_params[-1]
326
326
 
reykit/rsys.py CHANGED
@@ -256,7 +256,7 @@ def get_cmd_var(*vars: Any) -> list[Any]:
256
256
  10 [20, 21] 3
257
257
  """
258
258
 
259
- # Handle parameter.
259
+ # Set parameter.
260
260
  vars_name: list[str] = get_varname('vars')
261
261
  vars_info = tuple(zip(vars_name, vars))
262
262
 
@@ -524,7 +524,7 @@ def search_process(
524
524
  List of process instances that match any condition.
525
525
  """
526
526
 
527
- # Handle parameter.
527
+ # Set 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
- # Handle parameter.
613
+ # Set 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
- # Handle parameter.
651
+ # Set 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
- # Handle parameter.
713
+ # Set parameter.
714
714
  network_table = get_network_table()
715
715
  ports = [
716
716
  info['local_port']
reykit/rtable.py CHANGED
@@ -189,7 +189,7 @@ class Table(Base):
189
189
  Dictionary.
190
190
  """
191
191
 
192
- # Handle parameter.
192
+ # Set parameter.
193
193
  data = self.to_table()
194
194
 
195
195
  # Check.
@@ -241,7 +241,7 @@ class Table(Base):
241
241
  List.
242
242
  """
243
243
 
244
- # Handle parameter.
244
+ # Set parameter.
245
245
  data = self.to_table()
246
246
 
247
247
  # Check.
@@ -276,7 +276,7 @@ class Table(Base):
276
276
  Formatted text.
277
277
  """
278
278
 
279
- # Handle parameter.
279
+ # Set parameter.
280
280
  data = self.to_table()
281
281
 
282
282
  # Convert.
@@ -298,7 +298,7 @@ class Table(Base):
298
298
  JSON string.
299
299
  """
300
300
 
301
- # Handle parameter.
301
+ # Set parameter.
302
302
  data = self.to_table()
303
303
 
304
304
  # Convert.
@@ -316,7 +316,7 @@ class Table(Base):
316
316
  SQL string.
317
317
  """
318
318
 
319
- # Handle parameter.
319
+ # Set parameter.
320
320
  data = self.to_table()
321
321
  data = [
322
322
  {
@@ -364,7 +364,7 @@ class Table(Base):
364
364
  if type(self.data) == DataFrame:
365
365
  return self.data
366
366
 
367
- # Handle parameter.
367
+ # Set parameter.
368
368
  data = self.to_table()
369
369
 
370
370
  # Convert.
@@ -382,7 +382,7 @@ class Table(Base):
382
382
  HTML string.
383
383
  """
384
384
 
385
- # Handle parameter.
385
+ # Set parameter.
386
386
  data = self.to_df()
387
387
 
388
388
  # Convert.
@@ -405,7 +405,7 @@ class Table(Base):
405
405
  File absolute path.
406
406
  """
407
407
 
408
- # Handle parameter.
408
+ # Set parameter.
409
409
  data = self.to_df()
410
410
  file = File(path)
411
411
  if file:
@@ -457,7 +457,7 @@ class Table(Base):
457
457
  >>> to_excel(data, 'file.xlsx', 'group', sheets_set)
458
458
  """
459
459
 
460
- # Handle parameter.
460
+ # Set parameter.
461
461
  data = self.to_df()
462
462
  path = os_abspath(path)
463
463
 
reykit/rtask.py CHANGED
@@ -361,7 +361,7 @@ def async_run(
361
361
  run results.
362
362
  """
363
363
 
364
- # Handle parameter.
364
+ # Set parameter.
365
365
  coroutines = [
366
366
  coroutine()
367
367
  if asyncio_iscoroutinefunction(coroutine)
@@ -449,7 +449,7 @@ async def async_sleep(*thresholds: float, precision: int | None = None) -> float
449
449
  - When parameters `precision` is `greater than 0`, then return float.
450
450
  """
451
451
 
452
- # Handle parameter.
452
+ # Set parameter.
453
453
  if len(thresholds) == 1:
454
454
  second = thresholds[0]
455
455
  else:
@@ -683,7 +683,7 @@ async def async_request(
683
683
  # Check.
684
684
  check_most_one(data, json)
685
685
 
686
- # Handle parameter.
686
+ # Set parameter.
687
687
  if method is None:
688
688
  if data is None and json is None:
689
689
  method = 'get'
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
- # Handle parameter.
53
+ # Set parameter.
54
54
  if width is None:
55
55
  width, _ = get_terminal_size()
56
56
 
@@ -291,7 +291,7 @@ def frame_text(
291
291
  Added frame text.
292
292
  """
293
293
 
294
- # Handle parameter.
294
+ # Set 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
- # Handle parameter.
240
+ # Set 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
- # Handle parameter.
423
+ # Set parameter.
424
424
  if len(thresholds) == 1:
425
425
  second = thresholds[0]
426
426
  else:
@@ -579,7 +579,7 @@ class TimeMark(Base):
579
579
  # Import.
580
580
  from pandas import DataFrame
581
581
 
582
- # Handle parameter.
582
+ # Set 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
- # Handle parameter.
650
+ # Set 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
- # Handle parameter.
257
+ # Set 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
- # Handle parameter.
414
+ # Set 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
- # Handle parameter.
609
+ # Set 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
- # Handle parameter.
43
+ # Set 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
- # Handle parameter.
105
+ # Set 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.89
3
+ Version: 1.1.90
4
4
  Summary: Kit method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reykit/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -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=qGfR24p__cMth8Xs9mdzQNXPq9-SBWcXf5xan2rU5b4,21776
4
+ reykit/rdata.py,sha256=ktNSXzWRO_iYiIL-Ro2K6p0ACbmZeu-y1BEEJHxc1Bg,11346
5
+ reykit/remail.py,sha256=5ImoIRX0pHG_c1kEoMPJdeEaqakgMVIXeWBl9Db5ul4,6714
6
+ reykit/rimage.py,sha256=3fMGbDwTdbmnlsz1Q33zCw-ht-xOUpj8NXYl6CzvYq0,6145
7
+ reykit/rlog.py,sha256=lg2EpsTuEp3-CgrIcFMJIoW7kX7JsIAjyJwHxeMdhhE,25747
8
+ reykit/rmonkey.py,sha256=KBxUyiBlCu7RdVDL0mCuxLqycOItU3KeU6ZWXrKdvxc,7860
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=qYNmD0lGEysvQtIa6RBRi1xAG1Yv4ry0Hd8E4StYxho,12590
15
+ reykit/rstdout.py,sha256=bLN_kXsWpgTrCrBJNgaEE27DUk-ojsBV-9YJtWH41b4,8188
16
+ reykit/rsys.py,sha256=PEXUU_jyglEgIyN-URtnpUcrqKF5PFeAVAljEmaSqOs,24931
17
+ reykit/rtable.py,sha256=ItsycFuN-gb3gYhHuMx_nbAluGc8tAIMOyD5DHPS-lU,12173
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.90.dist-info/METADATA,sha256=4OArpOMbswgG_c51TvPq5X0iws7jVFrdGC3SWp8P9Po,1872
26
+ reykit-1.1.90.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
27
+ reykit-1.1.90.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
28
+ reykit-1.1.90.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=gT4dcdReki6HTDwCOAieqL3wi7lKUj7OfgiTXWTx_jo,21785
4
- reykit/rdata.py,sha256=iOU2_9RCihxrdXswZKvonVMIM-X5-L89WhawGDLHt4w,11361
5
- reykit/remail.py,sha256=l4HGKXdfHNBxyBT3YxeZyQhfecbElqTqSAGInwWhap8,6723
6
- reykit/rimage.py,sha256=lNN2iMpvSMqh-nPTpxrA9yHy43EA5WoYdxKYhqPwMgk,6154
7
- reykit/rlog.py,sha256=M4UgS2gxYJOWv66ItyOv7AUJHJc1CsSDVYr9J0y2MwU,25768
8
- reykit/rmonkey.py,sha256=MJ_levUBl_oqkx8UoWbNwrRBGPWGwpfAh0B25tESFUk,7863
9
- reykit/rnet.py,sha256=McW4fX-omkD4_2BpLISHt2hpwIxK7EfDA5c6j3gn3E4,16874
10
- reykit/rnum.py,sha256=VKICD64mEfiStAGWaxg3kzQjf7TTqiSBNe9LCpM9MLo,3623
11
- reykit/ros.py,sha256=5vSoxi02GUBltaDcXXg3hP7IF-l-kX45cI9XPE-EM3o,47835
12
- reykit/rrand.py,sha256=fiwxyUMaLtFjPanVwTOiwvEEucmf0t2WiZF9ul9o6pU,8572
13
- reykit/rre.py,sha256=1qva7xatKVE9qC2j7IujjXSM59qxHWwTYpiizFFQ8Xo,6024
14
- reykit/rschedule.py,sha256=y4piG8DT3TpE9jVI18UWvk-caXT7S409_vxetYOJ-jw,14603
15
- reykit/rstdout.py,sha256=yesWo7wIGablpyAu-2J2Gw11Qp3GdQjGICTyIcvLyt4,8200
16
- reykit/rsys.py,sha256=AP62KyN40flCeQJBclfJq8shachSAFT0LkVjiKsXkrw,24946
17
- reykit/rtable.py,sha256=UQ-JlwjssMR3gY1iY-VGQEKQ5_BZabpJy6TL7Fx19c4,12200
18
- reykit/rtask.py,sha256=xPeVQGzRygk062U1vyq2bglgDwxJf51gEJbxgbcGgh8,27108
19
- reykit/rtext.py,sha256=cWHy19lDcJvpX7LU95kmRVsDimpAUaz5TbKC1h83gB4,13254
20
- reykit/rtime.py,sha256=lsSKaYFmYXlDN18yj2fLVTKSruzgygl8icW6_Fl42Xk,17807
21
- reykit/rwrap.py,sha256=G4TL2GWUaW9DrCFRcsnDE1CwgdWeP2PnjQckheRx4p0,15095
22
- reykit/rzip.py,sha256=BGEONswuBZxQ-zcgd_xp2fcvYesC9AmKaaXWvnT3bTI,3456
23
- reykit/rdll/__init__.py,sha256=nLSb8onBm2ilyoxzpDzUeGfSCKwkLEesIhzK3LiJ8mk,701
24
- reykit/rdll/rdll_core.py,sha256=o6-rKcTQgxZQe0kD3GnwyNb3KL9IogzgCQNOmYLMm7A,5086
25
- reykit-1.1.89.dist-info/METADATA,sha256=KGX9G_K8iir6I2XF7t1WPFw_lU10zJw3FDLe6XN6IdM,1872
26
- reykit-1.1.89.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
27
- reykit-1.1.89.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
28
- reykit-1.1.89.dist-info/RECORD,,