absfuyu 5.8.0__py3-none-any.whl → 5.10.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of absfuyu might be problematic. Click here for more details.

Files changed (80) hide show
  1. absfuyu/__init__.py +1 -1
  2. absfuyu/__main__.py +2 -2
  3. absfuyu/cli/__init__.py +2 -2
  4. absfuyu/cli/color.py +2 -2
  5. absfuyu/cli/config_group.py +2 -2
  6. absfuyu/cli/do_group.py +2 -2
  7. absfuyu/cli/game_group.py +20 -2
  8. absfuyu/cli/tool_group.py +2 -2
  9. absfuyu/config/__init__.py +2 -2
  10. absfuyu/core/__init__.py +2 -2
  11. absfuyu/core/baseclass.py +2 -2
  12. absfuyu/core/baseclass2.py +2 -2
  13. absfuyu/core/decorator.py +2 -2
  14. absfuyu/core/docstring.py +2 -2
  15. absfuyu/core/dummy_cli.py +2 -2
  16. absfuyu/core/dummy_func.py +2 -2
  17. absfuyu/dxt/__init__.py +2 -2
  18. absfuyu/dxt/dictext.py +2 -2
  19. absfuyu/dxt/dxt_support.py +2 -2
  20. absfuyu/dxt/intext.py +2 -2
  21. absfuyu/dxt/listext.py +13 -18
  22. absfuyu/dxt/strext.py +2 -2
  23. absfuyu/extra/__init__.py +2 -2
  24. absfuyu/extra/beautiful.py +2 -2
  25. absfuyu/extra/da/__init__.py +37 -3
  26. absfuyu/extra/da/dadf.py +2 -2
  27. absfuyu/extra/da/dadf_base.py +2 -2
  28. absfuyu/extra/da/df_func.py +2 -2
  29. absfuyu/extra/da/mplt.py +2 -2
  30. absfuyu/extra/data_analysis.py +2 -2
  31. absfuyu/extra/pdf.py +2 -2
  32. absfuyu/extra/rclone.py +253 -0
  33. absfuyu/extra/xml.py +2 -2
  34. absfuyu/fun/__init__.py +2 -2
  35. absfuyu/fun/rubik.py +2 -2
  36. absfuyu/fun/tarot.py +2 -2
  37. absfuyu/game/__init__.py +2 -2
  38. absfuyu/game/game_stat.py +2 -2
  39. absfuyu/game/schulte.py +78 -0
  40. absfuyu/game/sudoku.py +2 -2
  41. absfuyu/game/tictactoe.py +2 -2
  42. absfuyu/game/wordle.py +2 -2
  43. absfuyu/general/__init__.py +2 -2
  44. absfuyu/general/content.py +2 -2
  45. absfuyu/general/human.py +2 -2
  46. absfuyu/general/shape.py +2 -2
  47. absfuyu/logger.py +2 -2
  48. absfuyu/pkg_data/__init__.py +2 -2
  49. absfuyu/pkg_data/deprecated.py +2 -2
  50. absfuyu/pkg_data/logo.py +2 -2
  51. absfuyu/sort.py +2 -2
  52. absfuyu/tools/__init__.py +2 -2
  53. absfuyu/tools/checksum.py +2 -2
  54. absfuyu/tools/converter.py +2 -2
  55. absfuyu/tools/generator.py +2 -2
  56. absfuyu/tools/inspector.py +2 -2
  57. absfuyu/tools/keygen.py +2 -2
  58. absfuyu/tools/obfuscator.py +2 -2
  59. absfuyu/tools/passwordlib.py +2 -2
  60. absfuyu/tools/shutdownizer.py +2 -2
  61. absfuyu/tools/sw.py +76 -5
  62. absfuyu/tools/web.py +2 -2
  63. absfuyu/typings.py +2 -2
  64. absfuyu/util/__init__.py +31 -2
  65. absfuyu/util/api.py +2 -2
  66. absfuyu/util/gui.py +91 -0
  67. absfuyu/util/json_method.py +2 -2
  68. absfuyu/util/lunar.py +2 -2
  69. absfuyu/util/path.py +2 -2
  70. absfuyu/util/performance.py +2 -2
  71. absfuyu/util/shorten_number.py +2 -2
  72. absfuyu/util/text_table.py +2 -2
  73. absfuyu/util/zipped.py +2 -2
  74. absfuyu/version.py +2 -2
  75. {absfuyu-5.8.0.dist-info → absfuyu-5.10.0.dist-info}/METADATA +4 -1
  76. absfuyu-5.10.0.dist-info/RECORD +84 -0
  77. absfuyu-5.8.0.dist-info/RECORD +0 -81
  78. {absfuyu-5.8.0.dist-info → absfuyu-5.10.0.dist-info}/WHEEL +0 -0
  79. {absfuyu-5.8.0.dist-info → absfuyu-5.10.0.dist-info}/entry_points.txt +0 -0
  80. {absfuyu-5.8.0.dist-info → absfuyu-5.10.0.dist-info}/licenses/LICENSE +0 -0
absfuyu/tools/sw.py CHANGED
@@ -3,8 +3,8 @@ Absufyu: Software
3
3
  -----------------
4
4
  Software, pyinstaller related stuff
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -40,7 +40,7 @@ from pathlib import Path
40
40
  from typing import Literal, NamedTuple, TypedDict
41
41
 
42
42
  from absfuyu.core.baseclass import BaseClass
43
- from absfuyu.core.docstring import versionchanged
43
+ from absfuyu.core.docstring import versionadded, versionchanged
44
44
  from absfuyu.dxt import Text
