absfuyu 5.0.1__py3-none-any.whl → 5.1.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 (72) 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 +30 -14
  5. absfuyu/cli/config_group.py +9 -2
  6. absfuyu/cli/do_group.py +13 -6
  7. absfuyu/cli/game_group.py +9 -2
  8. absfuyu/cli/tool_group.py +16 -9
  9. absfuyu/config/__init__.py +2 -2
  10. absfuyu/core/__init__.py +2 -2
  11. absfuyu/core/baseclass.py +448 -79
  12. absfuyu/core/baseclass2.py +2 -2
  13. absfuyu/core/decorator.py +69 -3
  14. absfuyu/core/docstring.py +2 -2
  15. absfuyu/core/dummy_cli.py +2 -2
  16. absfuyu/core/dummy_func.py +13 -2
  17. absfuyu/core/typings.py +40 -0
  18. absfuyu/dxt/__init__.py +2 -2
  19. absfuyu/dxt/dictext.py +2 -2
  20. absfuyu/dxt/dxt_support.py +2 -2
  21. absfuyu/dxt/intext.py +31 -3
  22. absfuyu/dxt/listext.py +28 -3
  23. absfuyu/dxt/strext.py +2 -2
  24. absfuyu/extra/__init__.py +2 -2
  25. absfuyu/extra/beautiful.py +2 -2
  26. absfuyu/extra/da/__init__.py +36 -0
  27. absfuyu/extra/da/dadf.py +1138 -0
  28. absfuyu/extra/da/dadf_base.py +186 -0
  29. absfuyu/extra/da/df_func.py +97 -0
  30. absfuyu/extra/da/mplt.py +219 -0
  31. absfuyu/extra/data_analysis.py +10 -1067
  32. absfuyu/fun/__init__.py +2 -2
  33. absfuyu/fun/tarot.py +2 -2
  34. absfuyu/game/__init__.py +2 -2
  35. absfuyu/game/game_stat.py +2 -2
  36. absfuyu/game/sudoku.py +2 -2
  37. absfuyu/game/tictactoe.py +2 -2
  38. absfuyu/game/wordle.py +2 -2
  39. absfuyu/general/__init__.py +2 -2
  40. absfuyu/general/content.py +2 -2
  41. absfuyu/general/human.py +2 -2
  42. absfuyu/general/shape.py +2 -2
  43. absfuyu/logger.py +2 -2
  44. absfuyu/pkg_data/__init__.py +2 -2
  45. absfuyu/pkg_data/deprecated.py +2 -2
  46. absfuyu/sort.py +2 -2
  47. absfuyu/tools/__init__.py +25 -2
  48. absfuyu/tools/checksum.py +27 -7
  49. absfuyu/tools/converter.py +93 -28
  50. absfuyu/tools/generator.py +2 -2
  51. absfuyu/tools/inspector.py +433 -0
  52. absfuyu/tools/keygen.py +2 -2
  53. absfuyu/tools/obfuscator.py +45 -7
  54. absfuyu/tools/passwordlib.py +87 -22
  55. absfuyu/tools/shutdownizer.py +2 -2
  56. absfuyu/tools/web.py +2 -2
  57. absfuyu/util/__init__.py +2 -2
  58. absfuyu/util/api.py +2 -2
  59. absfuyu/util/json_method.py +2 -2
  60. absfuyu/util/lunar.py +2 -2
  61. absfuyu/util/path.py +190 -82
  62. absfuyu/util/performance.py +4 -4
  63. absfuyu/util/shorten_number.py +40 -10
  64. absfuyu/util/text_table.py +272 -0
  65. absfuyu/util/zipped.py +6 -6
  66. absfuyu/version.py +2 -2
  67. {absfuyu-5.0.1.dist-info → absfuyu-5.1.0.dist-info}/METADATA +9 -2
  68. absfuyu-5.1.0.dist-info/RECORD +76 -0
  69. absfuyu-5.0.1.dist-info/RECORD +0 -68
  70. {absfuyu-5.0.1.dist-info → absfuyu-5.1.0.dist-info}/WHEEL +0 -0
  71. {absfuyu-5.0.1.dist-info → absfuyu-5.1.0.dist-info}/entry_points.txt +0 -0
  72. {absfuyu-5.0.1.dist-info → absfuyu-5.1.0.dist-info}/licenses/LICENSE +0 -0
@@ -3,8 +3,8 @@ Absfuyu: Performance
3
3
  --------------------
4
4
  Performance Check
5
5
 
6
- Version: 5.0.0
7
- Date updated: 22/02/2025 (dd/mm/yyyy)
6
+ Version: 5.1.0
7
+ Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
 
9
9
  Feature:
10
10
  --------
@@ -36,7 +36,7 @@ from functools import wraps
36
36
  from inspect import getsource
37
37
  from typing import Any, ParamSpec, TypeVar
38
38
 
39
- from absfuyu.core import versionadded, versionchanged
39
+ from absfuyu.core import deprecated, versionadded, versionchanged
40
40
  from absfuyu.dxt import ListNoDunder
41
41
 
42
42
  # Type
@@ -225,7 +225,7 @@ def retry(retries: int, delay: float = 1):
225
225
 
226
226
  # Class
227
227
  # ---------------------------------------------------------------------------
228
- # TODO: Rewrite this with inspect
228
+ @deprecated("5.1.0", reason="Use `absfuyu.tools.inspector` instead")
229
229
  class Checker:
230
230
  """
231
231
  Check a variable
@@ -3,8 +3,8 @@ Absfuyu: Shorten number
3
3
  -----------------------
4
4
  Short number base on suffixes
5
5
 
6
- Version: 5.0.0
7
- Date updated: 24/02/2025 (dd/mm/yyyy)
6
+ Version: 5.1.0
7
+ Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -156,11 +156,28 @@ class Decimal:
156
156
  """
157
157
  Shorten large number
158
158
 
159
- :param original_value: Value to shorten
160
- :param base: Short by base (must be > 0)
161
- :param suffixes: List of suffixes to use (ascending order)
162
- :param factory: ``UnitSuffixFactory`` to use (will overwrite ``base`` and ``suffixes``)
163
- :param suffix_full_name: Use suffix full name (default: False)
159
+ Parameters
160
+ ----------
161
+ original_value : int | float
162
+ Value to shorten
163
+
164
+ base : int
165
+ Short by base (must be > 0)
166
+
167
+ suffixes : list[str]
168
+ List of suffixes to use (ascending order)
169
+
170
+ factory : UnitSuffixFactory | None
171
+ ``UnitSuffixFactory`` to use
172
+ (will overwrite ``base`` and ``suffixes``)
173
+
174
+ suffix_full_name : bool
175
+ Use suffix full name (available with ``UnitSuffixFactory``), by default ``False``
176
+
177
+ Returns
178
+ -------
179
+ Decimal
180
+ Decimal instance
164
181
  """
165
182
 
166
183
  original_value: int | float = field(repr=False)
@@ -173,6 +190,7 @@ class Decimal:
173
190
  suffix: str = field(init=False)
174
191
 
175
192
  def __post_init__(self) -> None:
193
+ self.base = max(1, self.base) # Make sure that base >= 1
176
194
  self._get_factory()
177
195
  self.value, self.suffix = self._convert_decimal()
178
196
 
@@ -228,9 +246,21 @@ class Decimal:
228
246
  """
229
247
  Convert to string
230
248
 
