absfuyu 3.2.0__py3-none-any.whl → 3.4.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.

Files changed (61) hide show
  1. absfuyu/__init__.py +3 -10
  2. absfuyu/__main__.py +5 -250
  3. absfuyu/cli/__init__.py +51 -0
  4. absfuyu/cli/color.py +24 -0
  5. absfuyu/cli/config_group.py +56 -0
  6. absfuyu/cli/do_group.py +98 -0
  7. absfuyu/cli/game_group.py +109 -0
  8. absfuyu/config/__init__.py +55 -94
  9. absfuyu/config/config.json +0 -7
  10. absfuyu/core.py +5 -66
  11. absfuyu/everything.py +7 -9
  12. absfuyu/extensions/beautiful.py +30 -23
  13. absfuyu/extensions/dev/__init__.py +11 -8
  14. absfuyu/extensions/dev/password_hash.py +4 -2
  15. absfuyu/extensions/dev/passwordlib.py +7 -5
  16. absfuyu/extensions/dev/project_starter.py +4 -2
  17. absfuyu/extensions/dev/shutdownizer.py +148 -0
  18. absfuyu/extensions/extra/__init__.py +1 -2
  19. absfuyu/extensions/extra/data_analysis.py +110 -58
  20. absfuyu/fun/WGS.py +50 -26
  21. absfuyu/fun/__init__.py +6 -7
  22. absfuyu/fun/tarot.py +1 -1
  23. absfuyu/game/__init__.py +75 -81
  24. absfuyu/game/game_stat.py +36 -0
  25. absfuyu/game/sudoku.py +41 -48
  26. absfuyu/game/tictactoe.py +303 -548
  27. absfuyu/game/wordle.py +56 -47
  28. absfuyu/general/__init__.py +17 -7
  29. absfuyu/general/content.py +16 -15
  30. absfuyu/general/data_extension.py +314 -109
  31. absfuyu/general/generator.py +67 -67
  32. absfuyu/general/human.py +148 -78
  33. absfuyu/logger.py +94 -68
  34. absfuyu/pkg_data/__init__.py +29 -25
  35. absfuyu/py.typed +0 -0
  36. absfuyu/sort.py +61 -47
  37. absfuyu/tools/__init__.py +0 -1
  38. absfuyu/tools/converter.py +80 -62
  39. absfuyu/tools/keygen.py +62 -67
  40. absfuyu/tools/obfuscator.py +57 -53
  41. absfuyu/tools/stats.py +24 -24
  42. absfuyu/tools/web.py +10 -9
  43. absfuyu/util/__init__.py +38 -40
  44. absfuyu/util/api.py +53 -43
  45. absfuyu/util/json_method.py +25 -27
  46. absfuyu/util/lunar.py +20 -24
  47. absfuyu/util/path.py +362 -241
  48. absfuyu/util/performance.py +36 -98
  49. absfuyu/util/pkl.py +8 -8
  50. absfuyu/util/zipped.py +17 -19
  51. absfuyu/version.py +137 -148
  52. absfuyu-3.4.0.dist-info/METADATA +124 -0
  53. absfuyu-3.4.0.dist-info/RECORD +59 -0
  54. {absfuyu-3.2.0.dist-info → absfuyu-3.4.0.dist-info}/WHEEL +1 -2
  55. {absfuyu-3.2.0.dist-info → absfuyu-3.4.0.dist-info}/entry_points.txt +1 -0
  56. {absfuyu-3.2.0.dist-info → absfuyu-3.4.0.dist-info/licenses}/LICENSE +1 -1
  57. absfuyu/extensions/dev/pkglib.py +0 -98
  58. absfuyu/game/tictactoe2.py +0 -318
  59. absfuyu-3.2.0.dist-info/METADATA +0 -216
  60. absfuyu-3.2.0.dist-info/RECORD +0 -55
  61. absfuyu-3.2.0.dist-info/top_level.txt +0 -1
absfuyu/__init__.py CHANGED
@@ -11,20 +11,18 @@ LINKS
11
11
  USAGE
12
12
  -----
13
13
 
14
- Normal import:
14
+ Normal import:
15
15
  >>> import absfuyu
