absfuyu 5.8.0__tar.gz → 5.10.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 (128) hide show
  1. {absfuyu-5.8.0 → absfuyu-5.10.0}/PKG-INFO +4 -1
  2. {absfuyu-5.8.0 → absfuyu-5.10.0}/pyproject.toml +9 -1
  3. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/__init__.py +1 -1
  4. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/__main__.py +2 -2
  5. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/cli/__init__.py +2 -2
  6. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/cli/color.py +2 -2
  7. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/cli/config_group.py +2 -2
  8. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/cli/do_group.py +2 -2
  9. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/cli/game_group.py +20 -2
  10. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/cli/tool_group.py +2 -2
  11. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/config/__init__.py +2 -2
  12. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/core/__init__.py +2 -2
  13. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/core/baseclass.py +2 -2
  14. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/core/baseclass2.py +2 -2
  15. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/core/decorator.py +2 -2
  16. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/core/docstring.py +2 -2
  17. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/core/dummy_cli.py +2 -2
  18. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/core/dummy_func.py +2 -2
  19. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/dxt/__init__.py +2 -2
  20. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/dxt/dictext.py +2 -2
  21. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/dxt/dxt_support.py +2 -2
  22. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/dxt/intext.py +2 -2
  23. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/dxt/listext.py +13 -18
  24. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/dxt/strext.py +2 -2
  25. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/__init__.py +2 -2
  26. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/beautiful.py +2 -2
  27. absfuyu-5.10.0/src/absfuyu/extra/da/__init__.py +72 -0
  28. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/da/dadf.py +2 -2
  29. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/da/dadf_base.py +2 -2
  30. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/da/df_func.py +2 -2
  31. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/da/mplt.py +2 -2
  32. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/data_analysis.py +2 -2
  33. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/pdf.py +2 -2
  34. absfuyu-5.10.0/src/absfuyu/extra/rclone.py +253 -0
  35. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/extra/xml.py +2 -2
  36. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/fun/__init__.py +2 -2
  37. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/fun/rubik.py +2 -2
  38. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/fun/tarot.py +2 -2
  39. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/game/__init__.py +2 -2
  40. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/game/game_stat.py +2 -2
  41. absfuyu-5.10.0/src/absfuyu/game/schulte.py +78 -0
  42. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/game/sudoku.py +2 -2
  43. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/game/tictactoe.py +2 -2
  44. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/game/wordle.py +2 -2
  45. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/general/__init__.py +2 -2
  46. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/general/content.py +2 -2
  47. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/general/human.py +2 -2
  48. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/general/shape.py +2 -2
  49. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/logger.py +2 -2
  50. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/pkg_data/__init__.py +2 -2
  51. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/pkg_data/deprecated.py +2 -2
  52. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/pkg_data/logo.py +2 -2
  53. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/sort.py +2 -2
  54. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/__init__.py +2 -2
  55. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/checksum.py +2 -2
  56. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/converter.py +2 -2
  57. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/generator.py +2 -2
  58. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/inspector.py +2 -2
  59. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/keygen.py +2 -2
  60. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/obfuscator.py +2 -2
  61. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/passwordlib.py +2 -2
  62. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/shutdownizer.py +2 -2
  63. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/sw.py +76 -5
  64. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/tools/web.py +2 -2
  65. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/typings.py +2 -2
  66. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/__init__.py +31 -2
  67. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/api.py +2 -2
  68. absfuyu-5.10.0/src/absfuyu/util/gui.py +91 -0
  69. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/json_method.py +2 -2
  70. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/lunar.py +2 -2
  71. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/path.py +2 -2
  72. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/performance.py +2 -2
  73. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/shorten_number.py +2 -2
  74. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/text_table.py +2 -2
  75. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/util/zipped.py +2 -2
  76. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/version.py +2 -2
  77. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/conftest.py +2 -2
  78. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_api.py +2 -2
  79. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_beautiful.py +2 -2
  80. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_config.py +2 -2
  81. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_converter.py +2 -2
  82. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_core.py +2 -2
  83. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_data_analysis.py +2 -2
  84. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_dictext.py +2 -2
  85. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_everything.py +2 -2
  86. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_extra.py +2 -2
  87. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_fun.py +2 -2
  88. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_game.py +2 -2
  89. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_generator.py +2 -2
  90. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_inspector.py +2 -2
  91. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_intext.py +2 -2
  92. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_listext.py +2 -2
  93. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_logger.py +2 -2
  94. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_obfuscator.py +2 -2
  95. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_passwordlib.py +2 -2
  96. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_performance.py +2 -2
  97. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_pkg_data.py +2 -2
  98. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_shape.py +2 -2
  99. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_shorten_number.py +2 -2
  100. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_strext.py +2 -2
  101. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_text_table.py +2 -2
  102. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_tools.py +2 -2
  103. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_util.py +2 -2
  104. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/test_version.py +2 -2
  105. absfuyu-5.8.0/src/absfuyu/extra/da/__init__.py +0 -38
  106. {absfuyu-5.8.0 → absfuyu-5.10.0}/.gitignore +0 -0
  107. {absfuyu-5.8.0 → absfuyu-5.10.0}/LICENSE +0 -0
  108. {absfuyu-5.8.0 → absfuyu-5.10.0}/README.md +0 -0
  109. {absfuyu-5.8.0 → absfuyu-5.10.0}/dev_requirements.txt +0 -0
  110. {absfuyu-5.8.0 → absfuyu-5.10.0}/docs/Makefile +0 -0
  111. {absfuyu-5.8.0 → absfuyu-5.10.0}/docs/_template/versioning.html +0 -0
  112. {absfuyu-5.8.0 → absfuyu-5.10.0}/docs/conf.py +0 -0
  113. {absfuyu-5.8.0 → absfuyu-5.10.0}/docs/index.rst +0 -0
  114. {absfuyu-5.8.0 → absfuyu-5.10.0}/docs/info.md +0 -0
  115. {absfuyu-5.8.0 → absfuyu-5.10.0}/docs/make.bat +0 -0
  116. {absfuyu-5.8.0 → absfuyu-5.10.0}/docs/modules.rst +0 -0
  117. {absfuyu-5.8.0 → absfuyu-5.10.0}/images/Logo Full.png +0 -0
  118. {absfuyu-5.8.0 → absfuyu-5.10.0}/images/Logo Square.png +0 -0
  119. {absfuyu-5.8.0 → absfuyu-5.10.0}/images/Logo White.png +0 -0
  120. {absfuyu-5.8.0 → absfuyu-5.10.0}/images/repository-image-crop.png +0 -0
  121. {absfuyu-5.8.0 → absfuyu-5.10.0}/images/repository-image-white.png +0 -0
  122. {absfuyu-5.8.0 → absfuyu-5.10.0}/images/repository-image.png +0 -0
  123. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/config/config.json +0 -0
  124. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/pkg_data/chemistry.pkl +0 -0
  125. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/pkg_data/passwordlib_lzma.pkl +0 -0
  126. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/pkg_data/tarot.pkl +0 -0
  127. {absfuyu-5.8.0 → absfuyu-5.10.0}/src/absfuyu/py.typed +0 -0
  128. {absfuyu-5.8.0 → absfuyu-5.10.0}/tests/__init__.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: absfuyu
