absfuyu 5.1.0__tar.gz → 5.2.0__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.
Potentially problematic release.
This version of absfuyu might be problematic. Click here for more details.
- {absfuyu-5.1.0 → absfuyu-5.2.0}/PKG-INFO +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/__main__.py +3 -3
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/color.py +3 -3
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/config_group.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/do_group.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/game_group.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/tool_group.py +2 -3
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/config/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/baseclass.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/baseclass2.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/decorator.py +4 -4
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/docstring.py +43 -25
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/dummy_cli.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/dummy_func.py +4 -4
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/dictext.py +5 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/dxt_support.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/intext.py +5 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/listext.py +288 -126
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/strext.py +75 -15
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/beautiful.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/dadf.py +43 -4
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/dadf_base.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/df_func.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/mplt.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/data_analysis.py +3 -3
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/fun/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/fun/tarot.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/game_stat.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/sudoku.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/tictactoe.py +2 -3
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/wordle.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/general/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/general/content.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/general/human.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/general/shape.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/logger.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/__init__.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/deprecated.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/sort.py +1 -1
- absfuyu-5.2.0/src/absfuyu/tools/__init__.py +34 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/checksum.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/converter.py +29 -8
- absfuyu-5.2.0/src/absfuyu/tools/generator.py +444 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/inspector.py +68 -38
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/keygen.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/obfuscator.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/passwordlib.py +3 -4
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/shutdownizer.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/web.py +1 -1
- absfuyu-5.2.0/src/absfuyu/typings.py +136 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/__init__.py +18 -4
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/api.py +36 -16
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/json_method.py +43 -14
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/lunar.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/path.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/performance.py +120 -5
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/shorten_number.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/text_table.py +48 -14
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/zipped.py +4 -3
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/version.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/conftest.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_api.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_beautiful.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_config.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_converter.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_core.py +4 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_data_analysis.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_dictext.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_everything.py +11 -5
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_extra.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_fun.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_game.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_generator.py +4 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_inspector.py +3 -3
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_intext.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_listext.py +30 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_logger.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_obfuscator.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_passwordlib.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_performance.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_pkg_data.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_shape.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_shorten_number.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_strext.py +2 -9
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_text_table.py +2 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_tools.py +1 -1
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_util.py +4 -2
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_version.py +2 -2
- absfuyu-5.1.0/src/absfuyu/core/typings.py +0 -40
- absfuyu-5.1.0/src/absfuyu/tools/__init__.py +0 -31
- absfuyu-5.1.0/src/absfuyu/tools/generator.py +0 -303
- {absfuyu-5.1.0 → absfuyu-5.2.0}/.gitignore +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/LICENSE +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/README.md +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/dev_requirements.txt +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/Makefile +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/_template/versioning.html +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/conf.py +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/index.rst +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/info.md +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/make.bat +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/modules.rst +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/images/Logo Full.png +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/images/Logo Square.png +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/images/Logo White.png +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/images/repository-image-crop.png +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/images/repository-image-white.png +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/images/repository-image.png +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/pyproject.toml +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/config/config.json +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/chemistry.pkl +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/passwordlib_lzma.pkl +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/tarot.pkl +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/py.typed +0 -0
- {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/__init__.py +0 -0
|
@@ -3,15 +3,15 @@ ABSFUYU
|
|
|
3
3
|
-------
|
|
4
4
|
COMMAND LINE INTERFACE
|
|
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
|
# Library
|
|
11
11
|
# ---------------------------------------------------------------------------
|
|
12
12
|
try:
|
|
13
13
|
from absfuyu.cli import cli
|
|
14
|
-
except
|
|
14
|
+
except ImportError: # Check for `click`, `colorama`
|
|
15
15
|
from absfuyu.core.dummy_cli import cli
|
|
16
16
|
|
|
17
17
|
|
|
@@ -3,8 +3,8 @@ ABSFUYU CLI
|
|
|
3
3
|
-----------
|
|
4
4
|
Color
|
|
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 Package
|
|
@@ -16,7 +16,7 @@ __all__ = ["COLOR"]
|
|
|
16
16
|
# ---------------------------------------------------------------------------
|
|
17
17
|
try:
|
|
18
18
|
import colorama
|
|
19
|
-
except
|
|
19
|
+
except ImportError: # Check for `colorama`
|
|
20
20
|
colorama = None
|
|
21
21
|
|
|
22
22
|
# Color
|
|
@@ -3,11 +3,10 @@ ABSFUYU CLI
|
|
|
3
3
|
-----------
|
|
4
4
|
Tool
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.2.0
|
|
7
|
+
Date updated: 12/03/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
|
-
|
|
11
10
|
# Module Package
|
|
12
11
|
# ---------------------------------------------------------------------------
|
|
13
12
|
__all__ = ["tool_group"]
|
|
@@ -3,8 +3,8 @@ Absfuyu: Core
|
|
|
3
3
|
-------------
|
|
4
4
|
Decorator
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.2.0
|
|
7
|
+
Date updated: 14/03/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -20,7 +20,7 @@ __all__ = [
|
|
|
20
20
|
# ---------------------------------------------------------------------------
|
|
21
21
|
from collections.abc import Callable
|
|
22
22
|
from functools import wraps
|
|
23
|
-
from typing import ParamSpec, TypeVar, overload
|
|
23
|
+
from typing import ParamSpec, TypeVar, cast, overload
|
|
24
24
|
|
|
25
25
|
# Type
|
|
26
26
|
# ---------------------------------------------------------------------------
|
|
@@ -130,4 +130,4 @@ def add_subclass_methods_decorator(cls: T) -> T:
|
|
|
130
130
|
name = f"{cls.__module__}.{cls.__name__}"
|
|
131
131
|
cls.SUBCLASS_METHODS.update({name: sorted(methods_list)})
|
|
132
132
|
|
|
133
|
-
return type("AutoSubclass", (AutoSubclassMixin, cls), {})
|
|
133
|
+
return cast(T, type("AutoSubclass", (AutoSubclassMixin, cls), {}))
|
|
@@ -3,8 +3,8 @@ Absfuyu: Core
|
|
|
3
3
|
-------------
|
|
4
4
|
Sphinx docstring decorator
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.2.0
|
|
7
|
+
Date updated: 14/03/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -53,6 +53,24 @@ class SphinxDocstring:
|
|
|
53
53
|
A class-based decorator to add a 'Version added',
|
|
54
54
|
'Version changed', or 'Deprecated' note to a function's docstring,
|
|
55
55
|
formatted for Sphinx documentation.
|
|
56
|
+
|
|
57
|
+
Parameters
|
|
58
|
+
----------
|
|
59
|
+
version : str
|
|
60
|
+
The version in which the function was added, changed, or deprecated.
|
|
61
|
+
|
|
62
|
+
reason : str | None, optional
|
|
63
|
+
An optional reason or description for the change
|
|
64
|
+
or deprecation, by default ``None``
|
|
65
|
+
|
|
66
|
+
mode : SphinxDocstringMode, optional
|
|
67
|
+
Specifies whether the function was 'added', 'changed', or 'deprecated',
|
|
68
|
+
by default SphinxDocstringMode.ADDED
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
Usage
|
|
72
|
+
-----
|
|
73
|
+
Use this as a decorator (``@SphinxDocstring(<parameters>)``)
|
|
56
74
|
"""
|
|
57
75
|
|
|
58
76
|
_LINEBREAK: ClassVar[str] = "\n\n" # Use ClassVar for constant
|
|
@@ -75,7 +93,7 @@ class SphinxDocstring:
|
|
|
75
93
|
An optional reason or description for the change
|
|
76
94
|
or deprecation, by default ``None``
|
|
77
95
|
|
|
78
|
-
mode : SphinxDocstringMode
|
|
96
|
+
mode : SphinxDocstringMode, optional
|
|
79
97
|
Specifies whether the function was 'added', 'changed', or 'deprecated',
|
|
80
98
|
by default SphinxDocstringMode.ADDED
|
|
81
99
|
|
|
@@ -87,38 +105,27 @@ class SphinxDocstring:
|
|
|
87
105
|
self.reason = reason
|
|
88
106
|
self.mode = mode
|
|
89
107
|
|
|
90
|
-
@overload
|
|
91
|
-
def __call__(self, obj: _T) -> _T: ...
|
|
108
|
+
@overload # Class overload
|
|
109
|
+
def __call__(self, obj: _T) -> _T: ...
|
|
110
|
+
|
|
111
|
+
@overload # Function overload
|
|
112
|
+
def __call__(self, obj: Callable[_P, _R]) -> Callable[_P, _R]: ...
|
|
92
113
|
|
|
93
|
-
@overload
|
|
94
|
-
def __call__(
|
|
95
|
-
self, obj: Callable[_P, _R]
|
|
96
|
-
) -> Callable[_P, _R]: ... # Function overload
|
|
97
114
|
def __call__(self, obj: _T | Callable[_P, _R]) -> _T | Callable[_P, _R]:
|
|
115
|
+
"""
|
|
116
|
+
Decorator for class and callable
|
|
117
|
+
"""
|
|
118
|
+
|
|
98
119
|
# Class wrapper
|
|
99
120
|
if isinstance(obj, type): # if inspect.isclass(obj):
|
|
100
|
-
|
|
101
|
-
num_of_white_spaces=self._calculate_white_space(obj.__doc__)
|
|
102
|
-
)
|
|
103
|
-
return obj
|
|
121
|
+
return self._update_doc(obj)
|
|
104
122
|
|
|
105
123
|
# Function wrapper
|
|
106
124
|
@wraps(obj)
|
|
107
125
|
def wrapper(*args: _P.args, **kwargs: _P.kwargs) -> _R:
|
|
108
126
|
return obj(*args, **kwargs)
|
|
109
127
|
|
|
110
|
-
|
|
111
|
-
# version_note = self._generate_version_note()
|
|
112
|
-
# if wrapper.__doc__ is None:
|
|
113
|
-
# wrapper.__doc__ = version_note
|
|
114
|
-
# else:
|
|
115
|
-
# wrapper.__doc__ += version_note
|
|
116
|
-
|
|
117
|
-
wrapper.__doc__ = (wrapper.__doc__ or "") + self._generate_version_note(
|
|
118
|
-
num_of_white_spaces=self._calculate_white_space(wrapper.__doc__)
|
|
119
|
-
)
|
|
120
|
-
|
|
121
|
-
return wrapper
|
|
128
|
+
return self._update_doc(wrapper)
|
|
122
129
|
|
|
123
130
|
def _calculate_white_space(self, docs: str | None) -> int:
|
|
124
131
|
"""
|
|
@@ -158,6 +165,17 @@ class SphinxDocstring:
|
|
|
158
165
|
reason=reason_str,
|
|
159
166
|
)
|
|
160
167
|
|
|
168
|
+
@overload
|
|
169
|
+
def _update_doc(self, obj: _T) -> _T: ...
|
|
170
|
+
@overload
|
|
171
|
+
def _update_doc(self, obj: Callable[_P, _R]) -> Callable[_P, _R]: ...
|
|
172
|
+
def _update_doc(self, obj: _T | Callable[_P, _R]) -> _T | Callable[_P, _R]:
|
|
173
|
+
"""Update docstring for an object"""
|
|
174
|
+
obj.__doc__ = (obj.__doc__ or "") + self._generate_version_note(
|
|
175
|
+
num_of_white_spaces=self._calculate_white_space(obj.__doc__)
|
|
176
|
+
)
|
|
177
|
+
return obj
|
|
178
|
+
|
|
161
179
|
|
|
162
180
|
# Partial
|
|
163
181
|
# ---------------------------------------------------------------------------
|
|
@@ -3,8 +3,8 @@ Absfuyu: Core
|
|
|
3
3
|
-------------
|
|
4
4
|
Dummy functions when other libraries are unvailable
|
|
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 Package
|
|
@@ -26,7 +26,7 @@ from importlib import import_module
|
|
|
26
26
|
try:
|
|
27
27
|
_tqdm = import_module("tqdm")
|
|
28
28
|
tqdm = getattr(_tqdm, "tqdm") # noqa
|
|
29
|
-
except (
|
|
29
|
+
except (ImportError, AttributeError):
|
|
30
30
|
|
|
31
31
|
def tqdm(iterable, *args, **kwargs):
|
|
32
32
|
"""
|
|
@@ -40,7 +40,7 @@ except (ModuleNotFoundError, AttributeError):
|
|
|
40
40
|
try:
|
|
41
41
|
_unidecode = import_module("unidecode")
|
|
42
42
|
unidecode = getattr(_unidecode, "unidecode") # noqa
|
|
43
|
-
except (
|
|
43
|
+
except (ImportError, AttributeError):
|
|
44
44
|
|
|
45
45
|
def unidecode(*args, **kwargs):
|
|
46
46
|
"""
|
|
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
|
|
|
3
3
|
-----------------------
|
|
4
4
|
dict extension
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.2.0
|
|
7
|
+
Date updated: 12/03/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -37,6 +37,9 @@ class DictAnalyzeResult(NamedTuple):
|
|
|
37
37
|
class DictExt(ShowAllMethodsMixin, dict):
|
|
38
38
|
"""
|
|
39
39
|
``dict`` extension
|
|
40
|
+
|
|
41
|
+
>>> # For a list of new methods
|
|
42
|
+
>>> DictExt.show_all_methods()
|
|
40
43
|
"""
|
|
41
44
|
|
|
42
45
|
@versionchanged("3.3.0", reason="Updated return type")
|
|
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
|
|
|
3
3
|
-----------------------
|
|
4
4
|
int extension
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.2.0
|
|
7
|
+
Date updated: 12/03/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -62,6 +62,9 @@ class Pow:
|
|
|
62
62
|
class IntExt(ShowAllMethodsMixin, int):
|
|
63
63
|
"""
|
|
64
64
|
``int`` extension
|
|
65
|
+
|
|
66
|
+
>>> # For a list of new methods
|
|
67
|
+
>>> IntExt.show_all_methods()
|
|
65
68
|
"""
|
|
66
69
|
|
|
67
70
|
# convert stuff
|