reykit 1.1.20__py3-none-any.whl → 1.1.22__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/rcomm.py CHANGED
@@ -9,7 +9,7 @@
9
9
  """
10
10
 
11
11
 
12
- from typing import Any, Literal
12
+ from typing import Any, Literal, TypedDict, NotRequired
13
13
  from collections.abc import Callable, Iterable
14
14
  from warnings import filterwarnings
15
15
  from os.path import abspath as os_abspath, isfile as os_isfile
@@ -17,12 +17,23 @@ from socket import socket as Socket
17
17
  from urllib.parse import urlsplit as urllib_urlsplit, quote as urllib_quote, unquote as urllib_unquote
18
18
  from requests.api import request as requests_request
19
19
  from requests.models import Response
20
+ from requests_cache import (
21
+ ALL_METHODS,
22
+ OriginalResponse,
23
+ CachedResponse,
24
+ install_cache as requests_cache_install_cache,
25
+ uninstall_cache as requests_cache_uninstall_cache,
26
+ is_installed as requests_cache_is_installed,
27
+ clear as requests_cache_clear
28
+ )
20
29
  from mimetypes import guess_type
21
30
  from filetype import guess as filetype_guess
31
+ from datetime import datetime
22
32
 
23
33
  from .rexception import throw, check_response_code
24
34
  from .ros import RFile
25
35
  from .rregex import search
36
+ from .rtype import RBase
26
37
 
27
38
 
28
39
  __all__ = (
@@ -34,7 +45,21 @@ __all__ = (
34
45
  'request',
35
46
  'download',
36
47
  'get_file_stream_time',
37
- 'listen_socket'
48
+ 'listen_socket',
49
+ 'RRequestCache'
50
+ )
51
+
52
+
53
+ RequestCacheParameters = TypedDict(
54
+ 'RequestCacheParameters',
55
+ {
56
+ 'cache_name': str,
57
+ 'backend': Literal['sqllite', 'memory'],
58
+ 'expire_after': NotRequired[float | datetime],
59
+ 'code': Iterable[int],
60
+ 'method': Iterable[str],
61
+ 'judge': NotRequired[Callable[[Response], bool]]
62
+ }
38
63
  )
39
64
 
40
65
 
@@ -429,3 +454,122 @@ def listen_socket(
429
454
  socket_conn, _ = socket.accept()
430
455
  data = socket_conn.recv(rece_size)
431
456
  handler(data)
457
+
458
+
459
+ class RRequestCache(RBase):
460
+ """
461
+ Rey's `requests cache` type.
462
+ """
463
+
464
+
465
+ def __init__(
466
+ self,
467
+ path: str | None = 'cache.sqlite',
468
+ timeout: float | datetime | None = None,
469
+ codes: Iterable[int] | None = (200,),
470
+ methods: Iterable[str] | None = ('get', 'head'),
471
+ judge: Callable[[Response | OriginalResponse | CachedResponse], bool] | None = None
472
+ ) -> None:
473
+ """
474
+ Build `requests cache` instance attributes.
475
+
476
+ Parameters
477
+ ----------
478
+ path : Cache file path.
479
+ - `None`: Use memory cache.
480
+ - `str`: Use SQLite cache.
481
+ timeout : Cache timeout.
482
+ - `None`: Not timeout.
483
+ - `float`: Timeout seconds.
484
+ - `datetime`: Timeout threshold time.
485
+ codes : Cache response code range.
486
+ - `None`: All.
487
+ methods : Cache request method range.
488
+ - `None`: All.
489
+ judge : Judge function, `True` cache, `False` not cache.
490
+ - `None`: Not judgment.
491
+ """
492
+
493
+ # Build.
494
+ self.path = path
495
+ self.timeout = timeout
496
+ self.codes = codes
497
+ self.methods = methods
498
+ self.judge = judge
499
+
500
+
501
+ @property
502
+ def _start_params(self) -> RequestCacheParameters:
503
+ """
504
+ Get cache start parameters.
505
+
506
+ Returns
507
+ -------
508
+ Cache start parameters.
509
+ """
510
+
511
+ # Generate.
512
+ params = {}
513
+ if self.path is None:
514
+ params['cache_name'] = 'cache'
515
+ params['backend'] = 'memory'
516
+ else:
517
+ params['cache_name'] = self.path
518
+ params['backend'] = 'sqlite'
519
+ if self.timeout is not None:
520
+ params['expire_after'] = self.timeout
521
+ if self.codes is None:
522
+ params['allowable_codes'] = tuple(range(100, 600))
523
+ else:
524
+ params['allowable_codes'] = self.codes
525
+ if self.methods is None:
526
+ params['allowable_methods'] = ALL_METHODS
527
+ else:
528
+ params['allowable_methods'] = tuple([method.upper() for method in self.methods])
529
+ if self.judge is not None:
530
+ params['filter_fn'] = self.judge
531
+
532
+ return params
533
+
534
+
535
+ def start(self) -> None:
536
+ """
537
+ Start cache.
538
+ """
539
+
540
+ # Start.
541
+ requests_cache_install_cache(**self._start_params)
542
+
543
+
544
+ def stop(self) -> None:
545
+ """
546
+ Stop cache.
547
+ """
548
+
549
+ # Stop.
550
+ requests_cache_uninstall_cache()
551
+
552
+
553
+ @property
554
+ def started(self) -> bool:
555
+ """
556
+ Whether started.
557
+
558
+ Returns
559
+ -------
560
+ Result.
561
+ """
562
+
563
+ # Get.
564
+ result = requests_cache_is_installed()
565
+
566
+ return result
567
+
568
+
569
+ def clear(self) -> None:
570
+ """
571
+ Clear cache.
572
+ """
573
+
574
+ # Clear.
575
+ requests_cache_clear()
reykit/rdata.py CHANGED
@@ -369,7 +369,7 @@ class RGenerator(RBase):
369
369
  **kwargs: Any
370
370
  ) -> None:
371
371
  """