3
- Version: 5.8.0
3
+ Version: 5.10.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/
@@ -52,6 +52,7 @@ Provides-Extra: full
52
52
  Requires-Dist: numpy; extra == 'full'
53
53
  Requires-Dist: openpyxl; extra == 'full'
54
54
  Requires-Dist: pandas; extra == 'full'
55
+ Requires-Dist: rclone-crypt; extra == 'full'
55
56
  Requires-Dist: rich; extra == 'full'
56
57
  Requires-Dist: spire-pdf; extra == 'full'
57
58
  Requires-Dist: tqdm; extra == 'full'
@@ -60,6 +61,8 @@ Requires-Dist: xlsxwriter; extra == 'full'
60
61
  Requires-Dist: xmltodict; extra == 'full'
61
62
  Provides-Extra: pdf
62
63
  Requires-Dist: spire-pdf; extra == 'pdf'
64
+ Provides-Extra: rclone
65
+ Requires-Dist: rclone-crypt; extra == 'rclone'
63
66
  Provides-Extra: xml
64
67
  Requires-Dist: xmltodict; extra == 'xml'
65
68
  Description-Content-Type: text/markdown
@@ -67,6 +67,7 @@ full = [
67
67
  "xlsxwriter",
68
68
  "spire-pdf",
69
69
  "xmltodict",
70
+ "rclone-crypt",
70
71
  # "jinja2"
71
72
  ]
