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.

Files changed (122) hide show
  1. {absfuyu-5.1.0 → absfuyu-5.2.0}/PKG-INFO +1 -1
  2. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/__init__.py +1 -1
  3. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/__main__.py +3 -3
  4. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/__init__.py +1 -1
  5. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/color.py +3 -3
  6. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/config_group.py +2 -2
  7. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/do_group.py +2 -2
  8. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/game_group.py +2 -2
  9. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/cli/tool_group.py +2 -3
  10. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/config/__init__.py +1 -1
  11. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/__init__.py +1 -1
  12. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/baseclass.py +2 -2
  13. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/baseclass2.py +1 -1
  14. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/decorator.py +4 -4
  15. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/docstring.py +43 -25
  16. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/dummy_cli.py +1 -1
  17. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/core/dummy_func.py +4 -4
  18. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/__init__.py +1 -1
  19. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/dictext.py +5 -2
  20. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/dxt_support.py +1 -1
  21. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/intext.py +5 -2
  22. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/listext.py +288 -126
  23. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/dxt/strext.py +75 -15
  24. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/__init__.py +1 -1
  25. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/beautiful.py +1 -1
  26. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/__init__.py +1 -1
  27. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/dadf.py +43 -4
  28. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/dadf_base.py +1 -1
  29. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/df_func.py +1 -1
  30. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/da/mplt.py +1 -1
  31. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/extra/data_analysis.py +3 -3
  32. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/fun/__init__.py +1 -1
  33. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/fun/tarot.py +1 -1
  34. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/__init__.py +1 -1
  35. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/game_stat.py +1 -1
  36. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/sudoku.py +1 -1
  37. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/tictactoe.py +2 -3
  38. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/game/wordle.py +1 -1
  39. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/general/__init__.py +1 -1
  40. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/general/content.py +2 -2
  41. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/general/human.py +1 -1
  42. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/general/shape.py +1 -1
  43. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/logger.py +1 -1
  44. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/__init__.py +1 -1
  45. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/deprecated.py +1 -1
  46. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/sort.py +1 -1
  47. absfuyu-5.2.0/src/absfuyu/tools/__init__.py +34 -0
  48. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/checksum.py +2 -2
  49. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/converter.py +29 -8
  50. absfuyu-5.2.0/src/absfuyu/tools/generator.py +444 -0
  51. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/inspector.py +68 -38
  52. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/keygen.py +1 -1
  53. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/obfuscator.py +2 -2
  54. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/passwordlib.py +3 -4
  55. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/shutdownizer.py +1 -1
  56. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/tools/web.py +1 -1
  57. absfuyu-5.2.0/src/absfuyu/typings.py +136 -0
  58. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/__init__.py +18 -4
  59. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/api.py +36 -16
  60. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/json_method.py +43 -14
  61. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/lunar.py +1 -1
  62. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/path.py +2 -2
  63. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/performance.py +120 -5
  64. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/shorten_number.py +1 -1
  65. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/text_table.py +48 -14
  66. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/util/zipped.py +4 -3
  67. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/version.py +2 -2
  68. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/conftest.py +1 -1
  69. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_api.py +1 -1
  70. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_beautiful.py +1 -1
  71. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_config.py +1 -1
  72. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_converter.py +1 -1
  73. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_core.py +4 -2
  74. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_data_analysis.py +1 -1
  75. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_dictext.py +1 -1
  76. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_everything.py +11 -5
  77. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_extra.py +1 -1
  78. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_fun.py +1 -1
  79. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_game.py +1 -1
  80. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_generator.py +4 -2
  81. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_inspector.py +3 -3
  82. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_intext.py +1 -1
  83. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_listext.py +30 -2
  84. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_logger.py +1 -1
  85. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_obfuscator.py +1 -1
  86. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_passwordlib.py +1 -1
  87. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_performance.py +1 -1
  88. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_pkg_data.py +1 -1
  89. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_shape.py +1 -1
  90. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_shorten_number.py +1 -1
  91. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_strext.py +2 -9
  92. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_text_table.py +2 -2
  93. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_tools.py +1 -1
  94. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_util.py +4 -2
  95. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/test_version.py +2 -2
  96. absfuyu-5.1.0/src/absfuyu/core/typings.py +0 -40
  97. absfuyu-5.1.0/src/absfuyu/tools/__init__.py +0 -31
  98. absfuyu-5.1.0/src/absfuyu/tools/generator.py +0 -303
  99. {absfuyu-5.1.0 → absfuyu-5.2.0}/.gitignore +0 -0
  100. {absfuyu-5.1.0 → absfuyu-5.2.0}/LICENSE +0 -0
  101. {absfuyu-5.1.0 → absfuyu-5.2.0}/README.md +0 -0
  102. {absfuyu-5.1.0 → absfuyu-5.2.0}/dev_requirements.txt +0 -0
  103. {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/Makefile +0 -0
  104. {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/_template/versioning.html +0 -0
  105. {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/conf.py +0 -0
  106. {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/index.rst +0 -0
  107. {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/info.md +0 -0
  108. {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/make.bat +0 -0
  109. {absfuyu-5.1.0 → absfuyu-5.2.0}/docs/modules.rst +0 -0
  110. {absfuyu-5.1.0 → absfuyu-5.2.0}/images/Logo Full.png +0 -0
  111. {absfuyu-5.1.0 → absfuyu-5.2.0}/images/Logo Square.png +0 -0
  112. {absfuyu-5.1.0 → absfuyu-5.2.0}/images/Logo White.png +0 -0
  113. {absfuyu-5.1.0 → absfuyu-5.2.0}/images/repository-image-crop.png +0 -0
  114. {absfuyu-5.1.0 → absfuyu-5.2.0}/images/repository-image-white.png +0 -0
  115. {absfuyu-5.1.0 → absfuyu-5.2.0}/images/repository-image.png +0 -0
  116. {absfuyu-5.1.0 → absfuyu-5.2.0}/pyproject.toml +0 -0
  117. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/config/config.json +0 -0
  118. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/chemistry.pkl +0 -0
  119. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/passwordlib_lzma.pkl +0 -0
  120. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/pkg_data/tarot.pkl +0 -0
  121. {absfuyu-5.1.0 → absfuyu-5.2.0}/src/absfuyu/py.typed +0 -0
  122. {absfuyu-5.1.0 → absfuyu-5.2.0}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: absfuyu
3
- Version: 5.1.0
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/
@@ -22,7 +22,7 @@ Using in cmd:
22
22
  __title__ = "absfuyu"
23
23
  __author__ = "AbsoluteWinter"
24
24
  __license__ = "MIT License"
25
- __version__ = "5.1.0"
25
+ __version__ = "5.2.0"
26
26
  __all__ = [
27
27
  "core",
28
28
  "config",
@@ -3,15 +3,15 @@ ABSFUYU
3
3
  -------
4
4
  COMMAND LINE INTERFACE
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
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 ModuleNotFoundError: # Check for `click`, `colorama`
14
+ except ImportError: # Check for `click`, `colorama`
15
15
  from absfuyu.core.dummy_cli import cli
16
16
 
17
17
 
@@ -3,7 +3,7 @@ ABSFUYU
3
3
  -------
4
4
  COMMAND LINE INTERFACE
5
5
 
6
- Version: 5.1.0
6
+ Version: 5.2.0
7
7
  Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
@@ -3,8 +3,8 @@ ABSFUYU CLI
3
3
  -----------
4
4
  Color
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
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 ModuleNotFoundError: # Check for `colorama`
19
+ except ImportError: # Check for `colorama`
20
20
  colorama = None
21
21
 
22
22
  # Color
@@ -3,8 +3,8 @@ ABSFUYU CLI
3
3
  -----------
4
4
  Config
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
6
+ Version: 5.2.0
7
+ Date updated: 12/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ ABSFUYU CLI
3
3
  -----------
4
4
  Do
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
6
+ Version: 5.2.0
7
+ Date updated: 12/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ ABSFUYU CLI
3
3
  -----------
4
4
  Game
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
6
+ Version: 5.2.0
7
+ Date updated: 12/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,11 +3,10 @@ ABSFUYU CLI
3
3
  -----------
4
4
  Tool
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
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,7 +3,7 @@ Absfuyu: Configuration
3
3
  ----------------------
4
4
  Package configuration module
5
5
 
6
- Version: 5.1.0
6
+ Version: 5.2.0
7
7
  Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
@@ -3,7 +3,7 @@ Absfuyu: Core
3
3
  -------------
4
4
  Bases for other features
5
5
 
6
- Version: 5.1.0
6
+ Version: 5.2.0
7
7
  Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Bases for other features
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
6
+ Version: 5.2.0
7
+ Date updated: 11/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,7 +3,7 @@ Absfuyu: Core
3
3
  -------------
4
4
  Bases for other features (with library)
5
5
 
6
- Version: 5.1.0
6
+ Version: 5.2.0
7
7
  Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Decorator
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
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), {}) # type: ignore[return-value]
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.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
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 | int, optional
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: ... # Class overload
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
- obj.__doc__ = (obj.__doc__ or "") + self._generate_version_note(
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
- # Add docstring
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,7 +3,7 @@ Absfuyu: Core
3
3
  -------------
4
4
  Dummy cli
5
5
 
6
- Version: 5.1.0
6
+ Version: 5.2.0
7
7
  Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Dummy functions when other libraries are unvailable
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
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 (ModuleNotFoundError, AttributeError):
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 (ModuleNotFoundError, AttributeError):
43
+ except (ImportError, AttributeError):
44
44
 
45
45
  def unidecode(*args, **kwargs):
46
46
  """
@@ -3,7 +3,7 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  Extension for data type such as ``list``, ``str``, ``dict``, ...
5
5
 
6
- Version: 5.1.0
6
+ Version: 5.2.0
7
7
  Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
 
9
9
  Features:
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  dict extension
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
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,7 +3,7 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  Support classes
5
5
 
6
- Version: 5.1.0
6
+ Version: 5.2.0
7
7
  Date updated: 10/03/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  int extension
5
5
 
6
- Version: 5.1.0
7
- Date updated: 10/03/2025 (dd/mm/yyyy)
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