absfuyu 5.0.0__tar.gz → 5.0.1__tar.gz
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.
- {absfuyu-5.0.0 → absfuyu-5.0.1}/PKG-INFO +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/README.md +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/dev_requirements.txt +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/docs/conf.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/pyproject.toml +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/__init__.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/__main__.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/cli/__init__.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/cli/color.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/cli/config_group.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/cli/do_group.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/cli/game_group.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/cli/tool_group.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/config/__init__.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/core/__init__.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/core/baseclass.py +5 -5
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/core/baseclass2.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/core/docstring.py +24 -21
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/core/dummy_func.py +7 -5
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/dxt/__init__.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/dxt/dictext.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/dxt/dxt_support.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/dxt/intext.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/dxt/listext.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/dxt/strext.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/extra/__init__.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/extra/beautiful.py +2 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/extra/data_analysis.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/fun/__init__.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/fun/tarot.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/game/__init__.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/game/game_stat.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/game/sudoku.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/game/tictactoe.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/game/wordle.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/general/__init__.py +4 -4
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/general/content.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/general/shape.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/logger.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/pkg_data/__init__.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/pkg_data/deprecated.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/sort.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/tools/__init__.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/tools/checksum.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/tools/converter.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/tools/obfuscator.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/tools/passwordlib.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/tools/web.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/util/__init__.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/util/api.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/util/lunar.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/util/path.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/util/performance.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/util/shorten_number.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/util/zipped.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/version.py +59 -42
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/conftest.py +2 -2
- absfuyu-5.0.1/tests/test_api.py +41 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_beautiful.py +7 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_config.py +2 -2
- absfuyu-5.0.1/tests/test_converter.py +49 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_core.py +1 -1
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_data_analysis.py +3 -3
- absfuyu-5.0.1/tests/test_dictext.py +68 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_everything.py +2 -2
- absfuyu-5.0.0/tests/test_extensions.py → absfuyu-5.0.1/tests/test_extra.py +3 -3
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_fun.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_game.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_generator.py +3 -3
- absfuyu-5.0.1/tests/test_intext.py +139 -0
- absfuyu-5.0.1/tests/test_listext.py +132 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_logger.py +2 -2
- absfuyu-5.0.0/tests/test_tools.py → absfuyu-5.0.1/tests/test_obfuscator.py +2 -64
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_passwordlib.py +2 -2
- absfuyu-5.0.1/tests/test_performance.py +66 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_pkg_data.py +2 -2
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_shape.py +1 -1
- absfuyu-5.0.1/tests/test_shorten_number.py +34 -0
- absfuyu-5.0.1/tests/test_strext.py +181 -0
- absfuyu-5.0.1/tests/test_tools.py +30 -0
- absfuyu-5.0.1/tests/test_util.py +55 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/test_version.py +2 -2
- absfuyu-5.0.0/tests/test_data_extension.py +0 -502
- absfuyu-5.0.0/tests/test_util.py +0 -163
- {absfuyu-5.0.0 → absfuyu-5.0.1}/.gitignore +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/LICENSE +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/docs/Makefile +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/docs/_template/versioning.html +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/docs/index.rst +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/docs/info.md +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/docs/make.bat +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/docs/modules.rst +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/images/Logo Full.png +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/images/Logo Square.png +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/images/Logo White.png +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/images/repository-image-crop.png +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/images/repository-image-white.png +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/images/repository-image.png +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/config/config.json +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/core/decorator.py +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/core/dummy_cli.py +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/general/human.py +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/pkg_data/chemistry.pkl +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/pkg_data/passwordlib_lzma.pkl +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/pkg_data/tarot.pkl +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/py.typed +0 -0
- {absfuyu-5.0.0/src/absfuyu/general → absfuyu-5.0.1/src/absfuyu/tools}/generator.py +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/tools/keygen.py +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/tools/shutdownizer.py +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/src/absfuyu/util/json_method.py +0 -0
- {absfuyu-5.0.0 → absfuyu-5.0.1}/tests/__init__.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: absfuyu
|
|
3
|
-
Version: 5.0.
|
|
3
|
+
Version: 5.0.1
|
|
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/
|
|
@@ -110,7 +110,7 @@ There are many additional features available to explore.
|
|
|
110
110
|
|
|
111
111
|
For more detailed information about the project, please refer to the documentation available at the following link:
|
|
112
112
|
|
|
113
|
-
> [Project Documentation](https://absolutewinter.github.io/absfuyu/)
|
|
113
|
+
> [Project Documentation](https://absolutewinter.github.io/absfuyu-docs/)
|
|
114
114
|
|
|
115
115
|
## **DEVELOPMENT SETUP**
|
|
116
116
|
|
|
@@ -59,7 +59,7 @@ There are many additional features available to explore.
|
|
|
59
59
|
|
|
60
60
|
For more detailed information about the project, please refer to the documentation available at the following link:
|
|
61
61
|
|
|
62
|
-
> [Project Documentation](https://absolutewinter.github.io/absfuyu/)
|
|
62
|
+
> [Project Documentation](https://absolutewinter.github.io/absfuyu-docs/)
|
|
63
63
|
|
|
64
64
|
## **DEVELOPMENT SETUP**
|
|
65
65
|
|
|
@@ -33,7 +33,7 @@ extensions = [
|
|
|
33
33
|
# "sphinx.ext.extlinks", # short link
|
|
34
34
|
"sphinx.ext.githubpages",
|
|
35
35
|
"sphinx.ext.napoleon",
|
|
36
|
-
|
|
36
|
+
"sphinx.ext.viewcode" # This shows source code
|
|
37
37
|
"sphinx_copybutton",
|
|
38
38
|
"myst_parser", # Markdown support
|
|
39
39
|
]
|
|
@@ -77,7 +77,7 @@ only-include = ["src", "tests", "docs", "images", "dev_requirements.txt"]
|
|
|
77
77
|
|
|
78
78
|
# Set up virtual env: use hatch env show
|
|
79
79
|
[tool.hatch.envs.default]
|
|
80
|
-
dependencies = ["coverage[toml]", "pytest", "pytest-cov"]
|
|
80
|
+
dependencies = ["coverage[toml]", "pytest", "pytest-cov", "pytest-mock"]
|
|
81
81
|
description = """
|
|
82
82
|
Default environment
|
|
83
83
|
|
|
@@ -95,7 +95,7 @@ cov = ["test-cov", "cov-report"] # use this
|
|
|
95
95
|
cov2 = "pytest --cov-report=term-missing --cov=absfuyu --cov=tests" # use this
|
|
96
96
|
|
|
97
97
|
[tool.hatch.envs.all]
|
|
98
|
-
dependencies = ["coverage[toml]", "pytest", "pytest-cov", "pytest-xdist"]
|
|
98
|
+
dependencies = ["coverage[toml]", "pytest", "pytest-cov", "pytest-mock", "pytest-xdist"]
|
|
99
99
|
features = ["full"]
|
|
100
100
|
description = """
|
|
101
101
|
All python version to test:
|
|
@@ -4,7 +4,7 @@ Absfuyu: Core
|
|
|
4
4
|
Bases for other features
|
|
5
5
|
|
|
6
6
|
Version: 5.0.0
|
|
7
|
-
Date updated:
|
|
7
|
+
Date updated: 25/02/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -51,12 +51,12 @@ class ShowAllMethodsMixin:
|
|
|
51
51
|
@classmethod
|
|
52
52
|
def show_all_methods(
|
|
53
53
|
cls,
|
|
54
|
+
print_result: bool = False,
|
|
54
55
|
include_classmethod: bool = True,
|
|
55
56
|
classmethod_indicator: str = "<classmethod>",
|
|
56
57
|
include_staticmethod: bool = True,
|
|
57
58
|
staticmethod_indicator: str = "<staticmethod>",
|
|
58
59
|
include_private_method: bool = False,
|
|
59
|
-
print_result: bool = False,
|
|
60
60
|
) -> dict[str, list[str]]:
|
|
61
61
|
"""
|
|
62
62
|
Class method to display all methods of the class and its parent classes,
|
|
@@ -64,6 +64,9 @@ class ShowAllMethodsMixin:
|
|
|
64
64
|
|
|
65
65
|
Parameters
|
|
66
66
|
----------
|
|
67
|
+
print_result : bool, optional
|
|
68
|
+
Beautifully print the output, by default ``False``
|
|
69
|
+
|
|
67
70
|
include_classmethod : bool, optional
|
|
68
71
|
Whether to include classmethod in the output, by default ``True``
|
|
69
72
|
|
|
@@ -83,9 +86,6 @@ class ShowAllMethodsMixin:
|
|
|
83
86
|
include_private_method : bool, optional
|
|
84
87
|
Whether to include private method in the output, by default ``False``
|
|
85
88
|
|
|
86
|
-
print_result : bool, optional
|
|
87
|
-
Beautifully print the output, by default ``False``
|
|
88
|
-
|
|
89
89
|
Returns
|
|
90
90
|
-------
|
|
91
91
|
dict[str, list[str]]
|
|
@@ -4,7 +4,7 @@ Absfuyu: Core
|
|
|
4
4
|
Sphinx docstring decorator
|
|
5
5
|
|
|
6
6
|
Version: 5.0.0
|
|
7
|
-
Date updated:
|
|
7
|
+
Date updated: 23/02/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -28,9 +28,9 @@ from typing import ClassVar, ParamSpec, TypeVar, overload
|
|
|
28
28
|
|
|
29
29
|
# Type
|
|
30
30
|
# ---------------------------------------------------------------------------
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
_P = ParamSpec("_P") # Parameter type
|
|
32
|
+
_R = TypeVar("_R") # Return type - Can be anything
|
|
33
|
+
_T = TypeVar("_T", bound=type) # Type type - Can be any subtype of `type`
|
|
34
34
|
|
|
35
35
|
_SPHINX_DOCS_TEMPLATE = Template("$line_break*$mode in version $version$reason*")
|
|
36
36
|
|
|
@@ -88,10 +88,13 @@ class SphinxDocstring:
|
|
|
88
88
|
self.mode = mode
|
|
89
89
|
|
|
90
90
|
@overload
|
|
91
|
-
def __call__(self, obj:
|
|
91
|
+
def __call__(self, obj: _T) -> _T: ... # Class overload
|
|
92
|
+
|
|
92
93
|
@overload
|
|
93
|
-
def __call__(
|
|
94
|
-
|
|
94
|
+
def __call__(
|
|
95
|
+
self, obj: Callable[_P, _R]
|
|
96
|
+
) -> Callable[_P, _R]: ... # Function overload
|
|
97
|
+
def __call__(self, obj: _T | Callable[_P, _R]) -> _T | Callable[_P, _R]:
|
|
95
98
|
# Class wrapper
|
|
96
99
|
if isinstance(obj, type): # if inspect.isclass(obj):
|
|
97
100
|
obj.__doc__ = (obj.__doc__ or "") + self._generate_version_note(
|
|
@@ -101,7 +104,7 @@ class SphinxDocstring:
|
|
|
101
104
|
|
|
102
105
|
# Function wrapper
|
|
103
106
|
@wraps(obj)
|
|
104
|
-
def wrapper(*args:
|
|
107
|
+
def wrapper(*args: _P.args, **kwargs: _P.kwargs) -> _R:
|
|
105
108
|
return obj(*args, **kwargs)
|
|
106
109
|
|
|
107
110
|
# Add docstring
|
|
@@ -127,19 +130,19 @@ class SphinxDocstring:
|
|
|
127
130
|
if docs is None:
|
|
128
131
|
return res
|
|
129
132
|
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
if
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
133
|
+
try:
|
|
134
|
+
# Replace tabs with space and split line
|
|
135
|
+
lines = docs.expandtabs(4).splitlines()
|
|
136
|
+
except UnicodeError:
|
|
137
|
+
return res
|
|
138
|
+
else:
|
|
139
|
+
# Get indentation of each line and unique it
|
|
140
|
+
indent_set = {len(line) - len(line.lstrip()) for line in lines[1:]}
|
|
141
|
+
# Drop 0
|
|
142
|
+
res_list = sorted([x for x in indent_set if x > 0])
|
|
143
|
+
|
|
144
|
+
if res_list:
|
|
145
|
+
return res_list[0]
|
|
143
146
|
return res
|
|
144
147
|
|
|
145
148
|
def _generate_version_note(self, num_of_white_spaces: int) -> str:
|
|
@@ -4,7 +4,7 @@ Absfuyu: Core
|
|
|
4
4
|
Dummy functions when other libraries are unvailable
|
|
5
5
|
|
|
6
6
|
Version: 5.0.0
|
|
7
|
-
Date updated:
|
|
7
|
+
Date updated: 22/02/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -23,8 +23,9 @@ from importlib import import_module
|
|
|
23
23
|
# ---------------------------------------------------------------------------
|
|
24
24
|
# tqdm wrapper
|
|
25
25
|
try:
|
|
26
|
-
|
|
27
|
-
|
|
26
|
+
_tqdm = import_module("tqdm")
|
|
27
|
+
tqdm = getattr(_tqdm, "tqdm") # noqa
|
|
28
|
+
except (ModuleNotFoundError, AttributeError):
|
|
28
29
|
|
|
29
30
|
def tqdm(iterable, *args, **kwargs):
|
|
30
31
|
"""
|
|
@@ -36,8 +37,9 @@ except ModuleNotFoundError:
|
|
|
36
37
|
|
|
37
38
|
# unidecode wrapper
|
|
38
39
|
try:
|
|
39
|
-
|
|
40
|
-
|
|
40
|
+
_unidecode = import_module("unidecode")
|
|
41
|
+
unidecode = getattr(_unidecode, "unidecode") # noqa
|
|
42
|
+
except (ModuleNotFoundError, AttributeError):
|
|
41
43
|
|
|
42
44
|
def unidecode(*args, **kwargs):
|
|
43
45
|
"""
|
|
@@ -4,7 +4,7 @@ Absfuyu: Data Extension
|
|
|
4
4
|
str extension
|
|
5
5
|
|
|
6
6
|
Version: 5.0.0
|
|
7
|
-
Date updated:
|
|
7
|
+
Date updated: 25/02/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -18,8 +18,8 @@ import random
|
|
|
18
18
|
from typing import NotRequired, Self, TypedDict
|
|
19
19
|
|
|
20
20
|
from absfuyu.core import ShowAllMethodsMixin, deprecated, versionadded, versionchanged
|
|
21
|
-
from absfuyu.general.generator import Charset, Generator
|
|
22
21
|
from absfuyu.logger import logger
|
|
22
|
+
from absfuyu.tools.generator import Charset, Generator
|
|
23
23
|
from absfuyu.util import set_min_max
|
|
24
24
|
|
|
25
25
|
|
|
@@ -4,7 +4,7 @@ Absfuyu: Beautiful
|
|
|
4
4
|
A decorator that makes output more beautiful
|
|
5
5
|
|
|
6
6
|
Version: 5.0.0
|
|
7
|
-
Date updated:
|
|
7
|
+
Date updated: 22/02/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module level
|
|
@@ -77,6 +77,7 @@ class PerformanceOutput(NamedTuple):
|
|
|
77
77
|
return out
|
|
78
78
|
|
|
79
79
|
|
|
80
|
+
# TODO: header and footer layout to 1,2,3 instead of true false
|
|
80
81
|
class BeautifulOutput:
|
|
81
82
|
"""A decorator that makes output more beautiful"""
|
|
82
83
|
|
|
@@ -3,8 +3,8 @@ Absfuyu: General
|
|
|
3
3
|
----------------
|
|
4
4
|
Collection of useful classes
|
|
5
5
|
|
|
6
|
-
Version:
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.0.0
|
|
7
|
+
Date updated: 22/02/2025 (dd/mm/yyyy)
|
|
8
8
|
|
|
9
9
|
Features:
|
|
10
10
|
---------
|
|
@@ -15,9 +15,9 @@ Features:
|
|
|
15
15
|
|
|
16
16
|
# Module level
|
|
17
17
|
# ---------------------------------------------------------------------------
|
|
18
|
-
__all__ = ["content", "
|
|
18
|
+
__all__ = ["content", "shape", "human"]
|
|
19
19
|
|
|
20
20
|
|
|
21
21
|
# Libary
|
|
22
22
|
# ---------------------------------------------------------------------------
|
|
23
|
-
from absfuyu.general import content,
|
|
23
|
+
from absfuyu.general import content, human, shape
|