72
73
  docs = ["numpy", "pandas", "rich", "spire-pdf"]
@@ -75,6 +76,7 @@ extra = ["numpy", "pandas", "openpyxl", "xlsxwriter", "spire-pdf", "xmltodict"]
75
76
  pdf = ["spire-pdf"]
76
77
  dadf = ["numpy", "pandas", "openpyxl", "xlsxwriter"]
77
78
  xml = ["xmltodict"]
79
+ rclone = ["rclone-crypt"]
78
80
 
79
81
 
80
82
  [project.scripts]
@@ -379,7 +381,13 @@ line-length = 120
379
381
  [tool.uv]
380
382
  required-version = ">=0.5.0"
381
383
  cache-dir = "./.uv_cache"
382
- dev-dependencies = ["ruff", "mypy>=1.18.0", "pytest>=8.4.0", "hatch>=1.14.1"]
384
+ dev-dependencies = [
385
+ "ruff",
386
+ "mypy>=1.18.0",
387
+ "pytest>=8.4.0",
388
+ "hatch>=1.14.1",
389
+ "python-dotenv",
390
+ ]
383
391
 
384
392
  [tool.uv.build-backend]
385
393
  source-include = ["tests/**"]
@@ -22,7 +22,7 @@ Using in cmd:
22
22
  __title__ = "absfuyu"
23
23
  __author__ = "AbsoluteWinter"
24
24
  __license__ = "MIT License"
