absfuyu 5.1.0__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.
- absfuyu/__init__.py +1 -1
- absfuyu/__main__.py +3 -3
- absfuyu/cli/__init__.py +1 -1
- absfuyu/cli/color.py +3 -3
- absfuyu/cli/config_group.py +2 -2
- absfuyu/cli/do_group.py +2 -2
- absfuyu/cli/game_group.py +2 -2
- absfuyu/cli/tool_group.py +2 -3
- absfuyu/config/__init__.py +1 -1
- absfuyu/core/__init__.py +1 -1
- absfuyu/core/baseclass.py +2 -2
- absfuyu/core/baseclass2.py +1 -1
- absfuyu/core/decorator.py +4 -4
- absfuyu/core/docstring.py +43 -25
- absfuyu/core/dummy_cli.py +1 -1
- absfuyu/core/dummy_func.py +4 -4
- absfuyu/dxt/__init__.py +1 -1
- absfuyu/dxt/dictext.py +5 -2
- absfuyu/dxt/dxt_support.py +1 -1
- absfuyu/dxt/intext.py +5 -2
- absfuyu/dxt/listext.py +288 -126
- absfuyu/dxt/strext.py +75 -15
- absfuyu/extra/__init__.py +1 -1
- absfuyu/extra/beautiful.py +1 -1
- absfuyu/extra/da/__init__.py +1 -1
- absfuyu/extra/da/dadf.py +43 -4
- absfuyu/extra/da/dadf_base.py +1 -1
- absfuyu/extra/da/df_func.py +1 -1
- absfuyu/extra/da/mplt.py +1 -1
- absfuyu/extra/data_analysis.py +3 -3
- absfuyu/fun/__init__.py +1 -1
- absfuyu/fun/tarot.py +1 -1
- absfuyu/game/__init__.py +1 -1
- absfuyu/game/game_stat.py +1 -1
- absfuyu/game/sudoku.py +1 -1
- absfuyu/game/tictactoe.py +2 -3
- absfuyu/game/wordle.py +1 -1
- absfuyu/general/__init__.py +1 -1
- absfuyu/general/content.py +2 -2
- absfuyu/general/human.py +1 -1
- absfuyu/general/shape.py +1 -1
- absfuyu/logger.py +1 -1
- absfuyu/pkg_data/__init__.py +1 -1
- absfuyu/pkg_data/deprecated.py +1 -1
- absfuyu/sort.py +1 -1
- absfuyu/tools/__init__.py +16 -13
- absfuyu/tools/checksum.py +2 -2
- absfuyu/tools/converter.py +29 -8
- absfuyu/tools/generator.py +251 -110
- absfuyu/tools/inspector.py +68 -38
- absfuyu/tools/keygen.py +1 -1
- absfuyu/tools/obfuscator.py +2 -2
- absfuyu/tools/passwordlib.py +3 -4
- absfuyu/tools/shutdownizer.py +1 -1
- absfuyu/tools/web.py +1 -1
- absfuyu/typings.py +136 -0
- absfuyu/util/__init__.py +18 -4
- absfuyu/util/api.py +36 -16
- absfuyu/util/json_method.py +43 -14
- absfuyu/util/lunar.py +1 -1
- absfuyu/util/path.py +2 -2
- absfuyu/util/performance.py +120 -5
- absfuyu/util/shorten_number.py +1 -1
- absfuyu/util/text_table.py +48 -14
- absfuyu/util/zipped.py +4 -3
- absfuyu/version.py +2 -2
- {absfuyu-5.1.0.dist-info → absfuyu-5.2.0.dist-info}/METADATA +1 -1
- absfuyu-5.2.0.dist-info/RECORD +76 -0
- absfuyu/core/typings.py +0 -40
- absfuyu-5.1.0.dist-info/RECORD +0 -76
- {absfuyu-5.1.0.dist-info → absfuyu-5.2.0.dist-info}/WHEEL +0 -0
- {absfuyu-5.1.0.dist-info → absfuyu-5.2.0.dist-info}/entry_points.txt +0 -0
- {absfuyu-5.1.0.dist-info → absfuyu-5.2.0.dist-info}/licenses/LICENSE +0 -0
absfuyu/util/lunar.py
CHANGED
absfuyu/util/path.py
CHANGED
absfuyu/util/performance.py
CHANGED
|
@@ -3,8 +3,8 @@ Absfuyu: Performance
|
|
|
3
3
|
--------------------
|
|
4
4
|
Performance Check
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.2.0
|
|
7
|
+
Date updated: 15/03/2025 (dd/mm/yyyy)
|
|
8
8
|
|
|
9
9
|
Feature:
|
|
10
10
|
--------
|
|
@@ -20,6 +20,7 @@ Feature:
|
|
|
20
20
|
__all__ = [
|
|
21
21
|
# Wrapper
|
|
22
22
|
"function_debug",
|
|
23
|
+
"function_benchmark",
|
|
23
24
|
"measure_performance",
|
|
24
25
|
"retry",
|
|
25
26
|
# Class
|
|
@@ -32,12 +33,12 @@ __all__ = [
|
|
|
32
33
|
import time
|
|
33
34
|
import tracemalloc
|
|
34
35
|
from collections.abc import Callable
|
|
36
|
+
from dataclasses import dataclass
|
|
35
37
|
from functools import wraps
|
|
36
38
|
from inspect import getsource
|
|
37
|
-
from typing import Any, ParamSpec, TypeVar
|
|
39
|
+
from typing import Any, Literal, ParamSpec, TypeVar, overload
|
|
38
40
|
|
|
39
41
|
from absfuyu.core import deprecated, versionadded, versionchanged
|
|
40
|
-
from absfuyu.dxt import ListNoDunder
|
|
41
42
|
|
|
42
43
|
# Type
|
|
43
44
|
# ---------------------------------------------------------------------------
|
|
@@ -45,6 +46,30 @@ P = ParamSpec("P") # Parameter type
|
|
|
45
46
|
R = TypeVar("R") # Return type
|
|
46
47
|
|
|
47
48
|
|
|
49
|
+
# Support
|
|
50
|
+
# ---------------------------------------------------------------------------
|
|
51
|
+
@dataclass
|
|
52
|
+
class BenchmarkResult:
|
|
53
|
+
"""
|
|
54
|
+
Use ``format(BenchmarkResult(...), "seconds")`` to view result in seconds.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
min_: float
|
|
58
|
+
max_: float
|
|
59
|
+
avg: float
|
|
60
|
+
|
|
61
|
+
def __format__(self, format_spec: str) -> str:
|
|
62
|
+
clsname = self.__class__.__name__
|
|
63
|
+
if format_spec.lower().strip().startswith("seconds"):
|
|
64
|
+
fields = [f"{x}={getattr(self, x):,.6f}s" for x in self._get_fields()]
|
|
65
|
+
return f"{clsname}({', '.join(fields)})"
|
|
66
|
+
return repr(self)
|
|
67
|
+
|
|
68
|
+
@classmethod
|
|
69
|
+
def _get_fields(cls) -> tuple[str, ...]:
|
|
70
|
+
return tuple(cls.__dataclass_fields__)
|
|
71
|
+
|
|
72
|
+
|
|
48
73
|
# Function
|
|
49
74
|
# ---------------------------------------------------------------------------
|
|
50
75
|
@versionchanged("3.2.0", reason="Updated functionality")
|
|
@@ -108,6 +133,96 @@ def measure_performance(f: Callable[P, R]) -> Callable[P, R]:
|
|
|
108
133
|
return wrapper
|
|
109
134
|
|
|
110
135
|
|
|
136
|
+
@overload
|
|
137
|
+
def function_benchmark(func: Callable[P, R], /) -> Callable[P, R]: ...
|
|
138
|
+
@overload
|
|
139
|
+
def function_benchmark(*, n: int = 1) -> Callable[[Callable[P, R]], Callable[P, R]]: ...
|
|
140
|
+
@overload
|
|
141
|
+
def function_benchmark(
|
|
142
|
+
*, n: int = 1, result_only: Literal[False] = False
|
|
143
|
+
) -> Callable[[Callable[P, R]], Callable[P, R]]: ...
|
|
144
|
+
@overload
|
|
145
|
+
def function_benchmark(
|
|
146
|
+
*, n: int = 1, result_only: Literal[True] = ...
|
|
147
|
+
) -> Callable[[Callable[P, R]], Callable[P, BenchmarkResult]]: ...
|
|
148
|
+
|
|
149
|
+
|
|
150
|
+
@versionadded("5.2.0")
|
|
151
|
+
def function_benchmark(
|
|
152
|
+
func: Callable[P, R] | None = None, /, *, n: int = 1, result_only: bool = False
|
|
153
|
+
):
|
|
154
|
+
"""
|
|
155
|
+
This run function for ``n`` times and calculate min, max, average runtime.
|
|
156
|
+
|
|
157
|
+
Parameters
|
|
158
|
+
----------
|
|
159
|
+
func : Callable[P, R] | None, optional
|
|
160
|
+
Callable with parameter **P and returns R, by default ``None``
|
|
161
|
+
|
|
162
|
+
n : int, optional
|
|
163
|
+
Run how many times, by default ``1``
|
|
164
|
+
|
|
165
|
+
result_only : bool, optional
|
|
166
|
+
Returns BenchmarkResult instead of ``func`` result, by default ``False``
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
Usage
|
|
170
|
+
-----
|
|
171
|
+
Use this as a decorator (``@function_benchmark``)
|
|
172
|
+
|
|
173
|
+
Example:
|
|
174
|
+
--------
|
|
175
|
+
>>> @function_benchmark
|
|
176
|
+
>>> def test():
|
|
177
|
+
... return 1 + 1
|
|
178
|
+
>>> test()
|
|
179
|
+
BenchmarkResult(min_=0.000000s, max_=0.000000s, avg=0.000000s)
|
|
180
|
+
2
|
|
181
|
+
|
|
182
|
+
>>> @function_benchmark(n=1)
|
|
183
|
+
>>> def test():
|
|
184
|
+
... return 1 + 1
|
|
185
|
+
>>> test()
|
|
186
|
+
BenchmarkResult(min_=0.000000s, max_=0.000000s, avg=0.000000s)
|
|
187
|
+
2
|
|
188
|
+
"""
|
|
189
|
+
|
|
190
|
+
times = max(n, 1)
|
|
191
|
+
|
|
192
|
+
def decorator(f: Callable[P, R]) -> Callable[P, R | BenchmarkResult]:
|
|
193
|
+
@wraps(f)
|
|
194
|
+
def wrapper(*args: P.args, **kwargs: P.kwargs) -> R | BenchmarkResult:
|
|
195
|
+
output = f(*args, **kwargs) # Run function and save result into a variable
|
|
196
|
+
|
|
197
|
+
def _run() -> float:
|
|
198
|
+
# Performance check
|
|
199
|
+
start_time = time.perf_counter() # Start time measure
|
|
200
|
+
f(*args, **kwargs)
|
|
201
|
+
finish_time = time.perf_counter() # Get finished time
|
|
202
|
+
return finish_time - start_time
|
|
203
|
+
|
|
204
|
+
# run = (_run() for _ in range(times))
|
|
205
|
+
run = [_run() for _ in range(times)]
|
|
206
|
+
try:
|
|
207
|
+
avg_runtime = sum(run) / len(run)
|
|
208
|
+
except ZeroDivisionError:
|
|
209
|
+
avg_runtime = min(run)
|
|
210
|
+
result = BenchmarkResult(min(run), max(run), avg_runtime)
|
|
211
|
+
|
|
212
|
+
if result_only:
|
|
213
|
+
return result
|
|
214
|
+
|
|
215
|
+
print(format(result, "seconds"))
|
|
216
|
+
|
|
217
|
+
return output
|
|
218
|
+
|
|
219
|
+
return wrapper
|
|
220
|
+
|
|
221
|
+
if func is None:
|
|
222
|
+
return decorator
|
|
223
|
+
return decorator(func)
|
|
224
|
+
|
|
225
|
+
|
|
111
226
|
@versionadded("3.2.0")
|
|
112
227
|
def function_debug(f: Callable[P, R]) -> Callable[P, R]:
|
|
113
228
|
"""
|
|
@@ -284,7 +399,7 @@ class Checker:
|
|
|
284
399
|
def dir_(self) -> list[str]:
|
|
285
400
|
"""``dir()`` of variable"""
|
|
286
401
|
# return self.item_to_check.__dir__()
|
|
287
|
-
return
|
|
402
|
+
return [x for x in dir(self.item_to_check) if not x.startswith("__")]
|
|
288
403
|
|
|
289
404
|
@property
|
|
290
405
|
def source(self) -> str | None:
|
absfuyu/util/shorten_number.py
CHANGED
absfuyu/util/text_table.py
CHANGED
|
@@ -3,8 +3,8 @@ Absufyu: Utilities
|
|
|
3
3
|
------------------
|
|
4
4
|
Text table
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.2.0
|
|
7
|
+
Date updated: 13/03/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module level
|
|
@@ -18,14 +18,28 @@ import os
|
|
|
18
18
|
from collections.abc import Sequence
|
|
19
19
|
from enum import StrEnum
|
|
20
20
|
from textwrap import TextWrapper
|
|
21
|
-
from typing import Literal
|
|
21
|
+
from typing import Literal, Protocol, cast
|
|
22
22
|
|
|
23
23
|
from absfuyu.core import BaseClass
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
# Style
|
|
27
27
|
# ---------------------------------------------------------------------------
|
|
28
|
-
class BoxDrawingCharacter(
|
|
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):
|
|
29
43
|
"""
|
|
30
44
|
Box drawing characters - Normal
|
|
31
45
|
|
|
@@ -105,6 +119,35 @@ class BoxDrawingCharacterDouble(StrEnum):
|
|
|
105
119
|
HORIZONTAL_DOWN = "\u2566"
|
|
106
120
|
|
|
107
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
|
+
|
|
108
151
|
# Class
|
|
109
152
|
# ---------------------------------------------------------------------------
|
|
110
153
|
class OneColumnTableMaker(BaseClass):
|
|
@@ -159,16 +202,7 @@ class OneColumnTableMaker(BaseClass):
|
|
|
159
202
|
self._paragraphs: list[Sequence[str]] = []
|
|
160
203
|
|
|
161
204
|
# Style
|
|
162
|
-
|
|
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
|
|
205
|
+
self._table_char = get_box_drawing_character(style=style)
|
|
172
206
|
|
|
173
207
|
# Text wrapper
|
|
174
208
|
self._text_wrapper = TextWrapper(
|
absfuyu/util/zipped.py
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Absfuyu: Zipped
|
|
3
3
|
---------------
|
|
4
|
-
Zipping stuff
|
|
4
|
+
Zipping stuff
|
|
5
|
+
(deprecated, use absfuyu.util.path.Directory)
|
|
5
6
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
7
|
+
Version: 5.2.0
|
|
8
|
+
Date updated: 16/03/2025 (dd/mm/yyyy)
|
|
8
9
|
"""
|
|
9
10
|
|
|
10
11
|
# Module level
|
absfuyu/version.py
CHANGED
|
@@ -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,,
|
absfuyu/core/typings.py
DELETED
|
@@ -1,40 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Absfuyu: Core
|
|
3
|
-
-------------
|
|
4
|
-
Pre-defined typing
|
|
5
|
-
|
|
6
|
-
Version: 5.1.0
|
|
7
|
-
Date updated: 10/03/2025 (dd/mm/yyyy)
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
# Module Package
|
|
11
|
-
# ---------------------------------------------------------------------------
|
|
12
|
-
__all__ = ["_T", "_P", "_R", "_CALLABLE", "_CT", "_N", "_Number", "override"]
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
# Library
|
|
16
|
-
# ---------------------------------------------------------------------------
|
|
17
|
-
from collections.abc import Callable
|
|
18
|
-
from typing import ParamSpec, TypeVar
|
|
19
|
-
|
|
20
|
-
try:
|
|
21
|
-
from typing import override # type: ignore
|
|
22
|
-
except ImportError:
|
|
23
|
-
from absfuyu.core.decorator import dummy_decorator as override
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
# Type
|
|
27
|
-
# ---------------------------------------------------------------------------
|
|
28
|
-
_T = TypeVar("_T") # Type
|
|
29
|
-
|
|
30
|
-
# Callable
|
|
31
|
-
_P = ParamSpec("_P") # Parameter type
|
|
32
|
-
_R = TypeVar("_R") # Return type - Can be anything
|
|
33
|
-
_CALLABLE = Callable[_P, _R]
|
|
34
|
-
|
|
35
|
-
# Class type - Can be any subtype of `type`
|
|
36
|
-
_CT = TypeVar("_CT", bound=type)
|
|
37
|
-
|
|
38
|
-
# Number type
|
|
39
|
-
_N = TypeVar("_N", int, float)
|
|
40
|
-
_Number = int | float
|
absfuyu-5.1.0.dist-info/RECORD
DELETED
|
@@ -1,76 +0,0 @@
|
|
|
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,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|