45
45
  from absfuyu.tools.converter import Base64EncodeDecode
46
46
  from absfuyu.util import stop_after_day
@@ -474,6 +474,28 @@ class BasicSoftwareProtection(BaseClass):
474
474
  self._secret = secret
475
475
 
476
476
  def check_valid_license(self, generate_helper: bool = True) -> None:
477
+ """
478
+ Check for valid license
479
+ (``.zlic`` file in the same directory as the script that runs this code)
480
+
481
+ Parameters
482
+ ----------
483
+ generate_helper : bool, optional
484
+ Generate a helper file (``license.helper``),
485
+ which can be used to make license key,
486
+ by default ``True``
487
+
488
+ Raises
489
+ ------
490
+ SystemExit
491
+ License file not found!
492
+
493
+ SystemExit
494
+ Invalid license key format!
495
+
496
+ SystemExit
497
+ Invalid license!
498
+ """
477
499
  try:
478
500
  # Get license file
479
501
  license_file = list(self._cwd.glob("*.zlic"))[0]
@@ -501,14 +523,63 @@ class BasicSoftwareProtection(BaseClass):
501
523
  else: # Invalid license
502
524
  raise SystemExit("Invalid license!")
503
525
 
526
+ @versionadded("5.9.0")
527
+ def check_valid_license_gui(
528
+ self, title: str = "WARNING", message: str = "INVALID LICENSE!", generate_helper: bool = True
529
+ ) -> None:
530
+ """
531
+ Check for valid license
532
+ (``.zlic`` file in the same directory as the script that runs this code)
533
+ but will pop up a GUI when invalid license.
534
+
535
+ Parameters
536
+ ----------
537
+ title : str, optional
538
+ Title of the GUI, by default "WARNING"
539
+
540
+ message : str, optional
541
+ Message in the GUI, by default "INVALID LICENSE!"
542
+
543
+ generate_helper : bool, optional
544
+ Generate a helper file (``license.helper``),
545
+ which can be used to make license key,
546
+ by default ``True``
547
+
548
+ Raises
549
+ ------
550
+ SystemExit
551
+ Invalid license
552
+ """
553
+ try:
554
+ self.check_valid_license(generate_helper=generate_helper)
555
+ except SystemExit:
556
+ from tkinter import messagebox
557
+
558
+ messagebox.showwarning(title, message, icon="error")
559
+ raise SystemExit("Invalid license")
560
+
504
561
  # Make key
505
- def _make_key(self, name: str, expiry: str, secret: str):
562
+ def _make_key(self, name: str, expiry: str, secret: str) -> None:
563
+ """
564
+ Generate license key in the same directory as the script that runs this code.
565
+
566
+ Parameters
567
+ ----------
568
+ name : str
569
+ Name of license's holder
570
+
571
+ expiry : str
572
+ Expiry date in format "yyyy-mm-dd"
573
+
574
+ secret : str
575
+ Secret string
576
+ """
506
577
  path = self._cwd.joinpath("license.zlic")
507
578
  engine = LicenseKeySystem(name, expiry, secret)
508
579
  with path.open("w", encoding="utf-8") as f:
509
580
  f.write(engine.make_key())
510
581
 
511
- def generate_license_helper(self):
582
+ def generate_license_helper(self) -> None:
512
583
  """Gather HWID and make it into a file"""
513
584
  path = self._cwd.joinpath("license.helper")
514
585
  with path.open("w", encoding="utf-8") as f:
absfuyu/tools/web.py CHANGED
@@ -3,8 +3,8 @@ Absfuyu: Web
3
3
  ------------
4
4
  Web, ``request``, ``BeautifulSoup`` stuff
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Library
absfuyu/typings.py CHANGED
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Pre-defined typing
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
absfuyu/util/__init__.py CHANGED
@@ -3,8 +3,8 @@ Absufyu: Utilities
3
3
  ------------------
4
4
  Some random utilities
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -25,6 +25,7 @@ __all__ = [
25
25
  # Library
26
26
  # ---------------------------------------------------------------------------
27
27
  import pkgutil
28
+ import subprocess
28
29
  from datetime import datetime
29
30
  from string import printable
30
31
 
@@ -257,3 +258,31 @@ def convert_to_raw_unicode(text: str, partial: bool = True) -> str:
257
258
  character if character in character_set and partial else _convert(character)
258
259
  for character in text
259
260
  )
261
+
262
+
263
+ @versionadded("5.9.0")
264
+ def is_command_available(cmd: list[str] | str, err_msg: str = "") -> None:
265
+ """
266
+ Checks if the desired command available
267
+
268
+ Parameters
269
+ ----------
270
+ cmd : list[str] | str
271
+ Command to check
272
+
273
+ err_msg : str, optional
274
+ Custom error message, by default ""
275
+
276
+ Raises
277
+ ------
278
+ ValueError
279
+ When command is unvailable
280
+ """
281
+ try:
282
+ subprocess.run(
283
+ cmd,
284
+ stdout=subprocess.DEVNULL,
285
+ stderr=subprocess.DEVNULL,
286
+ )
287
+ except Exception:
288
+ raise ValueError(err_msg)
absfuyu/util/api.py CHANGED
@@ -3,8 +3,8 @@ Absufyu: API
3
3
  ------------
