absfuyu 4.2.0__py3-none-any.whl → 5.0.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.
- absfuyu/__init__.py +4 -4
- absfuyu/__main__.py +13 -1
- absfuyu/cli/color.py +7 -0
- absfuyu/cli/do_group.py +0 -35
- absfuyu/cli/tool_group.py +5 -5
- absfuyu/config/__init__.py +17 -34
- absfuyu/core/__init__.py +49 -0
- absfuyu/core/baseclass.py +299 -0
- absfuyu/core/baseclass2.py +165 -0
- absfuyu/core/decorator.py +67 -0
- absfuyu/core/docstring.py +163 -0
- absfuyu/core/dummy_cli.py +67 -0
- absfuyu/core/dummy_func.py +47 -0
- absfuyu/dxt/__init__.py +42 -0
- absfuyu/dxt/dictext.py +201 -0
- absfuyu/dxt/dxt_support.py +79 -0
- absfuyu/dxt/intext.py +586 -0
- absfuyu/dxt/listext.py +508 -0
- absfuyu/dxt/strext.py +530 -0
- absfuyu/{extensions → extra}/__init__.py +2 -2
- absfuyu/extra/beautiful.py +251 -0
- absfuyu/{extensions → extra}/data_analysis.py +51 -82
- absfuyu/fun/__init__.py +110 -135
- absfuyu/fun/tarot.py +9 -17
- absfuyu/game/__init__.py +6 -0
- absfuyu/game/game_stat.py +6 -0
- absfuyu/game/sudoku.py +7 -1
- absfuyu/game/tictactoe.py +12 -5
- absfuyu/game/wordle.py +14 -8
- absfuyu/general/__init__.py +6 -79
- absfuyu/general/content.py +22 -36
- absfuyu/general/generator.py +17 -42
- absfuyu/general/human.py +108 -228
- absfuyu/general/shape.py +1334 -0
- absfuyu/logger.py +8 -13
- absfuyu/pkg_data/__init__.py +136 -99
- absfuyu/pkg_data/deprecated.py +133 -0
- absfuyu/sort.py +6 -130
- absfuyu/tools/__init__.py +2 -2
- absfuyu/tools/checksum.py +33 -22
- absfuyu/tools/converter.py +51 -48
- absfuyu/tools/keygen.py +25 -30
- absfuyu/tools/obfuscator.py +246 -112
- absfuyu/tools/passwordlib.py +99 -29
- absfuyu/tools/shutdownizer.py +68 -47
- absfuyu/tools/web.py +2 -9
- absfuyu/util/__init__.py +15 -15
- absfuyu/util/api.py +10 -15
- absfuyu/util/json_method.py +7 -24
- absfuyu/util/lunar.py +3 -9
- absfuyu/util/path.py +22 -27
- absfuyu/util/performance.py +43 -67
- absfuyu/util/shorten_number.py +65 -14
- absfuyu/util/zipped.py +9 -15
- {absfuyu-4.2.0.dist-info → absfuyu-5.0.0.dist-info}/METADATA +41 -14
- absfuyu-5.0.0.dist-info/RECORD +68 -0
- absfuyu/core.py +0 -57
- absfuyu/everything.py +0 -32
- absfuyu/extensions/beautiful.py +0 -188
- absfuyu/fun/WGS.py +0 -134
- absfuyu/general/data_extension.py +0 -1796
- absfuyu/tools/stats.py +0 -226
- absfuyu/util/pkl.py +0 -67
- absfuyu-4.2.0.dist-info/RECORD +0 -59
- {absfuyu-4.2.0.dist-info → absfuyu-5.0.0.dist-info}/WHEEL +0 -0
- {absfuyu-4.2.0.dist-info → absfuyu-5.0.0.dist-info}/entry_points.txt +0 -0
- {absfuyu-4.2.0.dist-info → absfuyu-5.0.0.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
absfuyu/__init__.py,sha256=0fFKIm3iQEyqB0IdZIIqBe5bF7CCRl7ZD4mxwa_GxF0,600
|
|
2
|
+
absfuyu/__main__.py,sha256=vUKjwcjMvynbeygRLuXWMKR2vR7CndZ496xx2Qzb6xk,603
|
|
3
|
+
absfuyu/logger.py,sha256=VP9-sXtGVyDkHUyRSaGUfCrl_wn8wOnmtCLcUNec-yg,13043
|
|
4
|
+
absfuyu/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
5
|
+
absfuyu/sort.py,sha256=WjH0asrvl02TMlAhG77X-wGcGHIIQd-jWU_Xv9Xv-qc,3250
|
|
6
|
+
absfuyu/version.py,sha256=KMaeXNl93L4VU2RnTySoFv23IDyTvHfy84nyatFcKaE,14128
|
|
7
|
+
absfuyu/cli/__init__.py,sha256=mYX6lVAat9UOI9qR-ZDFw_4WOLVA9r-jTtW8d2fBEKM,1181
|
|
8
|
+
absfuyu/cli/color.py,sha256=Cvpqwc5mb4-71OplswgfxmJ8D9jf9gkjM7l3qV902X0,774
|
|
9
|
+
absfuyu/cli/config_group.py,sha256=FsyYm2apSyAA2PAD12CpHAizenRds_QlLf8j0AlLuVo,1230
|
|
10
|
+
absfuyu/cli/do_group.py,sha256=QBOL3Z6E70-_kPOivaH160lmFyOL2Zl70Qjda_fV0Fc,2131
|
|
11
|
+
absfuyu/cli/game_group.py,sha256=ySpL2hm4VCplhNY0s22kBGI5eFCdJj9fm1T58yftU74,2348
|
|
12
|
+
absfuyu/cli/tool_group.py,sha256=ZruYcBLCjP2G0CgyE19WsRJ2kn2H1fKEZ0pa0KF6tyI,3164
|
|
13
|
+
absfuyu/config/__init__.py,sha256=yWN-TguDXcWJg5EiCGRnKLsTZQfIYvKVHhzASNp2S0s,8238
|
|
14
|
+
absfuyu/config/config.json,sha256=-ZQnmDuLq0aAFfsrQbSNR3tq5k9Eu9IVUQgYD9htIQM,646
|
|
15
|
+
absfuyu/core/__init__.py,sha256=oZpRrxIU66dN4UYO61TM72oE0Ijs_3wajdYCg12SJlw,1186
|
|
16
|
+
absfuyu/core/baseclass.py,sha256=t5oyfwBw5Mm5wLp2o_JnTNx0v9njEb_OeRlzOTbc5KM,10204
|
|
17
|
+
absfuyu/core/baseclass2.py,sha256=5meEqRk0pPoDlhA0_qti_-p-fHvxT6XqwitHLpFVl_Q,5366
|
|
18
|
+
absfuyu/core/decorator.py,sha256=MpmgAb1gsXgRDEyMJLvSxUWEG0WC4aTFYJAEwjdauAI,1901
|
|
19
|
+
absfuyu/core/docstring.py,sha256=2TmPXXtJKszfBPPHXDMPjrTCpVFwxmS8J5XhWb4myNc,5228
|
|
20
|
+
absfuyu/core/dummy_cli.py,sha256=_-Gsmg2beO7fTSP-3nSGwqVmiVKpzTICIuHfGetQbw8,1884
|
|
21
|
+
absfuyu/core/dummy_func.py,sha256=AS7kgMWeXZoYF94gocyydAfkyOM7W2v1F9wNQ40ta-Q,1097
|
|
22
|
+
absfuyu/dxt/__init__.py,sha256=IHTjk-GdeKp5s9mhH87WUrHVb9gY34WUzrjQEw0q9II,986
|
|
23
|
+
absfuyu/dxt/dictext.py,sha256=_q45v98x2sB38QBROg-Fbd6Aw63HO5hPIEJENI39d-E,5998
|
|
24
|
+
absfuyu/dxt/dxt_support.py,sha256=dWMbFYiRUhX9QHxChYo_YzwCywylUi1R5h28y13Wn4I,2109
|
|
25
|
+
absfuyu/dxt/intext.py,sha256=wMmjt24c-0Kk3gJx1ln0ULNdrxmgeDh3zUOUTD6cQBo,16716
|
|
26
|
+
absfuyu/dxt/listext.py,sha256=lqWVQ1uBZ3zm0d1S0oVz0qjTagbucZjQ3htcFzc24tg,13964
|
|
27
|
+
absfuyu/dxt/strext.py,sha256=UDS818z4Rv92gCgdlfz_ibr3vsip6Sgxp-yfI8JyPho,14628
|
|
28
|
+
absfuyu/extra/__init__.py,sha256=lyJwiRHvCL3qNYKK9mbjNrzIHGDPERyfwl8_V6g4PEE,182
|
|
29
|
+
absfuyu/extra/beautiful.py,sha256=llxgAYco5-bg6VC1kMwA7VyCSJgu4LdCHBG0pM1PWs8,8072
|
|
30
|
+
absfuyu/extra/data_analysis.py,sha256=0zfjWm3t1nyp0n0rsPKzWmcR0ZvF7BpQsjn9niGqhps,32005
|
|
31
|
+
absfuyu/fun/__init__.py,sha256=tDSDIDHrJPQ_hWV7ASpbAUCIQ6B1t1IPq4ahrZQqfWk,5435
|
|
32
|
+
absfuyu/fun/tarot.py,sha256=E9NKwhebU4EGOcbQkt4Ni7o6ZIYq8-h7_Fz3jk0Arpw,2401
|
|
33
|
+
absfuyu/game/__init__.py,sha256=tkNxTbdkPtAhGEdqXFQARHYApEhcD68CeDF_oHMzVeA,4691
|
|
34
|
+
absfuyu/game/game_stat.py,sha256=mOs6UOvNUmr-vNOomNJK0lY9o9m9Rs0b9GEMGeXaAdE,1236
|
|
35
|
+
absfuyu/game/sudoku.py,sha256=ascN8ey7SimldXT8ae3AWv4bxlfwT4X14JdmxY2o808,10405
|
|
36
|
+
absfuyu/game/tictactoe.py,sha256=_JLeIhxHEIDLRJay7i1kagxx8kCDhZNgTrXt7Rl0ntc,9960
|
|
37
|
+
absfuyu/game/wordle.py,sha256=izvV_lOZwPnslDdQ73PnwD5t5ECKVWGhpZvHAZH-2EY,101576
|
|
38
|
+
absfuyu/general/__init__.py,sha256=EITlDmPAp6lcAWR9Bq707j4FZ9jAD9PblftOK1XvGDA,480
|
|
39
|
+
absfuyu/general/content.py,sha256=wGzYufji8PmHy6ygGFclf_u6DZudnYaeHtR9d2of_1E,17122
|
|
40
|
+
absfuyu/general/generator.py,sha256=C54TJ3DZ5TXFYRI7_jLdtjTMcWxACX4Jmlo27Zh90Ew,8996
|
|
41
|
+
absfuyu/general/human.py,sha256=o1TswjgN8zRfCmkEgchS1HVq036twBB64u1Dt4KLI1I,8099
|
|
42
|
+
absfuyu/general/shape.py,sha256=dAYSihPnanax4jMPSvZMIzMbo9puvxIqdQxuSlDLl4I,38619
|
|
43
|
+
absfuyu/pkg_data/__init__.py,sha256=Jn8fHDsPCd8w4YoOo3EpoExxda5BRAjHQJRdYwwTYeA,5510
|
|
44
|
+
absfuyu/pkg_data/chemistry.pkl,sha256=kYWNa_PVffoDnzT8b9Jvimmf_GZshPe1D-SnEKERsLo,4655
|
|
45
|
+
absfuyu/pkg_data/deprecated.py,sha256=L1ju3m_P8DbqQ1l18XgneVixorWiLJ5HeKh_K3wovXM,4349
|
|
46
|
+
absfuyu/pkg_data/passwordlib_lzma.pkl,sha256=rT5lJT8t42BATU5Cp2qFwbnZkbx-QlUgodSvR0wFY6I,891877
|
|
47
|
+
absfuyu/pkg_data/tarot.pkl,sha256=ssXTCC_BQgslO5F-3a9HivbxFQ6BioIe2E1frPVi2m0,56195
|
|
48
|
+
absfuyu/tools/__init__.py,sha256=g6-2banBKxGfAbsVTd-OZhLujixXApsQmx2RlAB_aGE,118
|
|
49
|
+
absfuyu/tools/checksum.py,sha256=1WLC9GGmjehxhhV-BgdxJbA45QhN850u_znOgwoYDP0,5156
|
|
50
|
+
absfuyu/tools/converter.py,sha256=tdDQpdzbB9RdcZIlcV6LzldDkVEiwCFzRoWCfJVCpn4,11615
|
|
51
|
+
absfuyu/tools/keygen.py,sha256=JxhUiiaUHaGqVicXY46JjVrH3ke2QlnsRJqgIvlxUsg,7115
|
|
52
|
+
absfuyu/tools/obfuscator.py,sha256=vy_nIyQeDci6vHFbHL907Ha6RUZm9axsSZw_nKyyYBc,12687
|
|
53
|
+
absfuyu/tools/passwordlib.py,sha256=jEmKW63fTyGOtBPPVi44fMtcNu1W7m2Qkox-GHxTxH4,9632
|
|
54
|
+
absfuyu/tools/shutdownizer.py,sha256=z5z5ofdAtOBat1m7lz95FwXZI0fMarl2mChBMwUMi4I,8549
|
|
55
|
+
absfuyu/tools/web.py,sha256=rVF-60IT8J_RVxMPzz5bhgBq3i1WmwbR5ouzQ_CZwhQ,1240
|
|
56
|
+
absfuyu/util/__init__.py,sha256=3Ylck5HBHAhFd_B_v6Bh3C1qyI1M0Kk9sK9nNIBLHqU,3831
|
|
57
|
+
absfuyu/util/api.py,sha256=xXwffnpq1qxBIag_MOriKe3ueaCdsaq-WFRIH-8yFqI,4288
|
|
58
|
+
absfuyu/util/json_method.py,sha256=a4xVabcw18HBLJthkmf5KNUcQya45-A8AFEpcGIDx3Q,2197
|
|
59
|
+
absfuyu/util/lunar.py,sha256=8dxXdGU7V_5L9fOeq36oKDzs_DcLnIiFwIpHa1O22yc,13630
|
|
60
|
+
absfuyu/util/path.py,sha256=0hRzobegpblgCIluy9wXFNCwlDoovz_ccVCwaVqvgo8,16434
|
|
61
|
+
absfuyu/util/performance.py,sha256=aN_0WGJfupqh8FdgsEU4llkDpUNAlojlWXtlRGMFmJE,8585
|
|
62
|
+
absfuyu/util/shorten_number.py,sha256=7-uH4zwy594pVnqqGe75IoS7vqEXx3DIA9nRl8hrQpw,7788
|
|
63
|
+
absfuyu/util/zipped.py,sha256=fXLVt4hnIgN2hwhvbwxzYQC1r--RX2Hgb429r767WDI,2979
|
|
64
|
+
absfuyu-5.0.0.dist-info/METADATA,sha256=J29q7jABMmx_LkCQVw9aL9BYsGk3QdTBsA4W0WyeF2s,4839
|
|
65
|
+
absfuyu-5.0.0.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
66
|
+
absfuyu-5.0.0.dist-info/entry_points.txt,sha256=bW5CgJRTTWJ2Pywojo07sf-YucRPcnHzMmETh5avbX0,79
|
|
67
|
+
absfuyu-5.0.0.dist-info/licenses/LICENSE,sha256=pFCHBSNSzdXwYG1AHpq7VcofI1NMQ1Fc77RzZ4Ln2O4,1097
|
|
68
|
+
absfuyu-5.0.0.dist-info/RECORD,,
|
absfuyu/core.py
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
"""
|
|
2
|
-
Absfuyu: Core
|
|
3
|
-
-------------
|
|
4
|
-
Contain type hints and other stuffs
|
|
5
|
-
|
|
6
|
-
Version: 2.3.2
|
|
7
|
-
Date updated: 11/02/2025 (dd/mm/yyyy)
|
|
8
|
-
"""
|
|
9
|
-
|
|
10
|
-
# Module Package
|
|
11
|
-
###########################################################################
|
|
12
|
-
__all__ = [
|
|
13
|
-
# color
|
|
14
|
-
"CLITextColor",
|
|
15
|
-
# path
|
|
16
|
-
"CORE_PATH",
|
|
17
|
-
"CONFIG_PATH",
|
|
18
|
-
"DATA_PATH",
|
|
19
|
-
]
|
|
20
|
-
|
|
21
|
-
__package_feature__ = ["beautiful", "extra", "full", "dev"]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# Library
|
|
25
|
-
###########################################################################
|
|
26
|
-
from importlib import import_module
|
|
27
|
-
from importlib.resources import files
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
class CLITextColor:
|
|
31
|
-
"""Color code for text in terminal"""
|
|
32
|
-
|
|
33
|
-
WHITE = "\x1b[37m"
|
|
34
|
-
BLACK = "\x1b[30m"
|
|
35
|
-
BLUE = "\x1b[34m"
|
|
36
|
-
GRAY = "\x1b[90m"
|
|
37
|
-
GREEN = "\x1b[32m"
|
|
38
|
-
RED = "\x1b[91m"
|
|
39
|
-
DARK_RED = "\x1b[31m"
|
|
40
|
-
MAGENTA = "\x1b[35m"
|
|
41
|
-
YELLOW = "\x1b[33m"
|
|
42
|
-
RESET = "\x1b[39m"
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
# CORE_PATH = Path(__file__).parent.absolute()
|
|
46
|
-
CORE_PATH = files("absfuyu")
|
|
47
|
-
CONFIG_PATH = CORE_PATH.joinpath("config", "config.json")
|
|
48
|
-
DATA_PATH = CORE_PATH.joinpath("pkg_data")
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
# tqdm wrapper
|
|
52
|
-
try:
|
|
53
|
-
tqdm = import_module("tqdm").tqdm
|
|
54
|
-
except ModuleNotFoundError:
|
|
55
|
-
|
|
56
|
-
def tqdm(iterable, **kwargs):
|
|
57
|
-
return iterable
|
absfuyu/everything.py
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# flake8: noqa
|
|
2
|
-
"""
|
|
3
|
-
Absfuyu: Everything
|
|
4
|
-
-------------------
|
|
5
|
-
Everything has to offer in this package
|
|
6
|
-
|
|
7
|
-
Version: 2.0.1
|
|
8
|
-
Date updated: 26/11/2023 (mm/dd/yyyy)
|
|
9
|
-
|
|
10
|
-
Usage:
|
|
11
|
-
------
|
|
12
|
-
>>> from absfuyu import everything as ab
|
|
13
|
-
"""
|
|
14
|
-
|
|
15
|
-
# Library
|
|
16
|
-
###########################################################################
|
|
17
|
-
from absfuyu.config import *
|
|
18
|
-
from absfuyu.core import *
|
|
19
|
-
from absfuyu.extensions import *
|
|
20
|
-
from absfuyu.fun import *
|
|
21
|
-
from absfuyu.game import *
|
|
22
|
-
from absfuyu.general import *
|
|
23
|
-
from absfuyu.logger import *
|
|
24
|
-
from absfuyu.pkg_data import *
|
|
25
|
-
from absfuyu.sort import *
|
|
26
|
-
from absfuyu.tools import *
|
|
27
|
-
from absfuyu.util import *
|
|
28
|
-
from absfuyu.version import *
|
|
29
|
-
|
|
30
|
-
# Is loaded
|
|
31
|
-
###########################################################################
|
|
32
|
-
__IS_EVERYTHING = True
|
absfuyu/extensions/beautiful.py
DELETED
|
@@ -1,188 +0,0 @@
|
|
|
1
|
-
# type: ignore
|
|
2
|
-
"""
|
|
3
|
-
Absfuyu: Beautiful
|
|
4
|
-
------------------
|
|
5
|
-
A decorator that makes output more beautiful
|
|
6
|
-
|
|
7
|
-
Version: 1.0.2
|
|
8
|
-
Date updated: 24/11/2023 (dd/mm/yyyy)
|
|
9
|
-
"""
|
|
10
|
-
|
|
11
|
-
# Module level
|
|
12
|
-
###########################################################################
|
|
13
|
-
__all__ = [
|
|
14
|
-
"beautiful_output",
|
|
15
|
-
"print",
|
|
16
|
-
"demo",
|
|
17
|
-
]
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
# Library
|
|
21
|
-
###########################################################################
|
|
22
|
-
from functools import wraps as __wraps
|
|
23
|
-
from time import perf_counter as __perf
|
|
24
|
-
from typing import Optional as __Optional
|
|
25
|
-
|
|
26
|
-
BEAUTIFUL_MODE = False
|
|
27
|
-
try:
|
|
28
|
-
# from rich import print
|
|
29
|
-
from rich.align import Align as __Align
|
|
30
|
-
from rich.console import Console as __Console
|
|
31
|
-
from rich.console import Group as __Group
|
|
32
|
-
from rich.panel import Panel as __Panel
|
|
33
|
-
from rich.table import Table as __Table
|
|
34
|
-
from rich.text import Text as __Text
|
|
35
|
-
except ImportError:
|
|
36
|
-
from absfuyu.config import ABSFUYU_CONFIG
|
|
37
|
-
|
|
38
|
-
if ABSFUYU_CONFIG._get_setting("auto-install-extra").value:
|
|
39
|
-
__cmd: str = "python -m pip install -U absfuyu[beautiful]".split()
|
|
40
|
-
from subprocess import run as __run
|
|
41
|
-
|
|
42
|
-
__run(__cmd)
|
|
43
|
-
else:
|
|
44
|
-
raise SystemExit("This feature is in absfuyu[beautiful] package") # noqa: B904
|
|
45
|
-
else:
|
|
46
|
-
BEAUTIFUL_MODE = True
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
# Function
|
|
50
|
-
###########################################################################
|
|
51
|
-
def beautiful_output(
|
|
52
|
-
layout_option: int = 2,
|
|
53
|
-
header_visible: __Optional[bool] = True,
|
|
54
|
-
footer_visible: __Optional[bool] = False,
|
|
55
|
-
):
|
|
56
|
-
"""
|
|
57
|
-
Beautify function output
|
|
58
|
-
|
|
59
|
-
Parameters
|
|
60
|
-
----------
|
|
61
|
-
header_visible : True | False | None
|
|
62
|
-
Show header
|
|
63
|
-
|
|
64
|
-
footer_visible : True | False | None
|
|
65
|
-
Show footer
|
|
66
|
-
"""
|
|
67
|
-
|
|
68
|
-
if not BEAUTIFUL_MODE:
|
|
69
|
-
raise SystemExit("This feature is in absfuyu[beautiful] package")
|
|
70
|
-
|
|
71
|
-
def decorator(func):
|
|
72
|
-
@__wraps(func)
|
|
73
|
-
def wrapper(*args, **kwargs):
|
|
74
|
-
# Measure performance
|
|
75
|
-
start_time = __perf()
|
|
76
|
-
f = func(*args, **kwargs)
|
|
77
|
-
finished_time = __perf()
|
|
78
|
-
elapsed = f"Time elapsed: {finished_time - start_time:,.6f} s"
|
|
79
|
-
|
|
80
|
-
# Make header
|
|
81
|
-
header_table = __Table.grid(expand=True)
|
|
82
|
-
header_table.add_row(
|
|
83
|
-
__Panel(
|
|
84
|
-
__Align(f"[b]Function: {func.__name__}", align="center"),
|
|
85
|
-
style="white on blue",
|
|
86
|
-
),
|
|
87
|
-
)
|
|
88
|
-
|
|
89
|
-
# Make footer
|
|
90
|
-
footer_table = __Table.grid(expand=True)
|
|
91
|
-
footer_table.add_row(
|
|
92
|
-
__Panel(
|
|
93
|
-
__Align("[b]END PROGRAM", align="center"),
|
|
94
|
-
style="white on blue",
|
|
95
|
-
),
|
|
96
|
-
)
|
|
97
|
-
|
|
98
|
-
# Make output table
|
|
99
|
-
out_table = __Table.grid(expand=True)
|
|
100
|
-
out_table.add_column(ratio=2) # result
|
|
101
|
-
out_table.add_column() # performance
|
|
102
|
-
r_txt = __Text(
|
|
103
|
-
str(f),
|
|
104
|
-
overflow="fold",
|
|
105
|
-
no_wrap=False,
|
|
106
|
-
tab_size=2,
|
|
107
|
-
)
|
|
108
|
-
result_panel = __Panel(
|
|
109
|
-
__Align(r_txt, align="center"),
|
|
110
|
-
title="[bold]Result[/]",
|
|
111
|
-
border_style="green",
|
|
112
|
-
highlight=True,
|
|
113
|
-
)
|
|
114
|
-
performance_panel = __Panel(
|
|
115
|
-
__Align(elapsed, align="center"),
|
|
116
|
-
title="[bold]Performance[/]",
|
|
117
|
-
border_style="red",
|
|
118
|
-
highlight=True,
|
|
119
|
-
height=result_panel.height,
|
|
120
|
-
)
|
|
121
|
-
out_table.add_row(
|
|
122
|
-
result_panel,
|
|
123
|
-
performance_panel,
|
|
124
|
-
)
|
|
125
|
-
|
|
126
|
-
# Make a blue line for no reason
|
|
127
|
-
line = __Table.grid(expand=True)
|
|
128
|
-
line.add_row(__Text(style="white on blue"))
|
|
129
|
-
|
|
130
|
-
# Make layout
|
|
131
|
-
header = {
|
|
132
|
-
True: header_table,
|
|
133
|
-
False: line,
|
|
134
|
-
None: __Text(),
|
|
135
|
-
} # header[header_visible]
|
|
136
|
-
footer = {
|
|
137
|
-
True: footer_table,
|
|
138
|
-
False: line,
|
|
139
|
-
None: __Text(),
|
|
140
|
-
} # footer[footer_visible]
|
|
141
|
-
layout = {
|
|
142
|
-
1: __Group(header[header_visible], out_table, footer[footer_visible]),
|
|
143
|
-
2: __Group(
|
|
144
|
-
header[header_visible],
|
|
145
|
-
result_panel,
|
|
146
|
-
performance_panel,
|
|
147
|
-
footer[footer_visible],
|
|
148
|
-
),
|
|
149
|
-
3: __Group(result_panel),
|
|
150
|
-
}
|
|
151
|
-
if layout_option in layout:
|
|
152
|
-
return layout[layout_option]
|
|
153
|
-
else:
|
|
154
|
-
return layout[2]
|
|
155
|
-
# return layout[3]
|
|
156
|
-
|
|
157
|
-
return wrapper
|
|
158
|
-
|
|
159
|
-
return decorator
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
# rich's console.print wrapper
|
|
163
|
-
if BEAUTIFUL_MODE:
|
|
164
|
-
print = __Console().print
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
# demo
|
|
168
|
-
@beautiful_output()
|
|
169
|
-
def __demo_decorator(x: any = None):
|
|
170
|
-
code = """\
|
|
171
|
-
# demo
|
|
172
|
-
from absfuyu.extensions import beautiful as bu
|
|
173
|
-
@bu.beautiful_output()
|
|
174
|
-
def testcode():
|
|
175
|
-
test = [x for x in range(100)]
|
|
176
|
-
return test
|
|
177
|
-
bu.print(testcode())"""
|
|
178
|
-
if x is None:
|
|
179
|
-
x = code
|
|
180
|
-
return x
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
def demo(x: any = None):
|
|
184
|
-
print(__demo_decorator(x))
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
if __name__ == "__main__":
|
|
188
|
-
demo()
|
absfuyu/fun/WGS.py
DELETED
|
@@ -1,134 +0,0 @@
|
|
|
1
|
-
# flake8: noqa
|
|
2
|
-
"""
|
|
3
|
-
Absfuyu: WGS
|
|
4
|
-
------------
|
|
5
|
-
Wolf's Gravestone
|
|
6
|
-
|
|
7
|
-
- This module is not affiliated with miHoYo/Hoyoverse.
|
|
8
|
-
- Genshin Impact, game content and materials are trademarks and copyrights of miHoYo/Hoyoverse.
|
|
9
|
-
|
|
10
|
-
Version: 1.0.3
|
|
11
|
-
Date updated: 24/11/2023 (dd/mm/yyyy)
|
|
12
|
-
|
|
13
|
-
Usage:
|
|
14
|
-
------
|
|
15
|
-
>>> test = WGS()
|
|
16
|
-
>>> print(test.pixel_art())
|
|
17
|
-
"""
|
|
18
|
-
|
|
19
|
-
# Module level
|
|
20
|
-
###########################################################################
|
|
21
|
-
__all__ = ["WGS"]
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
# Library
|
|
25
|
-
###########################################################################
|
|
26
|
-
import base64
|
|
27
|
-
|
|
28
|
-
from absfuyu.logger import logger
|
|
29
|
-
from absfuyu.tools.converter import Str2Pixel
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
# Class
|
|
33
|
-
###########################################################################
|
|
34
|
-
class WGS:
|
|
35
|
-
"""
|
|
36
|
-
Wolf's Gravestone
|
|
37
|
-
|
|
38
|
-
- This module is not affiliated with miHoYo/Hoyoverse.
|
|
39
|
-
- Genshin Impact, game content and materials are trademarks and copyrights of miHoYo/Hoyoverse.
|
|
40
|
-
"""
|
|
41
|
-
|
|
42
|
-
def __init__(self) -> None:
|
|
43
|
-
self._text_art_big = "ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLjo9KzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID0qKioqKi4gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuPSojKisrCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIyslKyA6LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSMjJSsuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4qIyUqLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IyMlPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IyMjOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIyUrICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIyMjLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9KyAgICA9JSMjLiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDojIyUrLi4tLT0tIDojIyo9KiMlJT0gICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMlJSUlIyUjIyUlJSUlJSMjIyUlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOj0lJUAlIyMjIyUjJSUlJSUlPS0tOiAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuJSo6JSUjJSUlIyMlJSUlJSUqPSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IyM9KysjJSMjKyolJSMlJSo6ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDo9KiojIyMjJSMlIyUlJSUlJSUjKyAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC49KyoqIyUlJSMjIyUjIyUlJSUlJSsgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqJSMjIyUjIyMjQCMlIys9LSNAJSUjKz0tICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOisqIyVAJSUjIyUlJSMlIyUjKiouOislJSMjLiAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKiMjJSVAJSUlJSUlIyUtLis9ICAgICA6Ky0tLiAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qIyMlQEAlIyVAQCUjJUArIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4tIyUlJUAlJUBAIyUlIyouICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuPSMjJSUlJSUlJSUjJSU9LiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLSojJSUlJSUlQCUlJSMqLSAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuOiolJSUlJSUlJSUlIyorLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOiojJSUlJSUlJSUlIz06ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gLSMjIyMjIyUlJSUlIy0gCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IyMjIyUjIyUlIz0qLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOisjIyMjIyMlJSUqLS0uIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLSojIyMjJSMlJSUqLTouIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA9KysqKioqIyMqKj0tLiAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuLSsqKiorKiojIyMqPTogCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSsrKysqIyMrKiMqPS4gIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLjorKiojIyMjIyUjKj0tICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4gOisqIyMjIyMjIyMqPTogIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgLiA9KyojKisjIyMjIystIAogICAgICAgICAgICAgICAgICAgICAgICAuIC49KiojKi0qIyMjKj0tICAKICAgICAgICAgICAgICAgICAgICAgICAgOisqKiMrPSojIyMqPToKICAgICAgICAgICAgICAgICAgICAgICAgLSsqKiotPSoqKyorPS4KICAgICAgICAgICAgICAgICAgICAgICAgLj0rKiorLSojKioqKy0uICAKICAgICAgICAgICAgICAgICAgICAuOi09KyoqLT0jIyoqKz06IAogICAgICAgICAgICAgICAgICAgIDotPSsrKiotKyMqKiorLSAKICAgICAgICAgICAgICAgICAgICA6PSsrKyAgOioqKis9OiAgICAKICAgICAgICAgICAgICAgIDo9KyoqLS09KioqKz06IAogICAgICAgICAgICAgICAgLT0rKiotKysrKz06LiAgCiAgICAgICAgICAgICAgICA6PT0rKis6PT06LiAgCiAgICAgICAgICAgIDo9KysqLQogICAgICAgICAgICAuLT0rKy0uIAogICAgICAgIC46PS06LiAgICAKICAgICAgICAuOjouICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAK"
|
|
44
|
-
self._text_art_small = "CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuKiorCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLiojLi4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDojKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPSM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC4uICAqKgogICAgICAgICAgICAgICAgICAgICAgICAgICAgPSUrPSsrIyMqIyoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArKiUjJSMlJSM9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyoqIyMjJSUlPQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsjIyUjIyMqKiUjOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgLisjJSUlJSUrKjogLSotCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA9IyUlJSUlKy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgIC49IyUlJSUjPQogICAgICAgICAgICAgICAgICAgICAgICAuKiUlJSUlKy4KICAgICAgICAgICAgICAgICAgICAgICAgLiojJSUlIy0KICAgICAgICAgICAgICAgICAgICAgICAgLSMjIyUjPS4KICAgICAgICAgICAgICAgICAgICAuPSoqKiMqOgogICAgICAgICAgICAgICAgICAgIDorKiMjKisuCiAgICAgICAgICAgICAgICAgICAgLSoqIyMjLQogICAgICAgICAgICAgICAgLj0qKyojKjoKICAgICAgICAgICAgICAgIDorKisqKj0uCiAgICAgICAgICAgICAgICAuLSsrKyoqLQogICAgICAgICAgICAuPSotLSorOgogICAgICAgICAgICAuPSs9PS0uCiAgICAgICAgICAgIDorPQogICAgICAgIC46Lgo="
|
|
45
|
-
self._pixel_art_wgs = [
|
|
46
|
-
# Art Credit: https://www.reddit.com/r/PixelArt/comments/n6xyrb/wolfs_gravestone_genshin_impact/
|
|
47
|
-
"51w",
|
|
48
|
-
"46w3b1w",
|
|
49
|
-
"43w2b1w1b1R1b1w",
|
|
50
|
-
"43w1b1R1b1R2b1w",
|
|
51
|
-
"43w2b1r1b3w",
|
|
52
|
-
"41w3b1r1b1r1b2w",
|
|
53
|
-
"28w3b10w1b1g5b2w",
|
|
54
|
-
"28w1b1r1b9w1b3g1b5w",
|
|
55
|
-
"28w2b1R1b1w2b4w1b3g2b5w",
|
|
56
|
-
"30w1b1m1b1g1b1w1b1w1b3g1b7w",
|
|
57
|
-
"30w3b2g3b3g1b8w",
|
|
58
|
-
"29w1b2g1b5g1b1g1b9w",
|
|
59
|
-
"29w1b1g2b1g4b1g1b10w",
|
|
60
|
-
"29w1b3g2b1R2b1g2b9w",
|
|
61
|
-
"27w7b3r1b1g1b10w",
|
|
62
|
-
"27w1b5g1b1r1w2b2g2b8w",
|
|
63
|
-
"26w2b3g6b4g1b8w",
|
|
64
|
-
"26w1b2g2b2R1b1g1b1g4b9w",
|
|
65
|
-
"25w1b2g1b2R2r1b1g1b1g1b1g1b1m1b8w",
|
|
66
|
-
"24w1b1w1m1g1b3r1b2g1b3g2b1R2b6w",
|
|
67
|
-
"21w3b2w1m1b3r1w1b2g4b2w1b1r1b6w",
|
|
68
|
-
"21w1b2w3m1b1r1w2b3g1b5w3b6w",
|
|
69
|
-
"21w1b1w3m1b1r2b3g3b14w",
|
|
70
|
-
"20w1b1w2R1m1b1r1b3m1g2b16w",
|
|
71
|
-
"19w1b1w3R1b1r1b2m2w1b18w",
|
|
72
|
-
"18w1b1w3R1b1r1b3m1w1b19w",
|
|
73
|
-
"17w1b1r3R1b1w1b2R1m1w1b20w",
|
|
74
|
-
"16w1b1w1R1r1R1b1r1b3R2w1b20w",
|
|
75
|
-
"15w1b1w1r1R1y1R2b3R1w3b20w",
|
|
76
|
-
"14w1b3r1y1R2r4y1b23w",
|
|
77
|
-
"13w1b1w3r4y2R1w1b24w",
|
|
78
|
-
"12w1b1w2r2R3r1R2y1b25w",
|
|
79
|
-
"10w2b1w2r1R2b1R3r1w1b26w",
|
|
80
|
-
"9w1b2w2r1R1b1w1b1R2r1w1b27w",
|
|
81
|
-
"9w1b1w2r1R1b1w1b1R2r1y1b28w",
|
|
82
|
-
"8w1b1w1r2R1b1w1b2r1y1w1b29w",
|
|
83
|
-
"7w1b1w1r1R2b1w1b4y1b30w",
|
|
84
|
-
"6w1b1w1r1R1b2w1b1R2r1w1b31w",
|
|
85
|
-
"5w1b1w2r1R1b2w1b1R1r2w1b31w",
|
|
86
|
-
"4w1b1w2r1R1b1w2b2r1w2b32w",
|
|
87
|
-
"3w1b1w1r1y1R1b1w1b3y1w1b34w",
|
|
88
|
-
"2w1b1w1r2y1b1w6b35w",
|
|
89
|
-
"1w6b43w",
|
|
90
|
-
"50w",
|
|
91
|
-
]
|
|
92
|
-
|
|
93
|
-
def __str__(self) -> str:
|
|
94
|
-
return f"{self.__class__.__name__}()"
|
|
95
|
-
|
|
96
|
-
def __repr__(self) -> str:
|
|
97
|
-
return self.__str__()
|
|
98
|
-
|
|
99
|
-
@staticmethod
|
|
100
|
-
def _base64_decode(base64_text: str) -> str:
|
|
101
|
-
return base64.b64decode(base64_text).decode()
|
|
102
|
-
|
|
103
|
-
def text_art(self, option: int = 1) -> str:
|
|
104
|
-
"""
|
|
105
|
-
Text art
|
|
106
|
-
|
|
107
|
-
:param option: ``1`` | ``2``
|
|
108
|
-
:type option: int
|
|
109
|
-
:rtype: str
|
|
110
|
-
"""
|
|
111
|
-
if option == 1:
|
|
112
|
-
return self._base64_decode(self._text_art_big)
|
|
113
|
-
else:
|
|
114
|
-
return self._base64_decode(self._text_art_small)
|
|
115
|
-
|
|
116
|
-
def pixel_art(self) -> str:
|
|
117
|
-
"""
|
|
118
|
-
Pixel art
|
|
119
|
-
|
|
120
|
-
:rtype: str
|
|
121
|
-
"""
|
|
122
|
-
# Make data
|
|
123
|
-
out = "1N".join(self._pixel_art_wgs)
|
|
124
|
-
out = out.replace("y", "r") # Convert yellow into red
|
|
125
|
-
out = out.replace("m", "R") # Convert magenta into dark red
|
|
126
|
-
return Str2Pixel(out).convert()
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
# Run
|
|
130
|
-
###########################################################################
|
|
131
|
-
if __name__ == "__main__":
|
|
132
|
-
logger.setLevel(10)
|
|
133
|
-
test = WGS()
|
|
134
|
-
print(test.pixel_art())
|