16
16
  >>> help(absfuyu)
17
17
 
18
- Using in cmd (`absfuyu[cli]` required):
18
+ Using in cmd (`absfuyu[cli]` required):
19
19
  ``$ fuyu --help``
20
20
  """
21
21
 
22
-
23
- # Module level
24
- ###########################################################################
25
22
  __title__ = "absfuyu"
26
23
  __author__ = "AbsoluteWinter"
27
24
  __license__ = "MIT License"
25
+ __version__ = "3.4.0"
28
26
  __all__ = [
29
27
  "core",
30
28
  "config",
@@ -40,8 +38,3 @@ __all__ = [
40
38
  "util",
41
39
  "version",
42
40
  ]
43
-
44
-
45
- # Library
46
- ###########################################################################
47
- from .version import __version__
absfuyu/__main__.py CHANGED
@@ -1,260 +1,15 @@
1
1
  """
2
2
  ABSFUYU
3
- ---
3
+ -------
4
4
  COMMAND LINE INTERFACE
5
-
6
- Version: 2.0.1
7
- Date updated: 25/11/2023 (dd/mm/yyyy)
8
5
  """
9
6
 
10
-
11
- # Library
12
- ###########################################################################
13
- from random import choice as __randc
14
- import subprocess
15
-
16
- CLI_MODE = False
17
- try:
18
- import click
19
- import colorama
20
- except ImportError:
21
- # Auto install absfuyu[cli]
22
- from absfuyu.config import ABSFUYU_CONFIG
23
-
24
- if ABSFUYU_CONFIG._get_setting("auto-install-extra").value:
25
- __cmd: str = "python -m pip install -U absfuyu[cli]".split()
26
- subprocess.run(__cmd)
27
- else:
28
- raise SystemExit("This feature is in absfuyu[cli] package")
29
- else:
30
- CLI_MODE = True
31
-
32
- from absfuyu.config import ABSFUYU_CONFIG
33
- from absfuyu import core as __core
34
- from absfuyu import version as __v
35
-
36
-
37
- # Color stuff
38
- ###########################################################################
39
- if CLI_MODE:
40
- if colorama is not None:
41
- colorama.init(autoreset=True)
42
- __COLOR = __core.Color
43
- else:
44
- __COLOR = {"green": "", "blue": "", "red": "", "yellow": "", "reset": ""}
45
-
46
-
47
- # Main group
48
- ###########################################################################
49
- @click.command()
50
- def welcome():
51
- """Welcome message"""
52
- import os as __os
53
-
54
- try:
55
- user = __os.getlogin()
56
- except:
57
- import getpass
58
-
59
- user = getpass.getuser()
60
- welcome_msg = f"{__COLOR['green']}Welcome {__COLOR['red']}{user} {__COLOR['green']}to {__COLOR['blue']}absfuyu's cli"
61
- click.echo(
62
- f"""
63
- {__COLOR['reset']}{'='*(len(welcome_msg)-20)}
64
- {welcome_msg}
65
- {__COLOR['reset']}{'='*(len(welcome_msg)-20)}
66
- """
67
- )
68
- ABSFUYU_CONFIG.welcome()
69
-
70
-
71
- @click.command()
72
- @click.argument("name")
73
- def greet(name):
74
- """Greet"""
75
- click.echo(f"{__COLOR['yellow']}Hello {name}")
76
-
77
-
78
- @click.command()
79
- @click.option(
80
- "--setting",
81
- "-s",
82
- type=click.Choice(["luckgod", "install-extra"]),
83
- help="Toggle on/off selected setting",
84
- )
85
- def toggle(setting: str):
86
- """Toggle on/off setting"""
87
-
88
- # Dictionary
89
- trans = {
90
- "luckgod": "luckgod-mode",
91
- "install-extra": "auto-install-extra",
92
- } # trans[setting]
93
-
94
- if setting is None:
95
- click.echo(f"{__COLOR['red']}Invalid setting")
96
- else:
97
- ABSFUYU_CONFIG.toggle_setting(trans[setting])
98
- out = ABSFUYU_CONFIG._get_setting(trans[setting])
99
- click.echo(f"{__COLOR['red']}{out}")
100
- pass
101
-
102
-
103
- @click.command()
104
- def version():
105
- """Check current version"""
106
- click.echo(f"{__COLOR['green']}absfuyu: {__v.__version__}")
107
-
108
-
109
- # Do group
110
- ###########################################################################
111
- @click.command()
112
- @click.option(
113
- "--force_update/--no-force-update",
114
- "-F/-f",
115
- "force_update",
116
- type=bool,
117
- default=True,
118
- show_default=True,
119
- help="Update the package",
120
- )
121
- def update(force_update: bool):
122
- """Update the package to latest version"""
123
- click.echo(__COLOR["green"])
124
- __v._AbsfuyuPackage.check_for_update(force_update=force_update)
125
-
126
-
127
- @click.command()
128
- def reset():
129
- """Reset config to default value"""
130
- ABSFUYU_CONFIG.reset_config()
131
- click.echo(f"{__COLOR['green']}All settings have been reseted")
132
-
133
-
134
- @click.command()
135
- @click.option(
136
- "--game-name",
137
- "-g",
138
- type=click.Choice(["random", "esc", "rps", "ttt"], case_sensitive=False),
139
- default="random",
140
- show_default=True,
141
- help="Play game",
142
- )
143
- @click.option(
144
- "--size",
145
- "-s",
146
- type=int,
147
- default=3,
148
- show_default=True,
149
- help="Change game's size (if any)",
150
- )
151
- @click.option(
152
- "--mode", "-m", type=str, default=None, help="Change game's gamemode (if any)"
153
- )
154
- @click.option(
155
- "--board-style",
156
- "-b",
157
- "board_style",
158
- type=str,
159
- default="1",
160
- help="Change game's board style (if any)",
161
- )
162
- def game(game_name: str, size: int, mode: str, board_style):
163
- """
164
- Play game
165
-
166
- Game list:
167
- - esc: Escape loop
168
- - rps: Rock Paper Scissors
169
- - ttt: Tic Tac Toe
170
- """
171
- from absfuyu.game import game_escapeLoop, game_RockPaperScissors
172
-
173
- if game_name.startswith("random"):
174
- if __randc([0, 1]) == 0:
175
- game_escapeLoop()
176
- else:
177
- game_RockPaperScissors()
178
- else:
179
- if game_name.startswith("esc"):
180
- game_escapeLoop()
181
- elif game_name.startswith("rps"):
182
- game_RockPaperScissors(hard_mode=mode)
183
- elif game_name.startswith("ttt"):
184
- from absfuyu.game.tictactoe import game_tictactoe
185
-
186
- if board_style == "None":
187
- board_style = None
188
- elif board_style == "1":
189
- board_style = True
190
- else:
191
- board_style = False
192
- game_tictactoe(size=size, mode=mode, board_game=board_style)
193
-
194
-
195
- @click.command()
196
- @click.argument("pkg", type=click.Choice(__core.ModulePackage))
197
- def install(pkg: str):
198
- """Install absfuyu's extension"""
199
- cmd = f"pip install -U absfuyu[{pkg}]".split()
200
- try:
201
- subprocess.run(cmd)
202
- except:
203
- try:
204
- cmd2 = f"python -m pip install -U absfuyu[{pkg}]".split()
205
- subprocess.run(cmd2)
206
- except:
207
- click.echo(f"{__COLOR['red']}Unable to install absfuyu[{pkg}]")
208
- else:
209
- click.echo(f"{__COLOR['green']}absfuyu[{pkg}] installed")
210
- else:
211
- click.echo(f"{__COLOR['green']}absfuyu[{pkg}] installed")
212
-
213
-
214
- @click.command()
215
- def advice():
216
- """Give some recommendation when bored"""
217
- from .fun import im_bored
218
-
219
- click.echo(f"{__COLOR['green']}{im_bored()}")
220
-
221
-
222
- @click.group(name="do")
223
- def do_group():
224
- """Perform functionalities"""
225
- pass
226
-
227
-
228
- do_group.add_command(reset)
229
- do_group.add_command(update)
230
- do_group.add_command(game)
231
- do_group.add_command(install)
232
- do_group.add_command(advice)
233
-
234
-
235
- # Main group init
236
- ###########################################################################
237
- @click.group()
238
- def main():
239
- """
240
- absfuyu's command line interface
241
-
242
- Usage:
243
- python -m absfuyu --help
244
- fuyu --help
245
- """
246
- pass
7
+ from absfuyu.cli import cli
247
8
 