231
- :param decimal: Round up to which decimal
232
- :param separator: Character between value and suffix, default: ``" "``
233
- :param float_only: Returns value as <float> instead of <int> when ``decimal = 0``
249
+ Parameters
250
+ ----------
251
+ decimal : int, optional
252
+ Round up to which decimal, by default ``2``
253
+
254
+ separator : str, optional
255
+ Character between value and suffix, by default ``" "``
256
+
257
+ float_only : bool, optional
258
+ Returns value as <float> instead of <int> when ``decimal = 0``, by default ``True``
259
+
260
+ Returns
261
+ -------
262
+ str
263
+ Decimal string
234
264
  """
235
265
  val = self.value.__round__(decimal)
236
266
  formatted_value = f"{val:,}"
@@ -0,0 +1,272 @@
1
+ """
2
+ Absufyu: Utilities
3
+ ------------------
4
+ Text table
5
+
6
+ Version: 5.1.0
7
+ Date updated: 10/03/2025 (dd/mm/yyyy)
8
+ """
9
+
10
+ # Module level
11
+ # ---------------------------------------------------------------------------
12
+ __all__ = ["OneColumnTableMaker"]
13
+
14
+
15
+ # Library
16
+ # ---------------------------------------------------------------------------
17
+ import os
18
+ from collections.abc import Sequence
19
+ from enum import StrEnum
20
+ from textwrap import TextWrapper
21
+ from typing import Literal
22
+
23
+ from absfuyu.core import BaseClass
24
+
25
+
26
+ # Style
27
+ # ---------------------------------------------------------------------------
28
+ class BoxDrawingCharacter(StrEnum):
29
+ """
30
+ Box drawing characters - Normal
31
+
32
+ Characters reference: https://en.wikipedia.org/wiki/Box-drawing_characters
33
+ """
34
+
35
+ UPPER_LEFT_CORNER = "\u250c"
36
+ UPPER_RIGHT_CORNER = "\u2510"
37
+ HORIZONTAL = "\u2500"
38
+ VERTICAL = "\u2502"
39
+ LOWER_LEFT_CORNER = "\u2514"
40
+ LOWER_RIGHT_CORNER = "\u2518"
41
+ VERTICAL_RIGHT = "\u251c"
42
+ VERTICAL_LEFT = "\u2524"
43
+ CROSS = "\u253c"
44
+ HORIZONTAL_UP = "\u2534"
45
+ HORIZONTAL_DOWN = "\u252c"
46
+
47
+
48
+ class BoxDrawingCharacterBold(StrEnum):
49
+ """
50
+ Box drawing characters - Bold
51
+
52
+ Characters reference: https://en.wikipedia.org/wiki/Box-drawing_characters
53
+ """
54
+
55
+ UPPER_LEFT_CORNER = "\u250f"
56
+ UPPER_RIGHT_CORNER = "\u2513"
57
+ HORIZONTAL = "\u2501"
58
+ VERTICAL = "\u2503"
59
+ LOWER_LEFT_CORNER = "\u2517"
60
+ LOWER_RIGHT_CORNER = "\u251b"
61
+ VERTICAL_RIGHT = "\u2523"
62
+ VERTICAL_LEFT = "\u252b"
63
+ CROSS = "\u254b"
64
+ HORIZONTAL_UP = "\u253b"
65
+ HORIZONTAL_DOWN = "\u2533"
66
+
67
+
68
+ class BoxDrawingCharacterDashed(StrEnum):
69
+ """
70
+ Box drawing characters - Dashed
71
+
72
+ Characters reference: https://en.wikipedia.org/wiki/Box-drawing_characters
73
+ """
74
+
75
+ UPPER_LEFT_CORNER = "\u250c"
76
+ UPPER_RIGHT_CORNER = "\u2510"
77
+ HORIZONTAL = "\u254c"
78
+ VERTICAL = "\u254e"
79
+ LOWER_LEFT_CORNER = "\u2514"
80
+ LOWER_RIGHT_CORNER = "\u2518"
81
+ VERTICAL_RIGHT = "\u251c"
82
+ VERTICAL_LEFT = "\u2524"
83
+ CROSS = "\u253c"
84
+ HORIZONTAL_UP = "\u2534"
85
+ HORIZONTAL_DOWN = "\u252c"
86
+
87
+
88
+ class BoxDrawingCharacterDouble(StrEnum):
89
+ """
90
+ Box drawing characters - Double
91
+
92
+ Characters reference: https://en.wikipedia.org/wiki/Box-drawing_characters
93
+ """
94
+
95
+ UPPER_LEFT_CORNER = "\u2554"
96
+ UPPER_RIGHT_CORNER = "\u2557"
97
+ HORIZONTAL = "\u2550"
98
+ VERTICAL = "\u2551"
99
+ LOWER_LEFT_CORNER = "\u255a"
100
+ LOWER_RIGHT_CORNER = "\u255d"
101
+ VERTICAL_RIGHT = "\u2560"
102
+ VERTICAL_LEFT = "\u2563"
103
+ CROSS = "\u256c"
104
+ HORIZONTAL_UP = "\u2569"
105
+ HORIZONTAL_DOWN = "\u2566"
106
+
107
+
108
+ # Class
109
+ # ---------------------------------------------------------------------------
110
+ class OneColumnTableMaker(BaseClass):
111
+ """
112
+ Table Maker instance
113
+
114
+ Parameters
115
+ ----------
116
+ ncols : int | None, optional
117
+ Length of the table (include content). Must be >= 5.
118
+ Set to ``None`` to use maximum length,
119
+ defaults to ``88`` when failed to use ``os.get_terminal_size()``.
120
+ By default ``None``
121
+
122
+ style : Literal["normal", "bold", "dashed", "double"], optional
123
+ Style for the table, by default ``"normal"``
124
+ """
125
+
126
+ __slots__ = ("ncols", "_title", "_paragraphs", "_table_char", "_text_wrapper")
127
+
128
+ def __init__(
129
+ self,
130
+ ncols: int | None = None,
131
+ style: Literal["normal", "bold", "dashed", "double"] = "normal",
132
+ ) -> None:
133
+ """
134
+ Table Maker instance
135
+
136
+ Parameters
137
+ ----------
138
+ ncols : int | None, optional
139
+ Length of the table (include content). Must be >= 5.
140
+ Set to ``None`` to use maximum length,
141
+ defaults to ``88`` when failed to use ``os.get_terminal_size()``.
142
+ By default ``None``
143
+
144
+ style : Literal["normal", "bold", "dashed", "double"], optional
145
+ Style for the table, by default ``"normal"``
146
+ """
147
+
148
+ # Text length
149
+ if ncols is None:
150
+ try:
151
+ self.ncols = os.get_terminal_size().columns
152
+ except OSError:
153
+ self.ncols = 88
154
+ else:
155
+ self.ncols = max(5, ncols)
156
+
157
+ # Title & paragraph
158
+ self._title = ""
159
+ self._paragraphs: list[Sequence[str]] = []
160
+
161
+ # Style
162
+ if style == "normal":
163
+ self._table_char = BoxDrawingCharacter
164
+ elif style == "bold":
165
+ self._table_char = BoxDrawingCharacterBold # type: ignore
166
+ elif style == "dashed":
167
+ self._table_char = BoxDrawingCharacterDashed # type: ignore
168
+ elif style == "double":
169
+ self._table_char = BoxDrawingCharacterDouble # type: ignore
170
+ else:
171
+ self._table_char = BoxDrawingCharacter # type: ignore
172
+
173
+ # Text wrapper
174
+ self._text_wrapper = TextWrapper(
175
+ width=self.ncols - 4,
176
+ initial_indent="",
177
+ subsequent_indent="",
178
+ tabsize=4,
179
+ break_long_words=True,
180
+ )
181
+
182
+ def add_title(self, title: str) -> None:
183
+ """
184
+ Add title to Table
185
+
186
+ Parameters
187
+ ----------
188
+ title : str
189
+ Title to add.
190
+ When ``len(title) > ncols``: title will not show
191
+ """
192
+ max_padding_length = self.ncols - 2
193
+ if max_padding_length < (len(title) + 2) or len(title) < 1:
194
+ _title = ""
195
+ else:
196
+ _title = f" {title} "
197
+
198
+ line = (
199
+ f"{self._table_char.UPPER_LEFT_CORNER}"
200
+ f"{_title.center(max_padding_length, self._table_char.HORIZONTAL)}"
201
+ f"{self._table_char.UPPER_RIGHT_CORNER}"
202
+ )
203
+ self._title = line
204
+
205
+ def add_paragraph(self, paragraph: Sequence[str]) -> None:
206
+ """
207
+ Add paragraph into Table
208
+
209
+ Parameters
210
+ ----------
211
+ paragraph : Sequence[str]
212
+ An iterable of str
213
+ """
214
+ if isinstance(paragraph, str):
215
+ self._paragraphs.append([paragraph])
216
+ else:
217
+ self._paragraphs.append(paragraph)
218
+
219
+ def _make_line(self, option: Literal[0, 1, 2]) -> str:
220
+ options = (
221
+ (self._table_char.UPPER_LEFT_CORNER, self._table_char.UPPER_RIGHT_CORNER),
222
+ (self._table_char.VERTICAL_RIGHT, self._table_char.VERTICAL_LEFT),
223
+ (self._table_char.LOWER_LEFT_CORNER, self._table_char.LOWER_RIGHT_CORNER),
224
+ )
225
+ max_line_length = self.ncols - 2
226
+ line = (
227
+ f"{options[option][0]}"
228
+ f"{''.ljust(max_line_length, self._table_char.HORIZONTAL)}"
229
+ f"{options[option][1]}"
230
+ )
231
+ return line
232
+
233
+ def _make_table(self) -> list[str] | None:
234
+ # Check if empty
235
+ if len(self._paragraphs) < 1:
236
+ return None
237
+ if len(self._paragraphs[0]) < 1:
238
+ return None
239
+
240
+ # Make table
241
+ max_content_length = self.ncols - 4
242
+ paragraph_length = len(self._paragraphs)
243
+
244
+ # Line prep
245
+ _first_line = self._make_line(0)
246
+ _sep_line = self._make_line(1)
247
+ _last_line = self._make_line(2)
248
+
249
+ # Table
250
+ table: list[str] = [_first_line] if self._title == "" else [self._title]
251
+ for i, paragraph in enumerate(self._paragraphs, start=1):
252
+ for line in paragraph:
253
+ splitted_line = self._text_wrapper.wrap(line) if len(line) > 0 else [""]
254
+ mod_lines: list[str] = [
255
+ f"{self._table_char.VERTICAL} "
256
+ f"{line.ljust(max_content_length, ' ')}"
257
+ f" {self._table_char.VERTICAL}"
258
+ for line in splitted_line
259
+ ]
260
+ table.extend(mod_lines)
261
+
262
+ if i != paragraph_length:
263
+ table.append(_sep_line)
264
+ else:
265
+ table.append(_last_line)
266
+ return table
267
+
268
+ def make_table(self) -> str:
269
+ table = self._make_table()
270
+ if table is None:
271
+ return ""
272
+ return "\n".join(table)
absfuyu/util/zipped.py CHANGED
@@ -3,15 +3,13 @@ Absfuyu: Zipped
3
3
  ---------------
4
4
  Zipping stuff (deprecated soon, most features already in absfuyu.util.path.Directory)
5
5
 
6
- Version: 5.0.0
7
- Date updated: 22/02/2025 (dd/mm/yyyy)
6
+ Version: 5.1.0
7
+ Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
11
11
  # ---------------------------------------------------------------------------
12
- __all__ = [
13
- "Zipper",
14
- ]
12
+ __all__ = ["Zipper"]
15
13
 
16
14
 
17
15
  # Library
@@ -20,11 +18,13 @@ import shutil
20
18
  import zipfile
21
19
  from pathlib import Path
22
20
 
23
- from absfuyu.core import BaseClass, versionadded
21
+ from absfuyu.core import BaseClass, deprecated, versionadded
24
22
  from absfuyu.logger import logger
25
23
 
26
24
 
25
+ # Class
27
26
  # ---------------------------------------------------------------------------
27
+ @deprecated("5.1.0", reason="Use ``absfuyu.util.path.Directory`` instead")
28
28
  class Zipper(BaseClass):
29
29
  """Zip file or folder"""
30
30
 
absfuyu/version.py CHANGED
@@ -3,8 +3,8 @@ Absfuyu: Version
3
3
  ----------------
4
4
  Package versioning module
5
5
 
6
- Version: 5.0.0
7
- Date updated: 25/02/2025 (dd/mm/yyyy)
6
+ Version: 5.1.0
7
+ Date updated: 10/03/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.0.1
3
+ Version: 5.1.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/
@@ -86,7 +86,7 @@ help(absfuyu)
86
86
 
87
87
  ### Notable features
88
88
 
89
- **absfuyu.core**: Provides foundational components for additional functionalities.
89
+ **absfuyu.core**: Provides base components for additional functionalities.
90
90
 
91
91
  ```python
92
92
  # Decorators that adds info to __doc__
@@ -104,6 +104,13 @@ for x in [DictExt, IntExt, ListExt, Text]:
104
104
  x.show_all_methods(print_result=1)
105
105
  ```
106
106
 
107
+ **absfuyu.tools.Inspector**: An object inspector
108
+
109
+ ```python
110
+ from absfuyu.tools import Inspector
111
+ print(Inspector(Inspector))
112
+ ```
113
+
107
114
  There are many additional features available to explore.
108
115
 
109
116
  ## **DOCUMENTATION:**
@@ -0,0 +1,76 @@
1
+ absfuyu/__init__.py,sha256=MPfDLhEfJJT_AmFbllAkm98G8n2fTwgFHeV5I6mpceM,600
2
+ absfuyu/__main__.py,sha256=ABkOGXf7rO7QS033Dftpa2qA2f78JcXtmvEHL1_r43U,603
3
+ absfuyu/logger.py,sha256=iVV3_ZO8Pr7vemapiIyXN4TPjvSXLE4qKbMMoguHwx0,13043
4
+ absfuyu/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ absfuyu/sort.py,sha256=PELMTOEinksYBEaa1_mUD0Prepi4eMeD73y3kMCKTk0,3250
6
+ absfuyu/version.py,sha256=uuL4CQmZvjhYWGONFG4H5JelVaFKqQcnl47gZQqSr6w,14489
7
+ absfuyu/cli/__init__.py,sha256=V_PyNK-nC5TUGrCZE7iaigjhImT2gFw5mA_yiVRWBUE,1181
8
+ absfuyu/cli/color.py,sha256=TvzLxTH1_uF5miHhdJkxybOXa2bYkKRIuBMlaDC7hbA,1147
9
+ absfuyu/cli/config_group.py,sha256=407VbRz_-FJjy1Gj-gjxyEMe3oANcu7qVLdwoJov_Ac,1505
10
+ absfuyu/cli/do_group.py,sha256=qGEgAx_ysY_HULL4oSrOXou2SJJmIxZvy1OyQqaxjC8,2438
11
+ absfuyu/cli/game_group.py,sha256=2MPgpE_hEFBAsFYobVPAf3X-eUzZYsJXGh0uGNdkGXs,2623
12
+ absfuyu/cli/tool_group.py,sha256=xCNHMGsDkFF1xIQVCm-ubstZeCKjjFgvzq6MOt03eyE,3418
13
+ absfuyu/config/__init__.py,sha256=kuTdGTlt6cvsouAVZxXRjvZXOGPSwWq0EbigZ2ps9cI,8238
14
+ absfuyu/config/config.json,sha256=-ZQnmDuLq0aAFfsrQbSNR3tq5k9Eu9IVUQgYD9htIQM,646
15
+ absfuyu/core/__init__.py,sha256=L4O0yMufkinY7Sep1EqU0793H2vXgKnZ2j0NwgiM9Cg,1186
16
+ absfuyu/core/baseclass.py,sha256=sQIiIIL5cOrdFtm_JV3u30NFXqlctexQNfFp0C-wGM8,22591
17
+ absfuyu/core/baseclass2.py,sha256=e0T_reiN8d0d-YtmHnfwNCBqebEyceEz_Z-4_nXTsKY,5366
18
+ absfuyu/core/decorator.py,sha256=IqMsUL4gsuYnNWH_Hv9XMXE_tzn7DuAwIqzwESgqVbA,4191
19
+ absfuyu/core/docstring.py,sha256=3ApYWaH0mI8P4r7rSbcHBgkmFcAXD8hY52JqUcNW6Ng,5287
20
+ absfuyu/core/dummy_cli.py,sha256=VJYrY3Em-0HbOdVOLVvInh8OOV7he4ZFcvZWMTgbHIs,1884
21
+ absfuyu/core/dummy_func.py,sha256=x327grH4jcBZUJMXkt5R1GrPHxS_NTQHwqvIx31c8SA,1442
22
+ absfuyu/core/typings.py,sha256=IFXkHvT4kNV4ZB1UC5iJ_WB0eDdMKXpfTJL1j-KAs8E,1021
23
+ absfuyu/dxt/__init__.py,sha256=5LvbjQUn_YK8BvyrlcpE969sdyJTcfAbfwQSKaFFbFo,986
24
+ absfuyu/dxt/dictext.py,sha256=UpH3q3rWXahii4MVAx3OSeJK9k-BJhBv0_DL5U-etjw,5998
25
+ absfuyu/dxt/dxt_support.py,sha256=rbc4KT5k2KetE2gQRXbeGa-iA1WfKqlvexnckJuY9BI,2109
26
+ absfuyu/dxt/intext.py,sha256=SXl7qj3yFaju-efwmH78Dp84e7tJSbqgQFAPiAPsXbU,17380
27
+ absfuyu/dxt/listext.py,sha256=ffr-DGBswrMkWHvoDrixYGFQ38tRaoHHcSAmhEaVrI0,14711
28
+ absfuyu/dxt/strext.py,sha256=9l9BOmM18_uCjmh4-nOF2O43kmWjXttIMe3_6QlWBpc,14626
29
+ absfuyu/extra/__init__.py,sha256=vorZl56ZYkI-9L_FUdawi0n2UemRtxMMkSqK95AACZA,182
30
+ absfuyu/extra/beautiful.py,sha256=Bzlh1yWQxfOu1SMYA-EJDviksEHs9zqkYC64jc2Sy4k,8137
31
+ absfuyu/extra/data_analysis.py,sha256=kZU89eWNNdj16CR7HIPBfs9SJNqZw0nafsA5WpKl1B4,568
32
+ absfuyu/extra/da/__init__.py,sha256=vLPcbCwsoGd3hqrsK3Y14p5JEQayvKN0FuqMx-dteig,913
33
+ absfuyu/extra/da/dadf.py,sha256=fvfoOVCAbI2G3_AyHHIXDfBaBMG0fhXPn8e5qMQyFOc,37624
34
+ absfuyu/extra/da/dadf_base.py,sha256=AcwyAUcenBLQKMXprNFAohgFqpQqDq-vuuxaDSlHiEc,5167
35
+ absfuyu/extra/da/df_func.py,sha256=9yxm7k0O_f5KW0BhAuhZf7lWlZLJfd-zaZ7ApHn0QBA,2524
36
+ absfuyu/extra/da/mplt.py,sha256=OmHdvqlbr94wLnbICpuactAf-dCaol6qKM3-63ZcFKU,6305
37
+ absfuyu/fun/__init__.py,sha256=No69qm7BlYwNUuSFYO8GfxqO18FRnINAtn10LoFq7bM,5435
38
+ absfuyu/fun/tarot.py,sha256=25G9ncr5a5DFkcx3pfq8ON7Y76crZSL9vIaPDVzceRQ,2401
39
+ absfuyu/game/__init__.py,sha256=eMNamB9D59Lr5NWqikHsSskOzo0O86w-4wUc2E5mYhA,4691
40
+ absfuyu/game/game_stat.py,sha256=qdcKXVXOorlgiPaePjULXkyRCIc4Gl2qanJ3wp3HMjg,1236
41
+ absfuyu/game/sudoku.py,sha256=kuE2_Yj4DNX5ucx_2cUm2hmPt1YFGAhsXMOc0AutNlg,10405
42
+ absfuyu/game/tictactoe.py,sha256=kd3jm3x6qHa_f0bBuSLgZC4yYjYVLLMyGOnnb8vBBS4,9960
43
+ absfuyu/game/wordle.py,sha256=nSPrYnLC4KXndBRsS87OMUyhacuB5BjrNbDoqPMxVKQ,101576
44
+ absfuyu/general/__init__.py,sha256=QdigyO32IATSvildy8Wz9euKplrhBWo3ZUihtFkozTw,472
45
+ absfuyu/general/content.py,sha256=AWjHVEi3L9E-bFmJsjezMsLkHUiu8HI1mBx0Sl5Vyd4,17122
46
+ absfuyu/general/human.py,sha256=nqxtAq9sOxU7pfaBqy7UvwEoB3pk9-oj1j8wA1wqwn4,8099
47
+ absfuyu/general/shape.py,sha256=2hroh_azs7gkkYLQlay2ayxP_8L5dZX6FcDJjniC-tI,38619
48
+ absfuyu/pkg_data/__init__.py,sha256=YZbaTAAMCVbBgQ_pdkcp8VKT5FPxnf9CEEHCvTXnleU,5510
49
+ absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
50
+ absfuyu/pkg_data/deprecated.py,sha256=gzPZe91S2zFaaUApcmvlZvwfjiTb77vuzBv7Q-yRf_A,4349
51
+ absfuyu/pkg_data/passwordlib_lzma.pkl,sha256=rT5lJT8t42BATU5Cp2qFwbnZkbx-QlUgodSvR0wFY6I,891877
52
+ absfuyu/pkg_data/tarot.pkl,sha256=ssXTCC_BQgslO5F-3a9HivbxFQ6BioIe2E1frPVi2m0,56195
53
+ absfuyu/tools/__init__.py,sha256=-8fUNP5PPcrcmb1HEtEQYPFrRP1_ASptSKxXX3sQ3lk,777
54
+ absfuyu/tools/checksum.py,sha256=H_ynMXYBHfXU0UNI8OF-LRDYsTGkejrLzLp8tLmkQB0,5666
55
+ absfuyu/tools/converter.py,sha256=bVnI1xNGJIVgGq3mmxxWn_GmYkDmwTI5JS-Z4or7o6c,12951
56
+ absfuyu/tools/generator.py,sha256=2gKmJVJToO5ywGM-lEA8AODjEg6VoVHT1D1fSddYbXc,8996
57
+ absfuyu/tools/inspector.py,sha256=ur89cj2Fax-01Jbu-U0og9f2gzPOzk2E1qMC-rTL1XQ,13985
58
+ absfuyu/tools/keygen.py,sha256=tEh-dz6PY29PTiqOCzqWH6j1HxW_7tjgUjdm2kKyRGk,7115
59
+ absfuyu/tools/obfuscator.py,sha256=4zJC1HEkP_EuQohAufQwmsqFA91qeia2wG5n9qaxlU4,13669
60
+ absfuyu/tools/passwordlib.py,sha256=1Iv2lBjodF-fZavnbP70iS9Jvp9O16ziprg0LXnuPok,11128
61
+ absfuyu/tools/shutdownizer.py,sha256=3dEMQITEdDa1MHiEApWW1FUtWSm-0BquKgALt2XZi28,8549
62
+ absfuyu/tools/web.py,sha256=SElkz3b4rewWHP7shbdgIh06g_QoDBdZGnQ-jl3cT0M,1240
63
+ absfuyu/util/__init__.py,sha256=dqqOBqFjNslJJ_sUt23D_HgZEXmxNlexLYnvcS4D7vw,3831
64
+ absfuyu/util/api.py,sha256=JghzqXJy9kAy__M-ZknhthEmOIU5rjJ4le5ZCLV4Bpk,4288
65
+ absfuyu/util/json_method.py,sha256=MjCi0hQg6T992BTnKMCsZixsS6tZhYRZC4BNCJJ5zrc,2197
66
+ absfuyu/util/lunar.py,sha256=VVngR59NfDxcWJlGrbJkcykrnb_F7IOMn_gsfWOZe6Q,13630
67
+ absfuyu/util/path.py,sha256=tOGyvlPxjE64x0vSHYKQs6ABA3c5xPlJ8WXCNmio-MQ,19444
68
+ absfuyu/util/performance.py,sha256=FokAopq44txHUIG-4zU2dKdIVoBMJgGr-iPktLFDjeg,8632
69
+ absfuyu/util/shorten_number.py,sha256=Cbotfqq0NBkOgmMJy3gue56p-PXfXxok7tBWDadN82s,8312
70
+ absfuyu/util/text_table.py,sha256=L5w3mxYezatm-zriqR78_RtYt8oxNzZizYn17hiZz-8,8181
71
+ absfuyu/util/zipped.py,sha256=EfwUDg5eWbu78oRsmr-eST-AdSzyrPU0l8KO4D8dhcQ,3067
72
+ absfuyu-5.1.0.dist-info/METADATA,sha256=gLOnkMbrFEJLDkGuIraAMK32TR31ELNwkFrM0FXhMmo,4965
73
+ absfuyu-5.1.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
74
+ absfuyu-5.1.0.dist-info/entry_points.txt,sha256=bW5CgJRTTWJ2Pywojo07sf-YucRPcnHzMmETh5avbX0,79
75
+ absfuyu-5.1.0.dist-info/licenses/LICENSE,sha256=pFCHBSNSzdXwYG1AHpq7VcofI1NMQ1Fc77RzZ4Ln2O4,1097
76
+ absfuyu-5.1.0.dist-info/RECORD,,
@@ -1,68 +0,0 @@
1
- absfuyu/__init__.py,sha256=pDzdGzKO07dKGuByDoOGJGxanWFB9XKqTNY0BunlEyU,600
2
- absfuyu/__main__.py,sha256=9bLz3WK0oG0jGTLE9pd3e3j3ldVaCfO2dsLFNneJ6fU,603
3
- absfuyu/logger.py,sha256=zEu8Px0kCmdeMtawf8UWb_fwff1_ZG45U0iUjI6g9GU,13043
4
- absfuyu/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
- absfuyu/sort.py,sha256=BsXuDMuO-Q6hUZwmFspyLo5jc7rxgBFSdektIlVJ0BQ,3250
6
- absfuyu/version.py,sha256=Smkc97D0lbfLcMFuMyfBqCmsKjgo7ws-NqbMmL9I4_Q,14489
7
- absfuyu/cli/__init__.py,sha256=QQv0pYorucbEoeTydtHVPwMdpiiMK_eWTxinZgQviS8,1181
8
- absfuyu/cli/color.py,sha256=S_y20gw4FEVtc_cCdRjxGW8HALi2vvRT8YurmwjMH54,774
9
- absfuyu/cli/config_group.py,sha256=fvWkm70LnIiL6yc9Fn7Dlg32xsjiADyLAnS3_dx1VOE,1230
10
- absfuyu/cli/do_group.py,sha256=8ZwtNEZ7nadPIr-KH-Dwj1y4trZsKOgUwiof52zbUYM,2131
11
- absfuyu/cli/game_group.py,sha256=21U-8QCIZtdWf6fYBPip-sT0YvP4yoB9FmogW6NSCwA,2348
12
- absfuyu/cli/tool_group.py,sha256=Sx3HJHJTtsEaagsCxykrkwgp3ft9aH6BRAqs1V4mI0Q,3164
13
- absfuyu/config/__init__.py,sha256=4SrWqzP_PyIjMH9QT4JjSzJqtsOWmUFlEJeoCjGd_3g,8238
14
- absfuyu/config/config.json,sha256=-ZQnmDuLq0aAFfsrQbSNR3tq5k9Eu9IVUQgYD9htIQM,646
15
- absfuyu/core/__init__.py,sha256=vs2FCaiXoiG0v7nRMKMickfHbeC_quTtj6JiZpI7-iU,1186
16
- absfuyu/core/baseclass.py,sha256=hNmqP8YIBuNUXGduNck31rXXuZ4smTUPbMKBV-Gj41Q,10204
17
- absfuyu/core/baseclass2.py,sha256=4MZTUz8WSzJn-uGY5-lSHTzkDCsRDgLnntvMwQaF8_s,5366
18
- absfuyu/core/decorator.py,sha256=MpmgAb1gsXgRDEyMJLvSxUWEG0WC4aTFYJAEwjdauAI,1901
19
- absfuyu/core/docstring.py,sha256=1QaqnbQLVB9qjPz2a_oCFG04XxXmOM8yWUdEVmYzYCc,5287
20
- absfuyu/core/dummy_cli.py,sha256=_-Gsmg2beO7fTSP-3nSGwqVmiVKpzTICIuHfGetQbw8,1884
21
- absfuyu/core/dummy_func.py,sha256=msbauMSxlbbzLzgdJqeydhAF-R4WZiA5_h6h2_8809U,1221
22
- absfuyu/dxt/__init__.py,sha256=XvvcsN9Ax9ywFEuvlq4JEY4Mto3_qhp56JgWwCiWUPY,986
23
- absfuyu/dxt/dictext.py,sha256=aiCvNhdDQvuYteVKptLkpC0ni9rIbN26cYEPKpIbqps,5998
24
- absfuyu/dxt/dxt_support.py,sha256=7xo2-gQWfgsqvLdh7pcyK1rx4XU1-G7nWx0VbKQ69tQ,2109
25
- absfuyu/dxt/intext.py,sha256=h9p8OEzb0--8u7wq50BfGG1ExY7egV_Yh8CgP2hKsdw,16716
26
- absfuyu/dxt/listext.py,sha256=_sCdbnKsEAR-V60wIZxyCtXIRA7HzTu6WvIgSb_TDjQ,13964
27
- absfuyu/dxt/strext.py,sha256=5YWpDz-6lZH500KcQXyQRZ_7bsRWBROfTZi0Mkr5b00,14626
28
- absfuyu/extra/__init__.py,sha256=fd7WZQYt_aRsTxih5n_DvXY-5PIGCawzia4uQ5Y3huc,182
29
- absfuyu/extra/beautiful.py,sha256=Ae0zhieHIbMMIJUsxDmMEEw1X14CcoyAgr-Ic2YYR9I,8137
30
- absfuyu/extra/data_analysis.py,sha256=fqJgmHv9KRP2SHFTUWGMPCB8zMgfXni1jMWwn1mPYRU,32005
31
- absfuyu/fun/__init__.py,sha256=20kZpFoivJXhV9oHUHOuiPCbcGvQWFE9v62EUkj4cyU,5435
32
- absfuyu/fun/tarot.py,sha256=xIJNKAxgDckE4UNn8lBaLMasOT1md04BaDI_h23AmsA,2401
33
- absfuyu/game/__init__.py,sha256=iKrXSOFCFFCwQVHNIRJp1ItNqSOGRQHb-31_MamVE3U,4691
34
- absfuyu/game/game_stat.py,sha256=OMMz4iyyMxvEHbhVEka2uEDtREyidcOO-HX5XZi5G88,1236
35
- absfuyu/game/sudoku.py,sha256=yJt950Lwcbq-sxXw-lyi1bB1Ds0y9vqYfKNRzfXwRLY,10405
36
- absfuyu/game/tictactoe.py,sha256=2VV0wM3pi1weVjTR0Yp0hiWqN09yPcHeUXoqa9YVI4U,9960
37
- absfuyu/game/wordle.py,sha256=cD0AOhXp5uOnyEh6vtTODmJyXcjSmQz27Di3y6xB9JM,101576
38
- absfuyu/general/__init__.py,sha256=OamzZUsVcaPcwA5wA5PYPv5xl-GHmAO9cL-vzX4TJy0,472
39
- absfuyu/general/content.py,sha256=5wWYto6Na8SMyA6Lh5_C_cgKNok_JCDhQCQhsImNCBQ,17122
40
- absfuyu/general/human.py,sha256=o1TswjgN8zRfCmkEgchS1HVq036twBB64u1Dt4KLI1I,8099
41
- absfuyu/general/shape.py,sha256=GclEwdKtciPaGsZIDpmIDvC7UiHcRKRaxIi7yqBTnfs,38619
42
- absfuyu/pkg_data/__init__.py,sha256=gWOdNVaisaMfn2XBYAammTytGwZK_iTKMgyirhNCN3I,5510
43
- absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
44
- absfuyu/pkg_data/deprecated.py,sha256=NG8aqVPrC08xPBZb1n1FwNTGi2ah03zzcrp8zieaf1k,4349
45
- absfuyu/pkg_data/passwordlib_lzma.pkl,sha256=rT5lJT8t42BATU5Cp2qFwbnZkbx-QlUgodSvR0wFY6I,891877
46
- absfuyu/pkg_data/tarot.pkl,sha256=ssXTCC_BQgslO5F-3a9HivbxFQ6BioIe2E1frPVi2m0,56195
47
- absfuyu/tools/__init__.py,sha256=u5IvTdxpr1uEE9nPXmMaDzFHGZRja_CTwKYs505N8C8,118
48
- absfuyu/tools/checksum.py,sha256=cA0jL7IX7CLMuunZfiaTVZNnfg0CEy8LXaxX_UnlNuo,5156
49
- absfuyu/tools/converter.py,sha256=QxWPHSJtl-_i3q8LaKWeIcdUDkkhhO7jty1K-SgQYCY,11615
50
- absfuyu/tools/generator.py,sha256=C54TJ3DZ5TXFYRI7_jLdtjTMcWxACX4Jmlo27Zh90Ew,8996
51
- absfuyu/tools/keygen.py,sha256=JxhUiiaUHaGqVicXY46JjVrH3ke2QlnsRJqgIvlxUsg,7115
52
- absfuyu/tools/obfuscator.py,sha256=c1tBG3nbGFi7ejjRbxgBMSYV8sBQCy9Ko6r9iBO3UwY,12685
53
- absfuyu/tools/passwordlib.py,sha256=s_Z9EoHCnEpHwvei5Yigo9VKkDL3sNPUkDeg8cjfSWk,9630
54
- absfuyu/tools/shutdownizer.py,sha256=z5z5ofdAtOBat1m7lz95FwXZI0fMarl2mChBMwUMi4I,8549
55
- absfuyu/tools/web.py,sha256=JHeW9koW_5uRwE507_mtNJ8v0R7W2yvjDxJSClkWzLM,1240
56
- absfuyu/util/__init__.py,sha256=h23kB8cx4-KLMiRPFnHlxTYVqt4ortI8wCc9vUc5UVg,3831
57
- absfuyu/util/api.py,sha256=gd3QCuxRfOmiGhUpN3qqdWfD0o3VFOafbKplEwWpcz0,4288
58
- absfuyu/util/json_method.py,sha256=a4xVabcw18HBLJthkmf5KNUcQya45-A8AFEpcGIDx3Q,2197
59
- absfuyu/util/lunar.py,sha256=P6hF6H4BmJcY0S2Jq0_TkcaiLU5O-CnyfHYoLaWTx00,13630
60
- absfuyu/util/path.py,sha256=ehKib-zSISx0XguRr-OlRnNlmR27rhVSfDGmjqh6CCg,16434
61
- absfuyu/util/performance.py,sha256=kZbgC8CPEjzO8JWrTjT1NqAkQ3022M4zzp7G3caeUbk,8585
62
- absfuyu/util/shorten_number.py,sha256=401H1k0wxc2W6qycH_gsEGtUmYdJt6KRzMNR4m94W38,7788
63
- absfuyu/util/zipped.py,sha256=nJzKxLwle9wSiKL-615J40ARiK2y0mGCwNYJ0fOCHus,2979
64
- absfuyu-5.0.1.dist-info/METADATA,sha256=ypxRsGR4WuBk9BMllZqqanH766SY5mUswgvVnHVUcpI,4844
65
- absfuyu-5.0.1.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
66
- absfuyu-5.0.1.dist-info/entry_points.txt,sha256=bW5CgJRTTWJ2Pywojo07sf-YucRPcnHzMmETh5avbX0,79
67
- absfuyu-5.0.1.dist-info/licenses/LICENSE,sha256=pFCHBSNSzdXwYG1AHpq7VcofI1NMQ1Fc77RzZ4Ln2O4,1097
68
- absfuyu-5.0.1.dist-info/RECORD,,