4
4
  Fetch data stuff
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
absfuyu/util/gui.py ADDED
@@ -0,0 +1,91 @@
1
+ """
2
+ Absfuyu: GUI
3
+ ------------
4
+ Custom tkinter GUI
5
+
6
+ Version: 5.10.0
7
+ Date updated: 24/09/2025 (dd/mm/yyyy)
8
+ """
9
+
10
+ # Module level
11
+ # ---------------------------------------------------------------------------
12
+ __all__ = ["CustomTkinterApp"]
13
+
14
+
15
+ # Library
16
+ # ---------------------------------------------------------------------------
17
+ import tkinter as tk
18
+
19
+ from absfuyu.pkg_data.logo import AbsfuyuLogo
20
+
21
+
22
+ # Class
23
+ # ---------------------------------------------------------------------------
24
+ class CustomTkinterApp(tk.Tk):
25
+
26
+ def __init__(self, title: str | None = None, size: tuple[int, int] | None = None) -> None:
27
+ """
28
+ Custom Tkinter GUI
29
+
30
+ Parameters
31
+ ----------
32
+ title : str | None, optional
33
+ Title of the app, by default None
34
+
35
+ size : tuple[int, int] | None, optional
36
+ Size of the app (width, height), by default None
37
+ """
38
+ super().__init__()
39
+
40
+ # Set custom icon
41
+ self.iconphoto(True, tk.PhotoImage(data=AbsfuyuLogo.SHORT))
42
+
43
+ # Title
44
+ self.title(title)
45
+
46
+ # Set size
47
+ self._absfuyu_set_width_height(size)
48
+
49
+ # @versionadded("5.10.0")
50
+ def _absfuyu_set_width_height(self, size: tuple[int, int] | None = None) -> None:
51
+ """
52
+ Set width and height for the app.
53
+
54
+ Parameters
55
+ ----------
56
+ size : tuple[int, int] | None, optional
57
+ Size of the app (width, height), by default ``None``
58
+ (420 x 250)
59
+ """
60
+ # Set GUI appears in center
61
+ if size is None:
62
+ _width = 420
63
+ _height = 250
64
+ else:
65
+ _width, _height = size
66
+
67
+ _width_screen = self.winfo_screenwidth()
68
+ _width_screen_offset = 0.0052 # x offset mutiplier
69
+ _x_offset = int(_width_screen * _width_screen_offset)
70
+
71
+ _height_screen = self.winfo_screenheight()
72
+ _height_screen_offset = 0.0926 # y offset mutiplier
73
+ _y_offset = int(_height_screen * _height_screen_offset)
74
+
75
+ if _width > _width_screen:
76
+ _width = int(_width_screen * (1 - 0.001))
77
+ # _x_offset = 0
78
+
79
+ if _height > (_height_screen - _y_offset):
80
+ _height = int(_height_screen * (1 - 0.001))
81
+ _y_offset = 0
82
+
83
+ _x = (_width_screen / 2) - (_width / 2) - _x_offset
84
+ _y = (_height_screen / 2) - (_height / 2) - _y_offset
85
+
86
+ self.geometry(f"{_width}x{_height}+{int(_x)}+{int(_y)}")
87
+
88
+
89
+ if __name__ == "__main__":
90
+ app = CustomTkinterApp("absfuyu")
91
+ app.mainloop()
@@ -3,8 +3,8 @@ Absfuyu: Json Method
3
3
  --------------------
4
4
  ``.json`` file handling
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
absfuyu/util/lunar.py CHANGED
@@ -4,8 +4,8 @@ Absfuyu: Lunar calendar
4
4
  -----------------------
5
5
  Convert to lunar calendar
6
6
 
7
- Version: 5.8.0
8
- Date updated: 16/09/2025 (dd/mm/yyyy)
7
+ Version: 5.10.0
8
+ Date updated: 23/09/2025 (dd/mm/yyyy)
9
9
 
10
10
  Source:
11
11
  -------
absfuyu/util/path.py CHANGED
@@ -3,8 +3,8 @@ Absfuyu: Path
3
3
  -------------
4
4
  Path related
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
 
9
9
  Feature:
10
10
  --------
@@ -3,8 +3,8 @@ Absfuyu: Performance
3
3
  --------------------
4
4
  Performance Check
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
 
9
9
  Feature:
10
10
  --------
@@ -3,8 +3,8 @@ Absfuyu: Shorten number
3
3
  -----------------------
4
4
  Short number base on suffixes
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -3,8 +3,8 @@ Absufyu: Utilities
3
3
  ------------------
4
4
  Text table
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
absfuyu/util/zipped.py CHANGED
@@ -4,8 +4,8 @@ Absfuyu: Zipped
4
4
  Zipping stuff
5
5
  (deprecated, use absfuyu.util.path.Directory)
6
6
 
