absfuyu 5.0.1__py3-none-any.whl → 5.2.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 +3 -3
  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 +15 -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 +70 -4
  14. absfuyu/core/docstring.py +43 -25
  15. absfuyu/core/dummy_cli.py +2 -2
  16. absfuyu/core/dummy_func.py +15 -4
  17. absfuyu/dxt/__init__.py +2 -2
  18. absfuyu/dxt/dictext.py +5 -2
  19. absfuyu/dxt/dxt_support.py +2 -2
  20. absfuyu/dxt/intext.py +34 -3
  21. absfuyu/dxt/listext.py +300 -113
  22. absfuyu/dxt/strext.py +75 -15
  23. absfuyu/extra/__init__.py +2 -2
  24. absfuyu/extra/beautiful.py +2 -2
  25. absfuyu/extra/da/__init__.py +36 -0
  26. absfuyu/extra/da/dadf.py +1177 -0
  27. absfuyu/extra/da/dadf_base.py +186 -0
  28. absfuyu/extra/da/df_func.py +97 -0
  29. absfuyu/extra/da/mplt.py +219 -0
  30. absfuyu/extra/data_analysis.py +10 -1067
  31. absfuyu/fun/__init__.py +2 -2
  32. absfuyu/fun/tarot.py +2 -2
  33. absfuyu/game/__init__.py +2 -2
  34. absfuyu/game/game_stat.py +2 -2
  35. absfuyu/game/sudoku.py +2 -2
  36. absfuyu/game/tictactoe.py +2 -3
  37. absfuyu/game/wordle.py +2 -2
  38. absfuyu/general/__init__.py +2 -2
  39. absfuyu/general/content.py +2 -2
  40. absfuyu/general/human.py +2 -2
  41. absfuyu/general/shape.py +2 -2
  42. absfuyu/logger.py +2 -2
  43. absfuyu/pkg_data/__init__.py +2 -2
  44. absfuyu/pkg_data/deprecated.py +2 -2
  45. absfuyu/sort.py +2 -2
  46. absfuyu/tools/__init__.py +28 -2
  47. absfuyu/tools/checksum.py +27 -7
  48. absfuyu/tools/converter.py +120 -34
  49. absfuyu/tools/generator.py +251 -110
  50. absfuyu/tools/inspector.py +463 -0
  51. absfuyu/tools/keygen.py +2 -2
  52. absfuyu/tools/obfuscator.py +45 -7
  53. absfuyu/tools/passwordlib.py +88 -24
  54. absfuyu/tools/shutdownizer.py +2 -2
  55. absfuyu/tools/web.py +2 -2
  56. absfuyu/typings.py +136 -0
  57. absfuyu/util/__init__.py +18 -4
  58. absfuyu/util/api.py +36 -16
  59. absfuyu/util/json_method.py +43 -14
  60. absfuyu/util/lunar.py +2 -2
  61. absfuyu/util/path.py +190 -82
  62. absfuyu/util/performance.py +122 -7
  63. absfuyu/util/shorten_number.py +40 -10
  64. absfuyu/util/text_table.py +306 -0
  65. absfuyu/util/zipped.py +8 -7
  66. absfuyu/version.py +2 -2
  67. {absfuyu-5.0.1.dist-info → absfuyu-5.2.0.dist-info}/METADATA +9 -2
  68. absfuyu-5.2.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.2.0.dist-info}/WHEEL +0 -0
  71. {absfuyu-5.0.1.dist-info → absfuyu-5.2.0.dist-info}/entry_points.txt +0 -0
  72. {absfuyu-5.0.1.dist-info → absfuyu-5.2.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,306 @@
1
+ """
2
+ Absufyu: Utilities
3
+ ------------------
4
+ Text table
5
+
6
+ Version: 5.2.0
7
+ Date updated: 13/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, Protocol, cast
22
+
23
+ from absfuyu.core import BaseClass
24
+
25
+
26
+ # Style
27
+ # ---------------------------------------------------------------------------
28
+ class BoxDrawingCharacter(Protocol):
29
+ UPPER_LEFT_CORNER: str = ""
30
+ UPPER_RIGHT_CORNER: str = ""
31
+ HORIZONTAL: str = ""
32
+ VERTICAL: str = ""
33
+ LOWER_LEFT_CORNER: str = ""
34
+ LOWER_RIGHT_CORNER: str = ""
35
+ VERTICAL_RIGHT: str = ""
36
+ VERTICAL_LEFT: str = ""
37
+ CROSS: str = ""
38
+ HORIZONTAL_UP: str = ""
39
+ HORIZONTAL_DOWN: str = ""
40
+
41
+
42
+ class BoxDrawingCharacterNormal(StrEnum):
43
+ """
44
+ Box drawing characters - Normal
45
+
46
+ Characters reference: https://en.wikipedia.org/wiki/Box-drawing_characters
47
+ """
48
+
49
+ UPPER_LEFT_CORNER = "\u250c"
50
+ UPPER_RIGHT_CORNER = "\u2510"
51
+ HORIZONTAL = "\u2500"
52
+ VERTICAL = "\u2502"
53
+ LOWER_LEFT_CORNER = "\u2514"
54
+ LOWER_RIGHT_CORNER = "\u2518"
55
+ VERTICAL_RIGHT = "\u251c"
56
+ VERTICAL_LEFT = "\u2524"
57
+ CROSS = "\u253c"
58
+ HORIZONTAL_UP = "\u2534"
59
+ HORIZONTAL_DOWN = "\u252c"
60
+
61
+
62
+ class BoxDrawingCharacterBold(StrEnum):
63
+ """
64
+ Box drawing characters - Bold
65
+
66
+ Characters reference: https://en.wikipedia.org/wiki/Box-drawing_characters
67
+ """
68
+
69
+ UPPER_LEFT_CORNER = "\u250f"
70
+ UPPER_RIGHT_CORNER = "\u2513"
71
+ HORIZONTAL = "\u2501"
72
+ VERTICAL = "\u2503"
73
+ LOWER_LEFT_CORNER = "\u2517"
74
+ LOWER_RIGHT_CORNER = "\u251b"
75
+ VERTICAL_RIGHT = "\u2523"
76
+ VERTICAL_LEFT = "\u252b"
77
+ CROSS = "\u254b"
78
+ HORIZONTAL_UP = "\u253b"
79
+ HORIZONTAL_DOWN = "\u2533"
80
+
81
+
82
+ class BoxDrawingCharacterDashed(StrEnum):
83
+ """
84
+ Box drawing characters - Dashed
85
+
86
+ Characters reference: https://en.wikipedia.org/wiki/Box-drawing_characters
87
+ """
88
+
89
+ UPPER_LEFT_CORNER = "\u250c"
90
+ UPPER_RIGHT_CORNER = "\u2510"
91
+ HORIZONTAL = "\u254c"
92
+ VERTICAL = "\u254e"
93
+ LOWER_LEFT_CORNER = "\u2514"
94
+ LOWER_RIGHT_CORNER = "\u2518"
95
+ VERTICAL_RIGHT = "\u251c"
96
+ VERTICAL_LEFT = "\u2524"
97
+ CROSS = "\u253c"
98
+ HORIZONTAL_UP = "\u2534"
99
+ HORIZONTAL_DOWN = "\u252c"
100
+
101
+
102
+ class BoxDrawingCharacterDouble(StrEnum):
103
+ """
104
+ Box drawing characters - Double
105
+
106
+ Characters reference: https://en.wikipedia.org/wiki/Box-drawing_characters
107
+ """
108
+
109
+ UPPER_LEFT_CORNER = "\u2554"
110
+ UPPER_RIGHT_CORNER = "\u2557"
111
+ HORIZONTAL = "\u2550"
112
+ VERTICAL = "\u2551"
113
+ LOWER_LEFT_CORNER = "\u255a"
114
+ LOWER_RIGHT_CORNER = "\u255d"
115
+ VERTICAL_RIGHT = "\u2560"
116
+ VERTICAL_LEFT = "\u2563"
117
+ CROSS = "\u256c"
118
+ HORIZONTAL_UP = "\u2569"
119
+ HORIZONTAL_DOWN = "\u2566"
120
+
121
+
122
+ def get_box_drawing_character(
123
+ style: Literal["normal", "bold", "dashed", "double"] = "normal",
124
+ ) -> BoxDrawingCharacter:
125
+ """
126
+ Choose style for Box drawing characters.
127
+
128
+ Parameters
129
+ ----------
130
+ style : Literal["normal", "bold", "dashed", "double"], optional
131
+ Style for the table, by default ``"normal"``
132
+
133
+ Returns
134
+ -------
135
+ BoxDrawingCharacter
136
+ Box drawing characters in specified style.
137
+ """
138
+
139
+ if style.lower() == "normal":
140
+ return cast(BoxDrawingCharacter, BoxDrawingCharacterNormal)
141
+ elif style.lower() == "bold":
142
+ return cast(BoxDrawingCharacter, BoxDrawingCharacterBold)
143
+ elif style.lower() == "dashed":
144
+ return cast(BoxDrawingCharacter, BoxDrawingCharacterDashed)
145
+ elif style.lower() == "double":
146
+ return cast(BoxDrawingCharacter, BoxDrawingCharacterDouble)
147
+ else:
148
+ return cast(BoxDrawingCharacter, BoxDrawingCharacterNormal)
149
+
150
+
151
+ # Class
152
+ # ---------------------------------------------------------------------------
153
+ class OneColumnTableMaker(BaseClass):
154
+ """
155
+ Table Maker instance
156
+
157
+ Parameters
158
+ ----------
159
+ ncols : int | None, optional
160
+ Length of the table (include content). Must be >= 5.
161
+ Set to ``None`` to use maximum length,
162
+ defaults to ``88`` when failed to use ``os.get_terminal_size()``.
163
+ By default ``None``
164
+
165
+ style : Literal["normal", "bold", "dashed", "double"], optional
166
+ Style for the table, by default ``"normal"``
167
+ """
168
+
169
+ __slots__ = ("ncols", "_title", "_paragraphs", "_table_char", "_text_wrapper")
170
+
171
+ def __init__(
172
+ self,
173
+ ncols: int | None = None,
174
+ style: Literal["normal", "bold", "dashed", "double"] = "normal",
175
+ ) -> None:
176
+ """
177
+ Table Maker instance
178
+
179
+ Parameters
180
+ ----------
181
+ ncols : int | None, optional
182
+ Length of the table (include content). Must be >= 5.
183
+ Set to ``None`` to use maximum length,
184
+ defaults to ``88`` when failed to use ``os.get_terminal_size()``.
185
+ By default ``None``
186
+
187
+ style : Literal["normal", "bold", "dashed", "double"], optional
188
+ Style for the table, by default ``"normal"``
189
+ """
190
+
191
+ # Text length
192
+ if ncols is None:
193
+ try:
194
+ self.ncols = os.get_terminal_size().columns
195
+ except OSError:
196
+ self.ncols = 88
197
+ else:
198
+ self.ncols = max(5, ncols)
199
+
200
+ # Title & paragraph
201
+ self._title = ""
202
+ self._paragraphs: list[Sequence[str]] = []
203
+
204
+ # Style
205
+ self._table_char = get_box_drawing_character(style=style)
206
+
207
+ # Text wrapper
208
+ self._text_wrapper = TextWrapper(
209
+ width=self.ncols - 4,
210
+ initial_indent="",
211
+ subsequent_indent="",
212
+ tabsize=4,
213
+ break_long_words=True,
214
+ )
215
+
216
+ def add_title(self, title: str) -> None:
217
+ """
218
+ Add title to Table
219
+
220
+ Parameters
221
+ ----------
222
+ title : str
223
+ Title to add.
224
+ When ``len(title) > ncols``: title will not show
225
+ """
226
+ max_padding_length = self.ncols - 2
227
+ if max_padding_length < (len(title) + 2) or len(title) < 1:
228
+ _title = ""
229
+ else:
230
+ _title = f" {title} "
231
+
232
+ line = (
233
+ f"{self._table_char.UPPER_LEFT_CORNER}"
234
+ f"{_title.center(max_padding_length, self._table_char.HORIZONTAL)}"
235
+ f"{self._table_char.UPPER_RIGHT_CORNER}"
236
+ )
237
+ self._title = line
238
+
239
+ def add_paragraph(self, paragraph: Sequence[str]) -> None:
240
+ """
241
+ Add paragraph into Table
242
+
243
+ Parameters
244
+ ----------
245
+ paragraph : Sequence[str]
246
+ An iterable of str
247
+ """
248
+ if isinstance(paragraph, str):
249
+ self._paragraphs.append([paragraph])
250
+ else:
251
+ self._paragraphs.append(paragraph)
252
+
253
+ def _make_line(self, option: Literal[0, 1, 2]) -> str:
254
+ options = (
255
+ (self._table_char.UPPER_LEFT_CORNER, self._table_char.UPPER_RIGHT_CORNER),
256
+ (self._table_char.VERTICAL_RIGHT, self._table_char.VERTICAL_LEFT),
257
+ (self._table_char.LOWER_LEFT_CORNER, self._table_char.LOWER_RIGHT_CORNER),
258
+ )
259
+ max_line_length = self.ncols - 2
260
+ line = (
261
+ f"{options[option][0]}"
262
+ f"{''.ljust(max_line_length, self._table_char.HORIZONTAL)}"
263
+ f"{options[option][1]}"
264
+ )
265
+ return line
266
+
267
+ def _make_table(self) -> list[str] | None:
268
+ # Check if empty
269
+ if len(self._paragraphs) < 1:
270
+ return None
271
+ if len(self._paragraphs[0]) < 1:
272
+ return None
273
+
274
+ # Make table
275
+ max_content_length = self.ncols - 4
276
+ paragraph_length = len(self._paragraphs)
277
+
278
+ # Line prep
279
+ _first_line = self._make_line(0)
280
+ _sep_line = self._make_line(1)
281
+ _last_line = self._make_line(2)
282
+
283
+ # Table
284
+ table: list[str] = [_first_line] if self._title == "" else [self._title]
285
+ for i, paragraph in enumerate(self._paragraphs, start=1):
286
+ for line in paragraph:
287
+ splitted_line = self._text_wrapper.wrap(line) if len(line) > 0 else [""]
288
+ mod_lines: list[str] = [
289
+ f"{self._table_char.VERTICAL} "
290
+ f"{line.ljust(max_content_length, ' ')}"
291
+ f" {self._table_char.VERTICAL}"
292
+ for line in splitted_line
293
+ ]
294
+ table.extend(mod_lines)
295
+
296
+ if i != paragraph_length:
297
+ table.append(_sep_line)
298
+ else:
299
+ table.append(_last_line)
300
+ return table
301
+
302
+ def make_table(self) -> str:
303
+ table = self._make_table()
304
+ if table is None:
305
+ return ""
306
+ return "\n".join(table)
absfuyu/util/zipped.py CHANGED
@@ -1,17 +1,16 @@
1
1
  """
2
2
  Absfuyu: Zipped
3
3
  ---------------
4
- Zipping stuff (deprecated soon, most features already in absfuyu.util.path.Directory)
4
+ Zipping stuff
5
+ (deprecated, use absfuyu.util.path.Directory)
5
6
 
6
- Version: 5.0.0
7
- Date updated: 22/02/2025 (dd/mm/yyyy)
7
+ Version: 5.2.0
8
+ Date updated: 16/03/2025 (dd/mm/yyyy)
8
9
  """
9
10
 
10
11
  # Module level
11
12
  # ---------------------------------------------------------------------------
12
- __all__ = [
13
- "Zipper",
14
- ]
13
+ __all__ = ["Zipper"]
15
14
 
16
15
 
17
16
  # Library
@@ -20,11 +19,13 @@ import shutil
20
19
  import zipfile
21
20
  from pathlib import Path
22
21
 
23
- from absfuyu.core import BaseClass, versionadded
22
+ from absfuyu.core import BaseClass, deprecated, versionadded
24
23
  from absfuyu.logger import logger
25
24
 
26
25
 
26
+ # Class
27
27
  # ---------------------------------------------------------------------------
28
+ @deprecated("5.1.0", reason="Use ``absfuyu.util.path.Directory`` instead")
28
29
  class Zipper(BaseClass):
29
30
  """Zip file or folder"""
30
31
 
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.2.0
7
+ Date updated: 15/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.2.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=Me_UQT0wqp5GPpohk7HBD3ijJdIsIafBJJI6vn_SRDQ,600
2
+ absfuyu/__main__.py,sha256=j6vPe7oFtED_nC__UeSsmoNiE474ErYW-gVpQmRKQ0c,595
3
+ absfuyu/logger.py,sha256=J-O12HYtQzP8Zm_4NtpzBQruAbqxSgsOtH4MKGJJAs8,13043
4
+ absfuyu/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
5
+ absfuyu/sort.py,sha256=vl48Ijm16Jasj5unp3HLU0d-7jN-FihOoyI_x8wBUlA,3250
6
+ absfuyu/typings.py,sha256=b6HfKgOFC6Nw9wcPr57jhMvH4YrvJIGfMBWji9qYXKU,4598
7
+ absfuyu/version.py,sha256=HxRg7XUVfBKVgAebxK9YrPbys_sVTEKqHD1QW4VdEOM,14489
8
+ absfuyu/cli/__init__.py,sha256=81GpY_LfmtMBdFdBbkti-YUAdBgzVxRXiXCdM7PgJKM,1181
9
+ absfuyu/cli/color.py,sha256=s64Sq7O_2ICJgWle8msh3tpoirlG8wEVsm7w7tba3eM,1139
10
+ absfuyu/cli/config_group.py,sha256=Y4M7FlXUJcLhTC_Vzul-xW7VQ-CGGi2SiYJiY2NK3DI,1505
11
+ absfuyu/cli/do_group.py,sha256=cVqYN5t0WTWRzvY0WdsCSWZcW-n2JR0JMpYGWOVRKUs,2438
12
+ absfuyu/cli/game_group.py,sha256=L621kuN4ncpFakxB2sofuByivA-ySr1ZFZrur8uXnCA,2623
13
+ absfuyu/cli/tool_group.py,sha256=RV_Fnap66KGm33DgvTZsPHenhbMx9IwYZgvNzVA7cj0,3416
14
+ absfuyu/config/__init__.py,sha256=ZpWb3yuO_9UgmZiDzuvwMXyeJMMMLP8xRrw25fjLpHY,8238
15
+ absfuyu/config/config.json,sha256=-ZQnmDuLq0aAFfsrQbSNR3tq5k9Eu9IVUQgYD9htIQM,646
16
+ absfuyu/core/__init__.py,sha256=PQf_DHqI5zU-TIQbiARfF5mQG4R77FiX-5ySOZfJ9wY,1186
17
+ absfuyu/core/baseclass.py,sha256=x3UIToKNZo09w6xVC_MWQrhZcZJ7q_nFq7sr9s-Ts7g,22591
18
+ absfuyu/core/baseclass2.py,sha256=NWCeAmS5-coLlq1Q9Y9ouFe1mefA0Q9YRKnhCeBx6yA,5366
19
+ absfuyu/core/decorator.py,sha256=xnzIFMcVfxfm7Den4QnZ4AEaHSdszcHSpWyPABm4YPY,4176
20
+ absfuyu/core/docstring.py,sha256=gAVovS1zVn_H9e-xkNY4xQtEQMf_p3PRpdTfpGqA5_A,5791
21
+ absfuyu/core/dummy_cli.py,sha256=hqsjrEbT-BPLRaODdoslwc53YQyM67Rse057gvlnOSo,1884
22
+ absfuyu/core/dummy_func.py,sha256=1XK6E3RDoQqN7eYkuGpoo025g0JcEHrBFrVZz71XIlk,1426
23
+ absfuyu/dxt/__init__.py,sha256=c-KOWD7LNwV6cBRv9RjEP2D6C8lBhx8Q0CtdcXFA0_Q,986
24
+ absfuyu/dxt/dictext.py,sha256=Sp4jMPvKLb61nU6g4JJ86dsxIhlc3eZXTsys1oXy41M,6073
25
+ absfuyu/dxt/dxt_support.py,sha256=dB313kVTWRVHGhsA2daNBjmU3xNz6_B72Cn6JbgvvpE,2109
26
+ absfuyu/dxt/intext.py,sha256=9fV9-CsY1mbaH6k3BkLo1nSn99JN1M0m2ES2zQpuXDE,17454
27
+ absfuyu/dxt/listext.py,sha256=Hr3b6B2si6pbzI_vEmGr2_PiTQpQN2ICcrIrSN5JPPw,19328
28
+ absfuyu/dxt/strext.py,sha256=ILOtcbF23qWX_relkW8HWNnJCGouIDEh2X5OAXDHNWk,16257
29
+ absfuyu/extra/__init__.py,sha256=w47uEx0KkUfSVuX9_WYM2xVBcfHd93b9YzTlWs8dkwc,182
30
+ absfuyu/extra/beautiful.py,sha256=OjaNY457I7eePklQ8sN6I1b11QrkmIzra8IW-Aj3NlM,8137
31
+ absfuyu/extra/data_analysis.py,sha256=AZA4V-c-ZBe7Zkv1_P6exSyWr5UjHmH5Dv0P1MxVXw8,499
32
+ absfuyu/extra/da/__init__.py,sha256=S-jDX96fQ7s6mFxCNFrkqM4ckQGuEAHdCMN4TgzASkw,913
33
+ absfuyu/extra/da/dadf.py,sha256=duhZwbHBm2F5g_QY_gTx1JK1segxKyVsg-wIr4t9q-Y,38688
34
+ absfuyu/extra/da/dadf_base.py,sha256=IhJiYu4whWjkV6hUBrvHF9kRdXyCO2swwt2_GfvNAu8,5167
35
+ absfuyu/extra/da/df_func.py,sha256=IWVIjQdKc7TGfVK8qmhsikoyWhHhrvd9aM2JH7J6giM,2524
36
+ absfuyu/extra/da/mplt.py,sha256=POoD7a7iUmivzcVUtbhZgFhSFkEMoLgPDhE6Wxn5HWE,6305
37
+ absfuyu/fun/__init__.py,sha256=YUXIHAkluHR40ld3pY-5qy7Dim18BFXOwP9aQWGf4Qw,5435
38
+ absfuyu/fun/tarot.py,sha256=LuA_ioFjpBuRRE95eIqa66YuyOjhsgidezIfR_oV1C0,2401
39
+ absfuyu/game/__init__.py,sha256=w_7djRlaH_bRnXDIE7k2o3IH7mEnI3HoPNATsHO3RVk,4691
40
+ absfuyu/game/game_stat.py,sha256=3qIhHowsKSw03538hgikjDXcNnFZnFAeh8oQGgatMWA,1236
41
+ absfuyu/game/sudoku.py,sha256=yWH6qFYjFQELpq47ip3CU07jzL5rvWpc6tGhuyhbAAw,10405
42
+ absfuyu/game/tictactoe.py,sha256=Ae53kHZL9CmqUKAz6IUUv5T1ARBkC8zeOf3tqm8su3g,9958
43
+ absfuyu/game/wordle.py,sha256=CWWh_W1-I7nS_v33EgNTxbFyEXyPApeLB6kzOMZhHrg,101576
44
+ absfuyu/general/__init__.py,sha256=vufEDiUeK5uleZS5AQ-0vbMe31nfgTRxcUtW3kwxbV8,472
45
+ absfuyu/general/content.py,sha256=Dabw5rLgfryLw8ApD6qOSJBAe6Pz1Eh5A8JAsX_01Ug,17122
46
+ absfuyu/general/human.py,sha256=Uf8Eih7Xoq3WrFX8aoYSDcqTAJxCBhVJLm_EzuY-a4w,8099
47
+ absfuyu/general/shape.py,sha256=elZcTGQ11_-qczMwNoiw5Y4sQpWRd_tgmzyUPIdmwJ4,38619
48
+ absfuyu/pkg_data/__init__.py,sha256=-RscaF305zV76dFI_gecNm76_Smkx0OHP0OxSNKb2J0,5510
49
+ absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
50
+ absfuyu/pkg_data/deprecated.py,sha256=FhUFNgjjeaneBU66ImZuzJRKNZJ7OA_qLz2QoDbUn8M,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=yAO-Iq348oQYAbizMwJHhMEyonpe3HIkxxIwVhZh3Yw,926
54
+ absfuyu/tools/checksum.py,sha256=OaMkEyHawqZpVwrYaSLgv7ErKDtQb1Wk10u0pKQbkMs,5666
55
+ absfuyu/tools/converter.py,sha256=sXHtKl5QyLDv8pjz-msq5ZXgGjMbQplKaGivMnyiAm8,13566
56
+ absfuyu/tools/generator.py,sha256=o6RT3h8oSiLibubdBQTptKQUUHb5YBcGUR0-imVwKhk,13473
57
+ absfuyu/tools/inspector.py,sha256=OHq2Hj7uzisaqto1mngVVYo2rvpzyUGKFSUMpsjDzmw,15107
58
+ absfuyu/tools/keygen.py,sha256=Ic_Vsk_QHqJ7331CyDcPm59csLB0ar_Vka9NMs07dO0,7115
59
+ absfuyu/tools/obfuscator.py,sha256=mViEFLHjyic2Zlr8Q7v3S8xmpTUexLA2RvDfqUngrpE,13669
60
+ absfuyu/tools/passwordlib.py,sha256=vxN6mwZAvHiUppSVv5yS_djkVLeutgrR3exXaj2AZo8,11080
61
+ absfuyu/tools/shutdownizer.py,sha256=Yye7rVzH3CeVNWFnKvUIYXeKkKOyXNBcF65hPv8QpK4,8549
62
+ absfuyu/tools/web.py,sha256=0hWiPSsprJPy_x1Ml_MEUwTkfocHj6Ew_77WDms5K6Y,1240
63
+ absfuyu/util/__init__.py,sha256=MrHykiPbfR-r_U3Rf1l4_ZGPfHQgGL7AWUU0WrzBvfc,4187
64
+ absfuyu/util/api.py,sha256=zB2XxI2fzYAmX-fpPHFXTWizKixHDf3fTsZkDUcvZv4,4463
65
+ absfuyu/util/json_method.py,sha256=rHJ_omzJ9lwEacnTLprLVJmbZrRXepCbBYb57ElGW7M,2847
66
+ absfuyu/util/lunar.py,sha256=5zVsCl1UdsFW8sR7BHquF0VGyVNpJdyJcdZGkcDyuh0,13630
67
+ absfuyu/util/path.py,sha256=uZkLRlkUwq4p261pB7VHuvn3kxbMHxyXBJTefsWhhgA,19444
68
+ absfuyu/util/performance.py,sha256=TzsubH_1qrSNPSk42R5WthY6WlGD9EC5Gm9XpMLZU7M,12094
69
+ absfuyu/util/shorten_number.py,sha256=B7VDIlS3IYutlFkktv1pedEOGViC6P6BpeAOJn2BYWQ,8312
70
+ absfuyu/util/text_table.py,sha256=lkZREFjw_Jh1Hl2vhekROASVHvB3VoWaK9bmRMLp7bU,9112
71
+ absfuyu/util/zipped.py,sha256=8I6vW2hTNQtogzT7nKOMhSJrsQup7uRK0nu5JOsikO0,3042
72
+ absfuyu-5.2.0.dist-info/METADATA,sha256=pGcb4H4C4H3ZhlhY5C22n1coTfCyp4YA0pkY8kO_BvQ,4965
73
+ absfuyu-5.2.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
74
+ absfuyu-5.2.0.dist-info/entry_points.txt,sha256=bW5CgJRTTWJ2Pywojo07sf-YucRPcnHzMmETh5avbX0,79
75
+ absfuyu-5.2.0.dist-info/licenses/LICENSE,sha256=pFCHBSNSzdXwYG1AHpq7VcofI1NMQ1Fc77RzZ4Ln2O4,1097
76
+ absfuyu-5.2.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,,