372
- Build `generator` attributes.
372
+ Build `generator` instance attributes.
373
373
 
374
374
  Parameters
375
375
  ----------
reykit/remail.py CHANGED
@@ -37,7 +37,7 @@ class REmail(RBase):
37
37
  password: str
38
38
  ) -> None:
39
39
  """
40
- Build `email` attributes.
40
+ Build `email` instance attributes.
41
41
 
42
42
  Parameters
43
43
  ----------
reykit/rlog.py CHANGED
@@ -91,7 +91,7 @@ class RLog(object):
91
91
  name: str = 'Log'
92
92
  ) -> None:
93
93
  """
94
- Build `log` attributes.
94
+ Build `log` instance attributes.
95
95
 
96
96
  Parameters
97
97
  ----------
@@ -901,9 +901,9 @@ class RLog(object):
901
901
  self.log(*messages, level=self.CRITICAL, **params)
902
902
 
903
903
 
904
- def stop(self) -> None:
904
+ def pause(self) -> None:
905
905
  """
906
- Stop record.
906
+ Pause record.
907
907
  """
908
908
 
909
909
  # Set level.
@@ -913,9 +913,9 @@ class RLog(object):
913
913
  self.stoped = True
914
914
 
915
915
 
916
- def start(self) -> None:
916
+ def resume(self) -> None:
917
917
  """
918
- Start record.
918
+ Resume record.
919
919
  """
920
920
 
921
921
  # Set level.
@@ -951,7 +951,7 @@ class RRecord(object):
951
951
  path: str | None = '_rrecord'
952
952
  ) -> None:
953
953
  """
954
- Build `record` attributes.
954
+ Build `record` instance attributes.
955
955
 
956
956
  Parameters
957
957
  ----------
reykit/rmultitask.py CHANGED
@@ -69,7 +69,7 @@ class RThreadPool(RBase):
69
69
  **kwargs: Any
70
70
  ) -> None:
71
71
  """
72
- Build `thread pool` attributes.
72
+ Build `thread pool` instance attributes.
73
73
 
74
74
  Parameters
75
75
  ----------
@@ -691,7 +691,7 @@ class RAsyncPool(RBase):
691
691
  **kwargs: Any
692
692
  ) -> None:
693
693
  """
694
- Build `asynchronous pool` attributes.
694
+ Build `asynchronous pool` instance attributes.
695
695
 
696
696
  Parameters
697
697
  ----------
reykit/ros.py CHANGED
@@ -311,7 +311,7 @@ class RFile(RBase):
311
311
  path: str
312
312
  ) -> None:
313
313
  """
314
- Build `file` attributes.
314
+ Build `file` instance attributes.
315
315
 
316
316
  Parameters
317
317
  ----------
@@ -857,7 +857,7 @@ class RFolder(RBase):
857
857
  path: str | None = None
858
858
  ) -> None:
859
859
  """
860
- Build `folder` attributes.
860
+ Build `folder` instance attributes.
861
861
 
862
862
  Parameters
863
863
  ----------
@@ -1233,7 +1233,7 @@ class RTempFile(RBase):
1233
1233
  type_: Literal['str', 'bytes'] = 'bytes'
1234
1234
  ) -> None:
1235
1235
  """
1236
- Build `temporary file` attributes.
1236
+ Build `temporary file` instance attributes.
1237
1237
 
1238
1238
  Parameters
1239
1239
  ----------
@@ -1516,7 +1516,7 @@ class RTempFolder(RBase):
1516
1516
  dir_: str | None = None
1517
1517
  ) -> None:
1518
1518
  """
1519
- Build `temporary folder` attributes.
1519
+ Build `temporary folder` instance attributes.
1520
1520
 
1521
1521
  Parameters
1522
1522
  ----------
reykit/rrandom.py CHANGED
@@ -65,7 +65,7 @@ class RRandomSeed(RBase):
65
65
 
66
66
  def __init__(self, seed: int | float | str | bytes | bytearray | None = None) -> None:
67
67
  """
68
- Build `random` attributes.
68
+ Build `random` instance attributes.
69
69
 
70
70
  Parameters
71
71
  ----------
reykit/rschedule.py CHANGED
@@ -38,7 +38,7 @@ class RSchedule(RBase):
38
38
  block: bool = False
39
39
  ) -> None:
40
40
  """
41
- Build `schedule` attributes.
41
+ Build `schedule` instance attributes.
42
42
 
43
43
  Parameters
44
44
  ----------
reykit/rsystem.py CHANGED
@@ -10,7 +10,7 @@
10
10
 
11
11
 
12
12
  from typing import Any, TypedDict, Literal, overload
13
- from collections.abc import Callable, Iterable, Sequence
13
+ from collections.abc import Callable, Iterable, Sequence, Mapping
14
14
  from inspect import signature as inspect_signature, _ParameterKind, _empty
15
15
  from sys import path as sys_path, modules as sys_modules
16
16
  from os import getpid as os_getpid
@@ -32,6 +32,7 @@ from psutil import (
32
32
  Process
33
33
  )
34
34
  from traceback import format_stack, extract_stack
35
+ from atexit import register as atexit_register
35
36
  from subprocess import Popen, PIPE
36
37
  from pymem import Pymem
37
38
  from argparse import ArgumentParser
@@ -67,6 +68,7 @@ __all__ = (
67
68
  'dos_command',
68
69
  'dos_command_var',
69
70
  'block',
71
+ 'at_exit',
70
72
  'is_class',
71
73
  'is_instance',
72
74
  'is_iterable',
@@ -359,6 +361,40 @@ def block() -> None:
359
361
  continue
360
362
 
361
363
 
364
+ def at_exit(*contents: str | Callable | tuple[Callable, Iterable, Mapping]) -> list[Callable]:
365
+ """
366
+ At exiting print text or execute function.
367
+
368
+ Parameters
369
+ ----------
370
+ contents : execute contents.
371
+ - `str`: Define the print text function and execute it.
372
+ - `Callable`: Execute function.
373
+ - `tuple[Callable, Iterable, Mapping]`: Execute function and position arguments and keyword arguments.
374
+
375
+ Returns
376
+ -------
377
+ Execute functions.
378
+ """
379
+
380
+ # Register.
381
+ funcs = []
382
+ for content in reversed(contents):
383
+ args = ()
384
+ kwargs = {}
385
+ if content.__class__ == str:
386
+ func = lambda : print(content)
387
+ elif callable(content):
388
+ func = content
389
+ elif content.__class__ == tuple:
390
+ func, args, kwargs = content
391
+ funcs.append(func)
392
+ atexit_register(func, *args, **kwargs)
393
+ funcs = list(reversed(funcs))
394
+
395
+ return funcs
396
+
397
+
362
398
  def is_class(obj: Any) -> bool:
363
399
  """
364
400
  Judge whether it is class.
reykit/rtime.py CHANGED
@@ -528,7 +528,7 @@ class RTimeMark():
528
528
 
529
529
  def __init__(self) -> None:
530
530
  """
531
- Build `time mark` attributes.
531
+ Build `time mark` instance attributes.
532
532
  """
533
533
 
534
534
  # Record table.
reykit/rwrap.py CHANGED
@@ -78,16 +78,16 @@ def wrap_frame(decorator: Callable) -> Callable:
78
78
 
79
79
  # Decorate Decorator.