25
- __version__ = "5.8.0"
25
+ __version__ = "5.10.0"
26
26
  __all__ = [
27
27
  "core",
28
28
  "config",
@@ -3,8 +3,8 @@ ABSFUYU
3
3
  -------
4
4
  COMMAND LINE INTERFACE
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Library
@@ -3,8 +3,8 @@ ABSFUYU
3
3
  -------
4
4
  COMMAND LINE INTERFACE
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  __all__ = ["cli"]
@@ -3,8 +3,8 @@ ABSFUYU CLI
3
3
  -----------
4
4
  Color
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ ABSFUYU CLI
3
3
  -----------
4
4
  Config
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/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.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/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.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 25/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -17,6 +17,7 @@ __all__ = ["game_group"]
17
17
  import click
18
18
 
19
19
  from absfuyu.game import game_escapeLoop, game_RockPaperScissors
20
+ from absfuyu.game.schulte import SchulteTable
20
21
  from absfuyu.game.sudoku import Sudoku
21
22
  from absfuyu.game.tictactoe import GameMode, TicTacToe
22
23
  from absfuyu.game.wordle import Wordle
@@ -103,6 +104,22 @@ def tictactoe(size: int, game_mode: str, bot_time: float) -> None:
103
104
  instance.play(game_mode, bot_time=bot_time)
104
105
 
105
106
 
107
+ @click.command(name="schulte")
108
+ @click.option(
109
+ "--size",
110
+ "-s",
111
+ "size",
112
+ type=int,
113
+ default=5,
114
+ show_default=True,
115
+ help="Size of the table",
116
+ )
117
+ def schulte_table(size: int) -> None:
118
+ """Schulte table"""
119
+ engine = SchulteTable(size=size)
120
+ engine.make_table()
121
+
122
+
106
123
  @click.group(name="game")
107
124
  def game_group() -> None:
108
125
  """Play game"""
@@ -114,3 +131,4 @@ game_group.add_command(escape_loop)
114
131
  game_group.add_command(wordle_solver)
115
132
  game_group.add_command(sudoku_solver)
116
133
  game_group.add_command(tictactoe)
134
+ game_group.add_command(schulte_table)
@@ -3,8 +3,8 @@ ABSFUYU CLI
3
3
  -----------
4
4
  Tool
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Configuration
3
3
  ----------------------
4
4
  Package configuration module
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Bases for other features
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Bases for other features
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Bases for other features (with library)
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Decorator
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Sphinx docstring decorator
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Dummy cli
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Core
3
3
  -------------
4
4
  Dummy functions when other libraries are unvailable
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  Extension for data type such as ``list``, ``str``, ``dict``, ...
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
 
9
9
  Features:
10
10
  ---------
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  dict extension
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  Support classes
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  int extension
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  list extension
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 25/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -80,9 +80,7 @@ class ListExt(GetClassMembersMixin, list):
80
80
  >>> ListExt(range(10)).head(2)
81
81
  [0, 1]
82
82
  """
83
- number_of_items = int(
84
- set_min_max(number_of_items, min_value=0, max_value=len(self))
85
- )
83
+ number_of_items = int(set_min_max(number_of_items, min_value=0, max_value=len(self)))
86
84
  return self[:number_of_items]
87
85
 
88
86
  def tail(self, number_of_items: int = 5) -> list:
@@ -106,9 +104,7 @@ class ListExt(GetClassMembersMixin, list):
106
104
  >>> ListExt(range(10)).tail(2)
107
105
  [8, 9]
108
106
  """
109
- number_of_items = int(
110
- set_min_max(number_of_items, min_value=0, max_value=len(self))
111
- )
107
+ number_of_items = int(set_min_max(number_of_items, min_value=0, max_value=len(self)))
112
108
  return self[::-1][:number_of_items][::-1]
113
109
 
114
110
  # Misc
@@ -165,15 +161,13 @@ class ListExt(GetClassMembersMixin, list):
165
161
  type_weights[type(x)] = len(type_weights)
166
162
  # logger.debug(f"Type weight: {type_weights}")
167
163
 
168
- output = sorted(
169
- lst, key=lambda x: (type_weights[type(x)], str(x)), reverse=reverse
170
- )
164
+ output = sorted(lst, key=lambda x: (type_weights[type(x)], str(x)), reverse=reverse)
171
165
 
172
166
  # logger.debug(output)
173
167
  return self.__class__(output)
174
168
 
175
169
  @overload
176
- def freq(self) -> dict: ...
170
+ def freq(self) -> dict: ... # type: ignore
177
171
 
178
172
  @overload
179
173
  def freq(
@@ -256,9 +250,7 @@ class ListExt(GetClassMembersMixin, list):
256
250
  # logger.debug(times_appear)
257
251
 
258
252
  if appear_increment:
259
- times_appear_increment: list[int] = list(
260
- accumulate(times_appear.values(), operator.add)
261
- )
253
+ times_appear_increment: list[int] = list(accumulate(times_appear.values(), operator.add))
262
254
  # logger.debug(times_appear_increment)
263
255
  return times_appear_increment # incremental index list
264
256
  else:
@@ -459,6 +451,11 @@ class ListExt(GetClassMembersMixin, list):
459
451
  """
460
452
  return [self.pick_one() for _ in range(number_of_items)]
461
453
 
454
+ @versionadded("5.10.0")
455
+ def shuffle(self) -> Self:
456
+ random.shuffle(self)
457
+ return self
458
+
462
459
  # Len
463
460
  @versionchanged("5.2.0", reason="Handle more type")
464
461
  def len_items(self) -> Self:
@@ -857,9 +854,7 @@ class ListExt(GetClassMembersMixin, list):
857
854
  fill = " "
858
855
 
859
856
  # Calculate how many columns of text
860
- column_count = (
861
- max(1, available_width // max_item_length) if max_item_length > 0 else 1
862
- )
857
+ column_count = max(1, available_width // max_item_length) if max_item_length > 0 else 1
863
858
 
864
859
  # splitted_chunk: list[list[str]] = self.split_chunk(cols)
865
860
  # mod_chunk = self.__class__(
@@ -3,8 +3,8 @@ Absfuyu: Data Extension
3
3
  -----------------------
4
4
  str extension
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module Package
@@ -3,8 +3,8 @@ Absfuyu: Extra
3
3
  --------------
4
4
  Features that require additional libraries
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
 
@@ -3,8 +3,8 @@ Absfuyu: Beautiful
3
3
  ------------------
4
4
  A decorator that makes output more beautiful
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -0,0 +1,72 @@
1
+ """
2
+ Absfuyu: Data Analysis
3
+ ----------------------
4
+ Data Analyst
5
+
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
+ """
9
+
10
+ # Module level
11
+ # ---------------------------------------------------------------------------
12
+ __all__ = [
13
+ "MatplotlibFormatString",
14
+ "DADF",
15
+ # Function
16
+ "custom_pandas_settings",
17
+ "reset_custom_pandas_settings",
18
+ ]
19
+
20
+
21
+ # Library
22
+ # ---------------------------------------------------------------------------
23
+ DA_MODE = False
24
+
25
+ try:
26
+ import numpy as np
27
+ import openpyxl
28
+ import pandas as pd
29
+ import xlsxwriter
30
+ except ImportError:
31
+ from subprocess import run
32
+
33
+ from absfuyu.config import ABSFUYU_CONFIG
34
+
35
+ if ABSFUYU_CONFIG._get_setting("auto-install-extra").value: # type: ignore
36
+ cmd = "python -m pip install -U absfuyu[full]".split()
37
+ run(cmd)
38
+ else:
39
+ raise SystemExit("This feature is in absfuyu[full] package") # noqa: B904
40
+ else:
41
+ DA_MODE = True
42
+
43
+ from absfuyu.extra.da.dadf import DADF
44
+ from absfuyu.extra.da.mplt import MatplotlibFormatString
45
+
46
+
47
+ # Function
48
+ # ---------------------------------------------------------------------------
49
+ def custom_pandas_settings(*, show_all_rows: bool = False) -> None:
50
+ """
51
+ Custom pandas settings. Currently only show all cols/rows
52
+
53
+ Parameters
54
+ ----------
55
+ show_all_rows : bool, optional
56
+ Show all rows, by default False
57
+ """
58
+ # Shows all columns
59
+ pd.set_option("display.max_columns", None) # type: ignore
60
+
61
+ if show_all_rows:
62
+ # (optional) also show all rows if needed
63
+ pd.set_option("display.max_rows", None) # type: ignore
64
+
65
+
66
+ def reset_custom_pandas_settings() -> None:
67
+ """
68
+ Reset custom pandas settings
69
+ """
70
+ settings = ["display.max_columns", "display.max_rows"]
71
+ for x in settings:
72
+ pd.reset_option(x) # type: ignore
@@ -3,8 +3,8 @@ Absfuyu: Data Analysis
3
3
  ----------------------
4
4
  Data Analyst DataFrame
5
5
 
6
- Version: 5.8.0
7
- Date updated: 17/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -3,8 +3,8 @@ Absfuyu: Data Analysis
3
3
  ----------------------
4
4
  Data Analyst DataFrame - Base/Core
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -3,8 +3,8 @@ Absfuyu: Data Analysis
3
3
  ----------------------
4
4
  DF Function
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -3,8 +3,8 @@ Absfuyu: Data Analysis
3
3
  ----------------------
4
4
  Matplotlib Helper
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level
@@ -4,8 +4,8 @@ Absfuyu: Data Analysis [W.I.P]
4
4
  Extension for ``pd.DataFrame``
5
5
  (deprecated)
6
6
 
7
- Version: 5.8.0
8
- Date updated: 16/09/2025 (dd/mm/yyyy)
7
+ Version: 5.10.0
8
+ Date updated: 23/09/2025 (dd/mm/yyyy)
9
9
  """
10
10
 
11
11
  # Library
@@ -3,8 +3,8 @@ Absfuyu: PDF
3
3
  ------------
4
4
  PDF Tool [W.I.P]
5
5
 
6
- Version: 5.8.0
7
- Date updated: 16/09/2025 (dd/mm/yyyy)
6
+ Version: 5.10.0
7
+ Date updated: 23/09/2025 (dd/mm/yyyy)
8
8
  """
9
9
 
10
10
  # Module level