248
9
 
249
- main.add_command(welcome)
250
- main.add_command(greet)
251
- main.add_command(toggle)
252
- main.add_command(version)
253
- main.add_command(do_group)
10
+ def main() -> None:
11
+ cli()
254
12
 
255
13
 
256
- # Run
257
- ###########################################################################
258
14
  if __name__ == "__main__":
259
- if CLI_MODE:
260
- main()
15
+ main()
@@ -0,0 +1,51 @@
1
+ """
2
+ ABSFUYU
3
+ -------
4
+ COMMAND LINE INTERFACE
5
+
6
+ Version: 1.0.0
7
+ Date updated: 14/04/2024 (dd/mm/yyyy)
8
+ """
9
+
10
+ __all__ = ["cli"]
11
+
12
+ import platform
13
+
14
+ import click
15
+ import colorama
16
+
17
+ from absfuyu import __title__, __version__
18
+ from absfuyu.cli.color import COLOR
19
+ from absfuyu.cli.config_group import config_group
20
+ from absfuyu.cli.do_group import do_group
21
+ from absfuyu.cli.game_group import game_group
22
+
23
+ # Color stuff
24
+ colorama.init(autoreset=True)
25
+
26
+
27
+ @click.command()
28
+ def version() -> None:
29
+ """Show current version"""
30
+ ver_msg = f"{__title__} v{__version__}"
31
+ click.echo(
32
+ f"{COLOR['green']}{ver_msg}{COLOR['reset']}\n"
33
+ f"- os/type: {platform.system().lower()}\n"
34
+ f"- os/kernel: {platform.version()}\n"
35
+ f"- os/arch: {platform.machine().lower()}\n"
36
+ f"- python version: {platform.python_version()}\n"
37
+ )
38
+
39
+
40
+ @click.group(name="cli")
41
+ def cli() -> None:
42
+ """
43
+ absfuyu's command line interface
44
+ """
45
+ pass
46
+
47
+
48
+ cli.add_command(config_group)
49
+ cli.add_command(do_group)
50
+ cli.add_command(game_group)
51
+ cli.add_command(version)
absfuyu/cli/color.py ADDED
@@ -0,0 +1,24 @@
1
+ """
2
+ ABSFUYU CLI
3
+ -----------
4
+ Color
5
+
6
+ Version: 1.0.0
7
+ Date updated: 14/04/2024 (dd/mm/yyyy)
8
+ """
9
+
10
+ __all__ = ["COLOR"]
11
+
12
+ import colorama
13
+
14
+ COLOR = {
15
+ "green": colorama.Fore.LIGHTGREEN_EX,
16
+ "GREEN": colorama.Fore.GREEN,
17
+ "blue": colorama.Fore.LIGHTCYAN_EX,
18
+ "BLUE": colorama.Fore.CYAN,
19
+ "red": colorama.Fore.LIGHTRED_EX,
20
+ "RED": colorama.Fore.RED,
21
+ "yellow": colorama.Fore.LIGHTYELLOW_EX,
22
+ "YELLOW": colorama.Fore.YELLOW,
23
+ "reset": colorama.Fore.RESET,
24
+ }
@@ -0,0 +1,56 @@
1
+ """
2
+ ABSFUYU CLI
3
+ -----------
4
+ Config
5
+
6
+ Version: 1.0.0
7
+ Date updated: 14/04/2024 (dd/mm/yyyy)
8
+ """
9
+
10
+ __all__ = ["config_group"]
11
+
12
+ import click
13
+
14
+ from absfuyu.cli.color import COLOR
15
+ from absfuyu.config import ABSFUYU_CONFIG
16
+
17
+
18
+ @click.command()
19
+ @click.option(
20
+ "--setting",
21
+ "-s",
22
+ type=click.Choice(["luckgod", "install-extra"]),
23
+ help="Toggle on/off selected setting",
24
+ )
25
+ def toggle(setting: str) -> None:
26
+ """Toggle on/off setting"""
27
+
28
+ # Dictionary
29
+ trans = {
30
+ "luckgod": "luckgod-mode",
31
+ "install-extra": "auto-install-extra",
32
+ } # trans[setting]
33
+
34
+ if setting is None:
35
+ click.echo(f"{COLOR['red']}Invalid setting") # type: ignore
36
+ else:
37
+ ABSFUYU_CONFIG.toggle_setting(trans[setting])
38
+ out = ABSFUYU_CONFIG._get_setting(trans[setting])
39
+ click.echo(f"{COLOR['red']}{out}")
40
+
41
+
42
+ @click.command()
43
+ def reset():
44
+ """Reset config to default value"""
45
+ ABSFUYU_CONFIG.reset_config()
46
+ click.echo(f"{COLOR['green']}All settings have been reseted")
47
+
48
+
49
+ @click.group(name="config")
50
+ def config_group() -> None:
51
+ """absfuyu configuration"""
52
+ pass
53
+
54
+
55
+ config_group.add_command(toggle)
56
+ config_group.add_command(reset)
@@ -0,0 +1,98 @@
1
+ """
2
+ ABSFUYU CLI
3
+ -----------
4
+ Do
5
+
6
+ Version: 1.1.0
7
+ Date updated: 15/08/2024 (dd/mm/yyyy)
8
+ """
9
+
10
+ __all__ = ["do_group"]
11
+
12
+ import subprocess
13
+
14
+ import click
15
+
16
+ from absfuyu import __title__
17
+ from absfuyu.cli.color import COLOR
18
+ from absfuyu.core import __package_feature__
19
+ from absfuyu.general.human import Human2
20
+ from absfuyu.version import PkgVersion
21
+
22
+
23
+ @click.command()
24
+ @click.option(
25
+ "--force_update/--no-force-update",
26
+ "-F/-f",
27
+ "force_update",
28
+ type=bool,
29
+ default=True,
30
+ show_default=True,
31
+ help="Update the package",
32
+ )
33
+ def update(force_update: bool) -> None:
34
+ """Update the package to latest version"""
35
+ click.echo(f"{COLOR['green']}")
36
+ AbsfuyuPackage = PkgVersion(
37
+ package_name=__title__,
38
+ )
39
+ AbsfuyuPackage.check_for_update(force_update=force_update)
40
+
41
+
42
+ @click.command()
43
+ @click.argument("pkg", type=click.Choice(__package_feature__))
44
+ def install(pkg: str) -> None:
45
+ """Install absfuyu's extension"""
46
+ cmd = f"pip install -U absfuyu[{pkg}]".split()
47
+ try:
48
+ subprocess.run(cmd)
49
+ except Exception:
50
+ try:
51
+ cmd2 = f"python -m pip install -U absfuyu[{pkg}]".split()
52
+ subprocess.run(cmd2)
53
+ except Exception:
54
+ click.echo(f"{COLOR['red']}Unable to install absfuyu[{pkg}]")
55
+ else:
56
+ click.echo(f"{COLOR['green']}absfuyu[{pkg}] installed")
57
+ else:
58
+ click.echo(f"{COLOR['green']}absfuyu[{pkg}] installed")
59
+
60
+
61
+ @click.command()
62
+ def advice() -> None:
63
+ """Give some recommendation when bored"""
64
+ from absfuyu.fun import im_bored
65
+
66
+ click.echo(f"{COLOR['green']}{im_bored()}")
67
+
68
+
69
+ @click.command(name="fs")
70
+ @click.argument("date", type=str)
71
+ @click.argument("number_string", type=str)
72
+ def fs(date: str, number_string: str) -> None:
73
+ """Feng-shui W.I.P"""
74
+
75
+ instance = Human2(date)
76
+ print(instance.fs(number_string))
77
+
78
+
79
+ @click.command(name="info")
80
+ @click.argument("date", type=str)
81
+ def info(date: str) -> None:
82
+ """Day info"""
83
+
84
+ instance = Human2(date)
85
+ print(instance.info())
86
+
87
+
88
+ @click.group(name="do")
89
+ def do_group() -> None:
90
+ """Perform functionalities"""
91
+ pass
92
+
93
+
94
+ do_group.add_command(update)
95
+ do_group.add_command(install)
96
+ do_group.add_command(advice)
97
+ do_group.add_command(fs)
98
+ do_group.add_command(info)
@@ -0,0 +1,109 @@
1
+ """
2
+ ABSFUYU CLI
3
+ -----------
4
+ Game
5
+
6
+ Version: 1.0.0
7
+ Date updated: 14/04/2024 (dd/mm/yyyy)
8
+ """
9
+
10
+ __all__ = ["game_group"]
11
+
12
+ import click
13
+
14
+ from absfuyu.game import game_escapeLoop, game_RockPaperScissors
15
+ from absfuyu.game.sudoku import Sudoku
16
+ from absfuyu.game.tictactoe import GameMode, TicTacToe
17
+ from absfuyu.game.wordle import Wordle
18
+
19
+
20
+ @click.command
21
+ @click.option(
22
+ "--hard",
23
+ "hard_mode",
24
+ is_flag=True,
25
+ default=False,
26
+ show_default=True,
27
+ help="Hard mode",
28
+ )
29
+ def rps(hard_mode: bool) -> None:
30
+ """Game: Rock Paper Scissors"""
31
+ game_RockPaperScissors(hard_mode=hard_mode)
32
+
33
+
34
+ @click.command(name="esl")
35
+ def escape_loop() -> None:
36
+ """Game: Escape loop"""
37
+ game_escapeLoop()
38
+
39
+
40
+ @click.command(name="wordle")
41
+ def wordle_solver() -> None:
42
+ """Worldle solver"""
43
+ Wordle().solve()
44
+
45
+
46
+ @click.command(name="sudoku")
47
+ @click.argument("sudoku_string", type=str)
48
+ @click.option(
49
+ "--raw",
50
+ "raw",
51
+ is_flag=True,
52
+ default=False,
53
+ show_default=True,
54
+ help="Returns answer in string form",
55
+ )
56
+ def sudoku_solver(sudoku_string: str, raw: bool) -> None:
57
+ """Sudoku solver"""
58
+ sdk = Sudoku.from_string(sudoku_string)
59
+ if raw:
60
+ click.echo(sdk.solve().export_to_string())
61
+ else:
62
+ click.echo(sdk.solve().to_board_form())
63
+
64
+
65
+ @click.command(name="ttt")
66
+ @click.option(
67
+ "--size",
68
+ "-s",
69
+ "size",
70
+ type=int,
71
+ default=3,
72
+ show_default=True,
73
+ help="Size of the board",
74
+ )
75
+ @click.option(
76
+ "--mode",
77
+ "-m",
78
+ "game_mode",
79
+ type=click.Choice([GameMode.ONE_V_BOT, GameMode.ONE_V_ONE, GameMode.BOT_V_BOT]),
80
+ default=GameMode.ONE_V_BOT,
81
+ show_default=True,
82
+ help="Game mode",
83
+ )
84
+ @click.option(
85
+ "--bot-time",
86
+ "-t",
87
+ "bot_time",
88
+ type=float,
89
+ default=0.0,
90
+ show_default=True,
91
+ help="Time between bot move",
92
+ )
93
+ def tictactoe(size: int, game_mode: str, bot_time: float) -> None:
94
+ """Game: Tictactoe"""
95
+ instance = TicTacToe(size)
96
+ instance.play(game_mode, bot_time=bot_time)
97
+
98
+
99
+ @click.group(name="game")
100
+ def game_group() -> None:
101
+ """Play game"""
102
+ pass
103
+
104
+
105
+ game_group.add_command(rps)
106
+ game_group.add_command(escape_loop)
107
+ game_group.add_command(wordle_solver)
108
+ game_group.add_command(sudoku_solver)
109
+ game_group.add_command(tictactoe)