80
80
  @overload
81
- def wrap(func: Callable, *args: Any, _execute: None = None, **kwargs: Any) -> Callable | Any: ...
81
+ def wrap(func: Callable, /, *args: Any, _execute: None = None, **kwargs: Any) -> Callable | Any: ...
82
82
 
83
83
  @overload
84
- def wrap(func: Callable, *args: Any, _execute: Literal[True] = None, **kwargs: Any) -> Any: ...
84
+ def wrap(func: Callable, /, *args: Any, _execute: Literal[True] = None, **kwargs: Any) -> Any: ...
85
85
 
86
86
  @overload
87
- def wrap(func: Callable, *args: Any, _execute: Literal[False] = None, **kwargs: Any) -> Callable: ...
87
+ def wrap(func: Callable, /, *args: Any, _execute: Literal[False] = None, **kwargs: Any) -> Callable: ...
88
88
 
89
89
  @functools_wraps(decorator)
90
- def wrap(func: Callable, *args: Any, _execute: bool | None = None, **kwargs: Any) -> Callable | Any:
90
+ def wrap(func: Callable, /, *args: Any, _execute: bool | None = None, **kwargs: Any) -> Callable | Any:
91
91
  """
92
92
  Decorative shell.
93
93
 
@@ -149,13 +149,16 @@ def wrap_frame(decorator: Callable) -> Callable:
149
149
  @overload
150
150
  def wrap_runtime(
151
151
  func: Callable,
152
+ /,
152
153
  *args: Any,
153
154
  _return_report: Literal[False] = False,
154
155
  **kwargs: Any
155
156
  ) -> Any: ...
156
157
 
157
158
  @overload
158
- def wrap_runtime(func: Callable,
159
+ def wrap_runtime(
160
+ func: Callable,
161
+ /,
159
162
  *args: Any,
160
163
  _return_report: Literal[True] = False,
161
164
  **kwargs: Any
@@ -164,6 +167,7 @@ def wrap_runtime(func: Callable,
164
167
  @wrap_frame
165
168
  def wrap_runtime(
166
169
  func: Callable,
170
+ /,
167
171
  *args: Any,
168
172
  _return_report: bool = False,
169
173
  **kwargs: Any
@@ -216,6 +220,7 @@ def wrap_runtime(
216
220
  @overload
217
221
  def wrap_thread(
218
222
  func: Callable,
223
+ /,
219
224
  *args: Any,
220
225
  _daemon: bool = True,
221
226
  **kwargs: Any
@@ -224,6 +229,7 @@ def wrap_thread(
224
229
  @wrap_frame
225
230
  def wrap_thread(
226
231
  func: Callable,
232
+ /,
227
233
  *args: Any,
228
234
  _daemon: bool = True,
229
235
  **kwargs: Any
@@ -259,6 +265,7 @@ def wrap_thread(
259
265
  @overload
260
266
  def wrap_exc(
261
267
  func: Callable,
268
+ /,
262
269
  *args: Any,
263
270
  _exception: BaseException | tuple[BaseException, ...] = BaseException,
264
271
  _handler: Callable | None = None,
@@ -268,6 +275,7 @@ def wrap_exc(
268
275
  @wrap_frame
269
276
  def wrap_exc(
270
277
  func: Callable,
278
+ /,
271
279
  *args: Any,
272
280
  _exception: BaseException | tuple[BaseException, ...] = BaseException,
273
281
  _handler: Callable | None = None,
@@ -306,6 +314,7 @@ def wrap_exc(
306
314
  @overload
307
315
  def wrap_retry(
308
316
  func: Callable,
317
+ /,
309
318
  *args: Any,
310
319
  _report: str | None = None,
311
320
  _exception: BaseException | tuple[BaseException, ...] = BaseException,
@@ -317,6 +326,7 @@ def wrap_retry(
317
326
  @wrap_frame
318
327
  def wrap_retry(
319
328
  func: Callable,
329
+ /,
320
330
  *args: Any,
321
331
  _report: str | None = None,
322
332
  _exception: BaseException | tuple[BaseException, ...] = BaseException,
@@ -384,6 +394,7 @@ def wrap_retry(
384
394
  @overload
385
395
  def wrap_dos_command(
386
396
  func: Callable,
397
+ /,
387
398
  *args: Any,
388
399
  **kwargs: Any
389
400
  ) -> Any: ...
@@ -391,6 +402,7 @@ def wrap_dos_command(
391
402
  @wrap_frame
392
403
  def wrap_dos_command(
393
404
  func: Callable,
405
+ /,
394
406
  *args: Any,
395
407
  **kwargs: Any
396
408
  ) -> Any:
@@ -509,6 +521,7 @@ wrap_cache_data: dict[Callable, list[tuple[Any, Any, Any]]] = {}
509
521
  @overload
510
522
  def wrap_cache(
511
523
  func: Callable,
524
+ /,
512
525
  *args: Any,
513
526
  _overwrite: bool = False,
514
527
  **kwargs: Any
@@ -517,6 +530,7 @@ def wrap_cache(
517
530
  @wrap_frame
518
531
  def wrap_cache(
519
532
  func: Callable,
533
+ /,
520
534
  *args: Any,
521
535
  _overwrite: bool = False,
522
536
  **kwargs: Any
@@ -568,6 +582,7 @@ def wrap_cache(
568
582
  @overload
569
583
  def wrap_redirect_stdout(
570
584
  func: Callable,
585
+ /,
571
586
  *args: Any,
572
587
  _redirect: list | IOBase | None = None,
573
588
  **kwargs: Any
@@ -576,6 +591,7 @@ def wrap_redirect_stdout(
576
591
  @wrap_frame
577
592
  def wrap_redirect_stdout(
578
593
  func: Callable,
594
+ /,
579
595
  *args: Any,
580
596
  _redirect: list | IOBase | None = None,
581
597
  **kwargs: Any
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: reykit
3
- Version: 1.1.20
3
+ Version: 1.1.22
4
4
  Summary: Rey's kit method set.
5
5
  Project-URL: homepage, https://github.com/reyxbo/reykit/
6
6
  Author-email: Rey <reyxbo@163.com>
@@ -28,6 +28,7 @@ Requires-Dist: python-docx
28
28
  Requires-Dist: pyzbar
29
29
  Requires-Dist: qrcode
30
30
  Requires-Dist: requests
31
+ Requires-Dist: requests-cache
31
32
  Requires-Dist: tqdm
32
33
  Requires-Dist: urwid
33
34
  Requires-Dist: varname
@@ -1,30 +1,30 @@
1
1
  reykit/__init__.py,sha256=QwnhdUDSXgjXJQ4ClaeP9oKXUXyQOPj5sApwGCDrILc,848
2
2
  reykit/rall.py,sha256=mOFwHXZ4-BOkJ5Ptbm6lQc2zwNf_VqcqM6AYYnYPfoo,672
3
- reykit/rcomm.py,sha256=LgSLrpUokOgdRMYwuZj6JNvxDyvENwsiOd6ZHo67HBg,11444
4
- reykit/rdata.py,sha256=ZHYQhMFS8kNnAmFPIDysOUnG_SUQOveFZ018S47QIh4,9996
5
- reykit/remail.py,sha256=SvjGC80BojMrLoaHiVltDvpeD-S5zDsrRxU2oascl3I,6761
3
+ reykit/rcomm.py,sha256=nFe9YKVB8BeR9PWOdjZfRX6KTSN6rp90OmS_YoUXcwM,15138
4
+ reykit/rdata.py,sha256=Kn_YoH3Rv6yBUmnIRmyZzjwChRvUIgeyKF8hGRo2pas,10005
5
+ reykit/remail.py,sha256=K8ueN0oP9iBJuFHYbFwyTn4AKoQm2Sf1lvmLpQYXoBQ,6770
6
6
  reykit/rexception.py,sha256=X56Ma9PtywVYAc38PmmMTlIxORYFy8Sz9e2bmm3j32M,8337
7
7
  reykit/rimage.py,sha256=VXlQFCZBjx1Mu18Au0Qmth9-u8dlIz0h8u_X100ImxA,6287
8
- reykit/rlog.py,sha256=8dCfDhKXZ1a534AhVx2dE9-TalZ7K5863t7ZwPzGIaU,25771
8
+ reykit/rlog.py,sha256=LijFdEqHX_HH1FAVLPJlR_SldAPeQ1_S8DmroWOiYyU,25793
9
9
  reykit/rmonkey.py,sha256=OAlLVvMszMDzersroVC9NjbD2GPnoPgWF4AHZ3v3-fk,8232
10
- reykit/rmultitask.py,sha256=nhuYRI8OCB5pNuolWd1L-_ioKB7OXJAysCKVxu55UxI,23138
10
+ reykit/rmultitask.py,sha256=IMQGP_sDquptigjdEpzf2P-wfXSESsF2yjbEEo_2NN4,23156
11
11
  reykit/rnumber.py,sha256=6x4FuRB-MTJheo6wbTUEaBarnew15jomlrneo3_Q2wg,3646
12
- reykit/ros.py,sha256=R5Md2IKfQ3NaVh_2KeLWNAWRBU1GOm38RUmVO5KLpVs,40704
13
- reykit/rrandom.py,sha256=qIq239IY9YkbJY74Gzc5ayiis_ugoS6nmAx_pD0RJKE,9237
12
+ reykit/ros.py,sha256=udTroOHAQ0cNu7Ksepyj3iPCSj8lE42RMq02qqTzbbg,40740
13
+ reykit/rrandom.py,sha256=4lTBL3IMhcurFeMOXaML_W7Q4xU4_HOW-si-13IrV3A,9246
14
14
  reykit/rregex.py,sha256=XTlnDLior8yyncFdrTr9FsVlBcqMXvsWRfpmvQS-BR8,6089
15
- reykit/rschedule.py,sha256=cdHn9F453KabFPvPeeT_WcpDSsdXPmIEgB2wMgHuKt4,5825
15
+ reykit/rschedule.py,sha256=XkQ6xNxcJQjomNvbfTTMyo0KIbk0y3Dp0xq_HOCScJQ,5834
16
16
  reykit/rstdout.py,sha256=E6wyze9fGcR1wEatD5gIcsPF_qsJ1SG5VkKWKSns944,9927
17
- reykit/rsystem.py,sha256=PpzB2oppZODh5YUUDV_8Ap3eJWa2cRU9tRBcSxlTiyw,35370
17
+ reykit/rsystem.py,sha256=bVcK-b5jqOi9zXPnjCu98xGmjPENFg5e4k7w44fPLdU,36420
18
18
  reykit/rtable.py,sha256=gXszf_9DE_5SMdNcxMX-xd4IpHGQVjGsN3NQIm7wVGY,12055
19
19
  reykit/rtext.py,sha256=whaKpVkd36yYVtCmZ1ptp_TVRL1v3f7Jab0vPXC8wXY,11089
20
- reykit/rtime.py,sha256=WYPmpz4ZyrqWVU0YrXAiZWLYbMZeZTX3XqTGwt-EE3g,17101
20
+ reykit/rtime.py,sha256=1FC7JU-9t9dORUBUEzeVEvS73h7LDL9W8qTm9PZDscU,17110
21
21
  reykit/rtype.py,sha256=O7iI_sJ1Bfl_ZiP29IHqEE3v3PfJRpeA5M6ukEdZSMk,2317
22
- reykit/rwrap.py,sha256=AJBYTDLHLGlMSiGIKoVkCsQk-Y4nDHWWFVCdnz5Bwdk,15222
22
+ reykit/rwrap.py,sha256=N4rBDNW_PRGWbHqPB2cOWQFNAHpIBN-6MtmOEtupu4c,15360
23
23
  reykit/rzip.py,sha256=i6KkmeSWCnq025d-O1mbuCYezNRUhyY9OGVK0CRlNAM,3522
24
24
  reykit/rdll/__init__.py,sha256=vM9V7wSNno-WH9RrxgHTIgCkQm8LmBFoLFO8z7qovNo,306
25
25
  reykit/rdll/rdll_inject.py,sha256=bETl8tywtN1OiQudbA21u6GwBM_bqVX7jbiisNj_JBg,645
26
26
  reykit/rdll/rdll_inject_core.py,sha256=Trgh_pdJs_Lw-Y-0Kkn8kHr4BnilM9dBKnHnX25T_pM,5092
27
- reykit-1.1.20.dist-info/METADATA,sha256=YkSAzXGZzT9KNE05cSvC59dKWwyRg065ZUCMHUuvw8s,1889
28
- reykit-1.1.20.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
29
- reykit-1.1.20.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
30
- reykit-1.1.20.dist-info/RECORD,,
27
+ reykit-1.1.22.dist-info/METADATA,sha256=gU1EEQKERosR7K4NtmvIgkSQi1tLjIZc0AZQ-SI7zWI,1919
28
+ reykit-1.1.22.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
29
+ reykit-1.1.22.dist-info/licenses/LICENSE,sha256=UYLPqp7BvPiH8yEZduJqmmyEl6hlM3lKrFIefiD4rvk,1059
30
+ reykit-1.1.22.dist-info/RECORD,,