7
- Version: 5.8.0
8
- Date updated: 16/09/2025 (dd/mm/yyyy)
7
+ Version: 5.10.0
8
+ Date updated: 23/09/2025 (dd/mm/yyyy)
9
9
  """
10
10
 
11
11
  # Module level
absfuyu/version.py CHANGED
@@ -3,8 +3,8 @@ Absfuyu: Version
3
3
  ----------------
4
4
  Package versioning module
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: absfuyu
3
- Version: 5.8.0
3
+ Version: 5.10.0
4
4
  Summary: A small collection of code
5
5
  Project-URL: Homepage, https://github.com/AbsoluteWinter/absfuyu-public
6
6
  Project-URL: Documentation, https://absolutewinter.github.io/absfuyu-docs/
@@ -52,6 +52,7 @@ Provides-Extra: full
52
52
  Requires-Dist: numpy; extra == 'full'
53
53
  Requires-Dist: openpyxl; extra == 'full'
54
54
  Requires-Dist: pandas; extra == 'full'
55
+ Requires-Dist: rclone-crypt; extra == 'full'
55
56
  Requires-Dist: rich; extra == 'full'
56
57
  Requires-Dist: spire-pdf; extra == 'full'
57
58
  Requires-Dist: tqdm; extra == 'full'
@@ -60,6 +61,8 @@ Requires-Dist: xlsxwriter; extra == 'full'
60
61
  Requires-Dist: xmltodict; extra == 'full'
61
62
  Provides-Extra: pdf
62
63
  Requires-Dist: spire-pdf; extra == 'pdf'
64
+ Provides-Extra: rclone
65
+ Requires-Dist: rclone-crypt; extra == 'rclone'
63
66
  Provides-Extra: xml
64
67
  Requires-Dist: xmltodict; extra == 'xml'
65
68
  Description-Content-Type: text/markdown
@@ -0,0 +1,84 @@
1
+ absfuyu/__init__.py,sha256=Kn41SODqNeyIrPmz4GQdaIIGRc5_SkJzQHVd2s29gWU,601
2
+ absfuyu/__main__.py,sha256=nBayi3zgsLZy2-5Q8-3ycMn59WXZdnB2g2-geR-CDJY,596
3
+ absfuyu/logger.py,sha256=X5magM5aI309pl5fw1bFRd4PIr0I38fcukKVe6uMzFc,13044
4
+ absfuyu/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ absfuyu/sort.py,sha256=3QG7oRQ_H0X9kAGC3gEtX1YLwg-sJmv6WHSBCHVDvWE,3251
6
+ absfuyu/typings.py,sha256=WudA_1vz2zDshNPhumlsCKhkafQKkMUgOT_DZYtME0I,4663
7
+ absfuyu/version.py,sha256=56ONdqRF3eSfx95xRQSNouxQNBQQmu6xkWxPdCS4Hps,14491
8
+ absfuyu/cli/__init__.py,sha256=PXr-vlTlVe2WY4OtXnX8y1RWnsYpOD1uIXEo9tDfkAw,1182
9
+ absfuyu/cli/color.py,sha256=2nMOCwVQjLYIJkOy6GjbCQcxRWcIbgQXmGc5PZrR6tg,1140
10
+ absfuyu/cli/config_group.py,sha256=z21drceojAVEDsx_SlLK0m9_dyO0NWYh1qU8VvXopNs,1506
11
+ absfuyu/cli/do_group.py,sha256=RpFNot40cxmAuIGYIwtwwpPhPAnZwA9usQ6w1sO7Y4g,2721
12
+ absfuyu/cli/game_group.py,sha256=JMY2tYj-Mbc8lu3mG4d8Xvf9mEg6DekvDcdmXBA-v9s,3017
13
+ absfuyu/cli/tool_group.py,sha256=A5y9pxQX98Ap9T-csSgQMO0whAgav7_IypxSQJWl_iM,3417
14
+ absfuyu/config/__init__.py,sha256=tAE7aSTWAiSFcR8QkZcvGuz2rfc_hrqVmrdYCogOPSE,8239
15
+ absfuyu/config/config.json,sha256=-ZQnmDuLq0aAFfsrQbSNR3tq5k9Eu9IVUQgYD9htIQM,646
16
+ absfuyu/core/__init__.py,sha256=srsm3KrxFxlY6TNbLNyzEcgWOplHQGIXtyI8pV7ND4M,1189
17
+ absfuyu/core/baseclass.py,sha256=ZTky0VBe7qVZ8UuuOg4yGuN1iYMwCUXdkZA7S4qSC6s,34825
18
+ absfuyu/core/baseclass2.py,sha256=a11SNyWA-II9Cmn8JDYX7EArVBgza3V2Lh7j3FZbYGY,5368
19
+ absfuyu/core/decorator.py,sha256=a7iOBLrkmWnzuCIjnkM0DB8bbL48Fs3riWYy3gsM4Wo,4177
20
+ absfuyu/core/docstring.py,sha256=un6V2AfLQVIhkKcKFWlwWizg65v9jaasRI8ksoPj35Q,5792
21
+ absfuyu/core/dummy_cli.py,sha256=1CIeqNg956yaZJm6OmEO99cV2cMCRJDqVC-hYpfAJUk,1885
22
+ absfuyu/core/dummy_func.py,sha256=AcqGbpPpd8aY2Ue8n-VrFWX4DbiUgixie0iRVfwNmn0,1427
23
+ absfuyu/dxt/__init__.py,sha256=Bn9CLY8V3L2pXpHJ7hqm1zbEHleG6NgUKCnu_E70ups,987
24
+ absfuyu/dxt/dictext.py,sha256=2eCK6pd25QHCg-qJgXd5LkAwsOqq1XUJWsQKIaSvHUI,6228
25
+ absfuyu/dxt/dxt_support.py,sha256=t0XTUcQnZWn8NvVfOz7XCewwO6rOe7n_wriXpqPxGWs,2110
26
+ absfuyu/dxt/intext.py,sha256=AM1Pv6_dNm3xe19z_S6sUXsnzC0j167q35lGOWYG4pA,17838
27
+ absfuyu/dxt/listext.py,sha256=XReKOIxo8NPYs_dcFeaz8h2VNHWIwC4P5XNRYJ3ovWo,24498
28
+ absfuyu/dxt/strext.py,sha256=2ufjFRdKl2doGLjoEE2uk5pgRUxFY8UTPLETSH2wW60,16276
29
+ absfuyu/extra/__init__.py,sha256=UhqyhodBOB4eod1NEGra83zqGLfoPzyURdL9BRk3Rzk,183
30
+ absfuyu/extra/beautiful.py,sha256=hajYYkLEmT8ZB-235FrA135UP2XAhi6E9enKK_ZYjVk,8138
31
+ absfuyu/extra/data_analysis.py,sha256=_ZGkTmh_IHpmPvOwyXSB6asaMB42xLeuLhd0LRFyskg,500
32
+ absfuyu/extra/pdf.py,sha256=2R5kDMFgM8rHvteNPf8cwrs_zLxN9bNd0t0I-TKgDlM,2484
33
+ absfuyu/extra/rclone.py,sha256=HN-wW8KMTGfWXLT3_AC1tv7jookh_QQ6djgifkQDFdM,8485
34
+ absfuyu/extra/xml.py,sha256=R6mQmUPtCQi3tlV_yBo5SwjuCnwsqnSb5O4PCsHIToc,2158
35
+ absfuyu/extra/da/__init__.py,sha256=c2tHlSkQIO2pm9NAVzVivCj1oNNUCA30z3erHjj5CNs,1887
36
+ absfuyu/extra/da/dadf.py,sha256=UGIciQJB1AIMvFTfXI4xjhvA4GPOy34QKLA8rUUo98o,44235
37
+ absfuyu/extra/da/dadf_base.py,sha256=ATpu2j5WKl3sdkoF_7TT5kY0JOYPmVuypHyHKNUrnxQ,5168
38
+ absfuyu/extra/da/df_func.py,sha256=mlp0KWX4AbS17q3SCmQxnWxiYLgH1Fks05opEcp09lI,2525
39
+ absfuyu/extra/da/mplt.py,sha256=tryzNNK-QHK372JKeUGlagOD439JgzjrSygVSluB8Ps,6306
40
+ absfuyu/fun/__init__.py,sha256=w6x6SdFx3mSPgppDu0Q1rgI-JKviuh2HH2_KdHH4xTU,5606
41
+ absfuyu/fun/rubik.py,sha256=lKjZI9ds0rpp24ZSknMTcpMvpq4jR0Kw8kdPIHRQDI0,29678
42
+ absfuyu/fun/tarot.py,sha256=4eoIz_Jp1odlZjkZxrg1nc58PaRThAiuA2TZBVuwkeY,2402
43
+ absfuyu/game/__init__.py,sha256=W41wpnapFO0Lkoo5mXh7_WBboibl65RnyimWa88P--A,4692
44
+ absfuyu/game/game_stat.py,sha256=ArSL_sjJH9g46MVep2j-_WWjvJUr9-VXsW1Ho84tqmI,1237
45
+ absfuyu/game/schulte.py,sha256=T85GrBZrwjf4bZGBSn2aWTS3WYG_MPAEzWpuo694NC4,2706
46
+ absfuyu/game/sudoku.py,sha256=bkGoRm_YwoXJjMSjdpTfKTMEG9t_Aed_x3xa0jIaM8w,10406
47
+ absfuyu/game/tictactoe.py,sha256=Q7J9Y2zzFafwxlnbIk3Cm9f2AHOYjRscPLD6yiLnEmQ,9959
48
+ absfuyu/game/wordle.py,sha256=-7Ekc6PAai_jlQBce9l7rN_BcQv8WGQxXsM3Im8aLtw,101577
49
+ absfuyu/general/__init__.py,sha256=Tkb3FI2Hly_CWLbiu2dHigS1P6S9sZvYfuo9gGdGb-o,473
50
+ absfuyu/general/content.py,sha256=Yi7v5PKFEnkRaqlIXbyannP9lY7PYRBvNfRqxCDJUa8,17125
51
+ absfuyu/general/human.py,sha256=AtqGomQ48b7-xHZ_CkqVjpKHAGR1G9rQEXsW7QRvTeo,8100
52
+ absfuyu/general/shape.py,sha256=3ZlxW97Mm2DThN4CRiXtDaU_0X5c_E90HQHE8XN6wxE,38620
53
+ absfuyu/pkg_data/__init__.py,sha256=u_FoiLCJyIQn0KH-ugmTmLXMpEL0GjA0fsxyWwnpgvU,5511
54
+ absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
55
+ absfuyu/pkg_data/deprecated.py,sha256=6meqTi01MXcP5rfJM72Au106YJLkv5wHDWidONTxGSQ,4350
56
+ absfuyu/pkg_data/logo.py,sha256=0O7E3A345WMb2mc94uIpk1ylEa0qNnGo3Vb0IOl2fzw,160799
57
+ absfuyu/pkg_data/passwordlib_lzma.pkl,sha256=rT5lJT8t42BATU5Cp2qFwbnZkbx-QlUgodSvR0wFY6I,891877
58
+ absfuyu/pkg_data/tarot.pkl,sha256=ssXTCC_BQgslO5F-3a9HivbxFQ6BioIe2E1frPVi2m0,56195
59
+ absfuyu/tools/__init__.py,sha256=4rQFDPMh11lKxGCbv4g3TFvKs_3JHqzJWCO2NT8wjyc,917
60
+ absfuyu/tools/checksum.py,sha256=s0dskhbZjrvfNREz3-I65wD3gREkQbIcaJ2AfilaxhU,5667
61
+ absfuyu/tools/converter.py,sha256=gk9-yr0ksdrLW8BmbqLvWPm9iJ-UD1Q0LCQkeG74R6U,13567
62
+ absfuyu/tools/generator.py,sha256=QjfejY1iePvaeQqcxfmJI56ttoFJ4uGmZV6iojISt3I,13476
63
+ absfuyu/tools/inspector.py,sha256=1DuSg96J5WItwyB2QvcjOp5tjDqGx-el4DcODzgcAe0,23952
64
+ absfuyu/tools/keygen.py,sha256=iPvAhcgHWw1N7jEVBRgdrHKoStniqrcdbtyFx7vV2So,7116
65
+ absfuyu/tools/obfuscator.py,sha256=on2iHp-UZeu4WzA7ysgs6YiP9K2hPYSJ0qxhUcS0QM4,13672
66
+ absfuyu/tools/passwordlib.py,sha256=tow8ibxr2QkyYDyY_gGSBYozYz-F0PYRXTh0oK4PDTU,11081
67
+ absfuyu/tools/shutdownizer.py,sha256=uQgMmAF6KhZCanqDm5Vg8FlfoOhUkOYyHBUGCKJ7dZ8,8550
68
+ absfuyu/tools/sw.py,sha256=ae0PXmLQAV3yZkqPyOF4ewLTIwloqNp4MAoUhGu9_Z8,17444
69
+ absfuyu/tools/web.py,sha256=KzNEHl1gDW7DZcw7_xtDeLK_rMD7UqIaUWYNRbUr1p4,1241
70
+ absfuyu/util/__init__.py,sha256=xMeNAFLivG6TgOewnMSe1Lso-5_qQYMPglNWRcfukqA,6619
71
+ absfuyu/util/api.py,sha256=4Ls51cd1ybQ2_bnT11MUkY7-GXMaEsiD5ci_5ldC3UI,4464
72
+ absfuyu/util/gui.py,sha256=kCD-NiJHLV2WoZSPi_YlbRxOfpOn0lvlQht5HUrBRd0,2606
73
+ absfuyu/util/json_method.py,sha256=fnZEDgY3Ppkg4ZTqOl8glGTzBmT1s8IJLTfLe6MxLb0,2848
74
+ absfuyu/util/lunar.py,sha256=Z_1jBp_VCdGiPC1mrO6L1o78nJa6-owokdpPLnFy70g,13631
75
+ absfuyu/util/path.py,sha256=bsQl7VlOQgB8RgyOqqxZssPINmXCFYsw8Dr81wZTF2I,23974
76
+ absfuyu/util/performance.py,sha256=77-a4Zk_0-PaDgirpTjyhE57Z61c05XA9Dao-eaEKSY,12095
77
+ absfuyu/util/shorten_number.py,sha256=4b3HPCYe4WOGNXQREJKdHO_rWZJZB_uonO2JVV6X8B8,8313
78
+ absfuyu/util/text_table.py,sha256=THCU-cg9DlatrizxNEXjmtOwNsvr0RDqTnenDES4Nww,13352
79
+ absfuyu/util/zipped.py,sha256=2sc6ltt8gOqlvNvso51KgHWm3zirA59t0-akV-GktFM,3043
80
+ absfuyu-5.10.0.dist-info/METADATA,sha256=Ha58xE1LRJkQfzxobaA1Qb896DKkp4FBm97z4ShEhDg,5673
81
+ absfuyu-5.10.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
82
+ absfuyu-5.10.0.dist-info/entry_points.txt,sha256=bW5CgJRTTWJ2Pywojo07sf-YucRPcnHzMmETh5avbX0,79
83
+ absfuyu-5.10.0.dist-info/licenses/LICENSE,sha256=pFCHBSNSzdXwYG1AHpq7VcofI1NMQ1Fc77RzZ4Ln2O4,1097
84
+ absfuyu-5.10.0.dist-info/RECORD,,
@@ -1,81 +0,0 @@
1
- absfuyu/__init__.py,sha256=4GXrCFNBP_C3xCiQXJQBDHqK1U-z2qnOH-a-hx7I90M,600
2
- absfuyu/__main__.py,sha256=QrbDZr68cfQQL2blREBlEODVJO4-AzbNlqsIkNUMxY8,595
3
- absfuyu/logger.py,sha256=eql9rK-xWJdNr-nIPHozeAMKQXQYHCE07V8HMDieScI,13043
4
- absfuyu/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- absfuyu/sort.py,sha256=LQU8u3iKI-8jcQtduQzduMqE7pGbYm4IbpBig0qlZ9U,3250
6
- absfuyu/typings.py,sha256=oXNUr2CjYpJGuWn_3gEcwMk2mfS1RarFXc99U4pM0l4,4662
7
- absfuyu/version.py,sha256=baNmI4xWUTLhCHNihO5LBGCJRNCH2cW_0wxhwKsufFk,14490
8
- absfuyu/cli/__init__.py,sha256=Fn_6Wc6AaBC5yxvb4XhWhAbZQn8z4CztgkYUY8ZWbdg,1181
9
- absfuyu/cli/color.py,sha256=rRAx7kerRliiZ1aD9f0SgdUjqHmQbxt9qJP6f6LPqPo,1139
10
- absfuyu/cli/config_group.py,sha256=yjERz_TkN1Ly7dJYdTEoXZWFRHK_9BFVXc8dF4aN30Y,1505
11
- absfuyu/cli/do_group.py,sha256=drkZhEjofRoHCPEeZySgmrXddiEUnYBuilssFKaAA6Q,2720
12
- absfuyu/cli/game_group.py,sha256=rg2XmSaMRQTRgeqt5LzxIBExMTea9YpX4h_CfhAeMNE,2623
13
- absfuyu/cli/tool_group.py,sha256=Wdh8z_3Yy1-mkD0AnSBYiPeT2oA-z-1AXOiYbNnuB7A,3416
14
- absfuyu/config/__init__.py,sha256=ob-7gYO5bw90dqa5KFcxtYGMRes0JP3XLErqLD8dv-s,8238
15
- absfuyu/config/config.json,sha256=-ZQnmDuLq0aAFfsrQbSNR3tq5k9Eu9IVUQgYD9htIQM,646
16
- absfuyu/core/__init__.py,sha256=vkHFPkcanVHcy7QrGHzWAnVX9jOUPksNasPWssG0bds,1188
17
- absfuyu/core/baseclass.py,sha256=P2dtQzAxNKy5IrHTvk6o8EuB9S9FfDV474R7EXAnzTU,34824
18
- absfuyu/core/baseclass2.py,sha256=VyDGeTpknJTjFQGDOKtNC9Qa8jPqPcRaoScsVRjdPMk,5367
19
- absfuyu/core/decorator.py,sha256=mFBjl5Ob82pgSmPOD00fa46ojh0IJaRjkE8_pIZg2pk,4176
20
- absfuyu/core/docstring.py,sha256=TPLqFOWKC60wtmy5e54D-rDdA98Fwib-mGlrBQu1iRQ,5791
21
- absfuyu/core/dummy_cli.py,sha256=5M4Q694bxCLKS2VQfFwcPtUqYQEsVELWqfHADUtLbMQ,1884
22
- absfuyu/core/dummy_func.py,sha256=sw84mHy0--7nco0XBj27OAY3LS7XrBKsU6yk7Xw2lF4,1426
23
- absfuyu/dxt/__init__.py,sha256=C4yF4Yg2sTGmwArt9kUEqzZFhHOYeEAAtUjF5dyarx4,986
24
- absfuyu/dxt/dictext.py,sha256=Sl9jbNcApjRZr1m07L1_641Ytpz-8K8yDUouUCbKMJ8,6227
25
- absfuyu/dxt/dxt_support.py,sha256=FmynoHD_CBNiwYEawJu5PxAIPQrZMt9dxYVzAlIPT8s,2109
26
- absfuyu/dxt/intext.py,sha256=l3Cs_QoSdy5x46sNar3u8vnbsfcvyvqyggJ5mYIhNWs,17837
27
- absfuyu/dxt/listext.py,sha256=ntC6Bdj9Yv1L6Z8cDJrVm71OHj2X_IK2VWDOAjLayOc,24497
28
- absfuyu/dxt/strext.py,sha256=rYIOcCunYhzHc3GvuRmzC46giDNfjlQ2RcpnO6kq7Ao,16275
29
- absfuyu/extra/__init__.py,sha256=OfIffS8X5HXGw2gGYq7mHERCV_jbcKquhvAoJmk1VTU,182
30
- absfuyu/extra/beautiful.py,sha256=CN5D0kd6vNQO6cAQ6fCn4LmVAdQZM1oR4MfQajU_Pyc,8137
31
- absfuyu/extra/data_analysis.py,sha256=12_gjG0hSBRRMme9uMmxNTLOpA37C0PPd7Y-kbmxZug,499
32
- absfuyu/extra/pdf.py,sha256=xUHeLyeBS5gD_veHxlLXFg1vkQSoj8JNxRiGGONfB1w,2483
33
- absfuyu/extra/xml.py,sha256=uf1TSy92oiJ6pI7JU6bEK98gZmunNc7I3zZHEhBVGRM,2157
34
- absfuyu/extra/da/__init__.py,sha256=04Y5GHZPOgCezytEOZpDO8LvVbBA1mP4XVymSLsIwh8,973
35
- absfuyu/extra/da/dadf.py,sha256=NxcUo6g1U-2L5IpLsUJfYdvGeulBRm_NylatMiluty8,44234
36
- absfuyu/extra/da/dadf_base.py,sha256=QtK2dfre2lDYaGUfp-b8QzJQcmeL2cK-MB7aoULB6j4,5167
37
- absfuyu/extra/da/df_func.py,sha256=zLMhUFwvkCatcac8SPuY5Y0cHmAJZCzhArgFLqDjJpE,2524
38
- absfuyu/extra/da/mplt.py,sha256=7VRz2XpA5zEMg0F84K6mqY-2YThttxC3v2rhkF3CX1k,6305
39
- absfuyu/fun/__init__.py,sha256=85MO2E00dhR5TM1IElSu9sFV-JqXUmmSWwIyOh48tAw,5605
40
- absfuyu/fun/rubik.py,sha256=GCUakRQPylf97iDGcoFCh_2u4IIFdSjuxh1Dm7C6FUg,29677
41
- absfuyu/fun/tarot.py,sha256=qwjrXhZKVDVkIRG8d_2b13i2hBT49oqUofx8EnizLTA,2401
42
- absfuyu/game/__init__.py,sha256=0fbRxFIoFoan62oe63fiT7smfOfoa5QppV1ZEJqNkrM,4691
43
- absfuyu/game/game_stat.py,sha256=tn-c7HA8FQ7EM7GZ1GTjW8S6ICcxcn9bXT4XZo1bw7Q,1236
44
- absfuyu/game/sudoku.py,sha256=Nas6WHRaEhWOR9Bbo8n6EAVaV6LGvWuMEncMGc0PbBw,10405
45
- absfuyu/game/tictactoe.py,sha256=sn7Z5X6CK9g5xuQBN1FUB1nZpK6jMcmC4iD7wV1oZNY,9958
46
- absfuyu/game/wordle.py,sha256=3Uh9_kfEV9UJtmFOuTcQ2bvj9VqjdhzpU8q8qaa2ttk,101576
47
- absfuyu/general/__init__.py,sha256=3ElmgIW7NdxxxH6g0a2ersgbfIG8LnPNMTdtZphEncY,472
48
- absfuyu/general/content.py,sha256=Np7PpWaxwwZqaYZ3hupRImo3T3mMSePJ98jFNA64a8s,17124
49
- absfuyu/general/human.py,sha256=ibe7d_9jLIunJYlWTPnoTVJTaV1YVN1o_ceWSz2xQrk,8099
50
- absfuyu/general/shape.py,sha256=nDCbcXVvS_1Exw6p9lYHip4asnyjZjri_oMJnZd8xuw,38619
51
- absfuyu/pkg_data/__init__.py,sha256=B-0196p-owupF5BCX55hWLoCMmxI_oaLvjCqZccSRvU,5510
52
- absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
53
- absfuyu/pkg_data/deprecated.py,sha256=LEJYUjeWywyPCA8HOR8i1uQV2zpeslMbLFlerw7qvgU,4349
54
- absfuyu/pkg_data/logo.py,sha256=2oUwPR61Ea_SDntSfeKY_GEFAvMU4fnmTNnNa982cZc,160798
55
- absfuyu/pkg_data/passwordlib_lzma.pkl,sha256=rT5lJT8t42BATU5Cp2qFwbnZkbx-QlUgodSvR0wFY6I,891877
56
- absfuyu/pkg_data/tarot.pkl,sha256=ssXTCC_BQgslO5F-3a9HivbxFQ6BioIe2E1frPVi2m0,56195
57
- absfuyu/tools/__init__.py,sha256=7WbAGoNNETVgRMH9ccbe598-TfzAHRaIhZ8s97HQH0E,916
58
- absfuyu/tools/checksum.py,sha256=-jxXr-BEaSnrwiKeW17YsZ6jtZmTjpEdiSFpSVUps-E,5666
59
- absfuyu/tools/converter.py,sha256=9HiBdJ1IfPQ9pv-IaEDtKUZOg5ScRsiDpZ0FH1vMfX8,13566
60
- absfuyu/tools/generator.py,sha256=G3aeo97jeQwPp4BjEFgLcahFLZOX4ThDmMeA-bNB-F8,13475
61
- absfuyu/tools/inspector.py,sha256=1yVri8hkht7jBETZxb73EKpQfYqCZ_cRL-F75kwjy7o,23951
62
- absfuyu/tools/keygen.py,sha256=8NTUW5Za66a6OpJYPWUyEe9GcSZkGZYRUQm9mAcEVDk,7115
63
- absfuyu/tools/obfuscator.py,sha256=3Jh3yT_axWyAr801O6DKPWuqWA3RxUg1ix8zPnd30co,13671
64
- absfuyu/tools/passwordlib.py,sha256=k4HYiQlT_04zQopbu4S85tPYaipjV2QANbgRiXjGqJI,11080
65
- absfuyu/tools/shutdownizer.py,sha256=lHMwQRlvS3CItdU4G-WWRAVCsjap3_cpGLxZ7-bxaTs,8549
66
- absfuyu/tools/sw.py,sha256=LjXDs_ULrhse1N67RWCaC8hatWZmhNHN9XjOP_UP8Eo,15359
67
- absfuyu/tools/web.py,sha256=fvwqizYvYsk5A0ZBxscdsMk9H9T5G76iSTpC8JRrMOk,1240
68
- absfuyu/util/__init__.py,sha256=3RQW65bZQ-60Lupdnb-v7Lg5qiZopE_rtlH9humrTlY,5989
69
- absfuyu/util/api.py,sha256=5EKVWXJwjCO5Jihd3TFerOgPtQJiG_uXLDAIYxOXugY,4463
70
- absfuyu/util/json_method.py,sha256=N4BE4G9Pjwv5RdfFQk8ItcVgJj8qGtLElZKUk7AZ3r4,2847
71
- absfuyu/util/lunar.py,sha256=_pNJXSRp0hsPNPE3E9y4o5w4Q4ZKODzZDp1ITWRdqXY,13630
72
- absfuyu/util/path.py,sha256=WQ-ObUMCuVVG1bWeIrVxalgiF51TH2-jueKjIeY4On8,23973
73
- absfuyu/util/performance.py,sha256=6c6Vn7NjP48nZEDid8nVYbJgWKzGXeJjvKiBw5JUTxU,12094
74
- absfuyu/util/shorten_number.py,sha256=2rH-0Fmoh1d0TLZHGtrRtBMLj5IBI10Kt_HB_UD8tUc,8312
75
- absfuyu/util/text_table.py,sha256=KboiWX4a0WCzmgEjrlAAMP4UoaWt74mH3BP2zuW2uvE,13351
76
- absfuyu/util/zipped.py,sha256=Ij7FHDu0hhNro3vr2ENi9AAljM1Xlh-T6767MXKJcCY,3042
77
- absfuyu-5.8.0.dist-info/METADATA,sha256=FPatgzdCZS1736oepHSo8qcGlhzESySIVRxxHNfRKgI,5557
78
- absfuyu-5.8.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
79
- absfuyu-5.8.0.dist-info/entry_points.txt,sha256=bW5CgJRTTWJ2Pywojo07sf-YucRPcnHzMmETh5avbX0,79
80
- absfuyu-5.8.0.dist-info/licenses/LICENSE,sha256=pFCHBSNSzdXwYG1AHpq7VcofI1NMQ1Fc77RzZ4Ln2O4,1097
81
- absfuyu-5.8.0.dist-info/RECORD,,