absfuyu 5.8.0__py3-none-any.whl → 5.9.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 +1 -1
- absfuyu/__main__.py +2 -2
- absfuyu/cli/__init__.py +2 -2
- absfuyu/cli/color.py +2 -2
- absfuyu/cli/config_group.py +2 -2
- absfuyu/cli/do_group.py +2 -2
- absfuyu/cli/game_group.py +2 -2
- absfuyu/cli/tool_group.py +2 -2
- absfuyu/config/__init__.py +2 -2
- absfuyu/core/__init__.py +2 -2
- absfuyu/core/baseclass.py +2 -2
- absfuyu/core/baseclass2.py +2 -2
- absfuyu/core/decorator.py +2 -2
- absfuyu/core/docstring.py +2 -2
- absfuyu/core/dummy_cli.py +2 -2
- absfuyu/core/dummy_func.py +2 -2
- absfuyu/dxt/__init__.py +2 -2
- absfuyu/dxt/dictext.py +2 -2
- absfuyu/dxt/dxt_support.py +2 -2
- absfuyu/dxt/intext.py +2 -2
- absfuyu/dxt/listext.py +2 -2
- absfuyu/dxt/strext.py +2 -2
- absfuyu/extra/__init__.py +2 -2
- absfuyu/extra/beautiful.py +2 -2
- absfuyu/extra/da/__init__.py +37 -3
- absfuyu/extra/da/dadf.py +2 -2
- absfuyu/extra/da/dadf_base.py +2 -2
- absfuyu/extra/da/df_func.py +2 -2
- absfuyu/extra/da/mplt.py +2 -2
- absfuyu/extra/data_analysis.py +2 -2
- absfuyu/extra/pdf.py +2 -2
- absfuyu/extra/rclone.py +253 -0
- absfuyu/extra/xml.py +2 -2
- absfuyu/fun/__init__.py +2 -2
- absfuyu/fun/rubik.py +2 -2
- absfuyu/fun/tarot.py +2 -2
- absfuyu/game/__init__.py +2 -2
- absfuyu/game/game_stat.py +2 -2
- absfuyu/game/sudoku.py +2 -2
- absfuyu/game/tictactoe.py +2 -2
- absfuyu/game/wordle.py +2 -2
- absfuyu/general/__init__.py +2 -2
- absfuyu/general/content.py +2 -2
- absfuyu/general/human.py +2 -2
- absfuyu/general/shape.py +2 -2
- absfuyu/logger.py +2 -2
- absfuyu/pkg_data/__init__.py +2 -2
- absfuyu/pkg_data/deprecated.py +2 -2
- absfuyu/pkg_data/logo.py +2 -2
- absfuyu/sort.py +2 -2
- absfuyu/tools/__init__.py +2 -2
- absfuyu/tools/checksum.py +2 -2
- absfuyu/tools/converter.py +2 -2
- absfuyu/tools/generator.py +2 -2
- absfuyu/tools/inspector.py +2 -2
- absfuyu/tools/keygen.py +2 -2
- absfuyu/tools/obfuscator.py +2 -2
- absfuyu/tools/passwordlib.py +2 -2
- absfuyu/tools/shutdownizer.py +2 -2
- absfuyu/tools/sw.py +76 -5
- absfuyu/tools/web.py +2 -2
- absfuyu/typings.py +2 -2
- absfuyu/util/__init__.py +31 -2
- absfuyu/util/api.py +2 -2
- absfuyu/util/gui.py +32 -0
- absfuyu/util/json_method.py +2 -2
- absfuyu/util/lunar.py +2 -2
- absfuyu/util/path.py +2 -2
- absfuyu/util/performance.py +2 -2
- absfuyu/util/shorten_number.py +2 -2
- absfuyu/util/text_table.py +2 -2
- absfuyu/util/zipped.py +2 -2
- absfuyu/version.py +2 -2
- {absfuyu-5.8.0.dist-info → absfuyu-5.9.0.dist-info}/METADATA +4 -1
- absfuyu-5.9.0.dist-info/RECORD +83 -0
- absfuyu-5.8.0.dist-info/RECORD +0 -81
- {absfuyu-5.8.0.dist-info → absfuyu-5.9.0.dist-info}/WHEEL +0 -0
- {absfuyu-5.8.0.dist-info → absfuyu-5.9.0.dist-info}/entry_points.txt +0 -0
- {absfuyu-5.8.0.dist-info → absfuyu-5.9.0.dist-info}/licenses/LICENSE +0 -0
absfuyu/extra/xml.py
CHANGED
absfuyu/fun/__init__.py
CHANGED
absfuyu/fun/rubik.py
CHANGED
absfuyu/fun/tarot.py
CHANGED
absfuyu/game/__init__.py
CHANGED
absfuyu/game/game_stat.py
CHANGED
absfuyu/game/sudoku.py
CHANGED
absfuyu/game/tictactoe.py
CHANGED
absfuyu/game/wordle.py
CHANGED
absfuyu/general/__init__.py
CHANGED
absfuyu/general/content.py
CHANGED
absfuyu/general/human.py
CHANGED
absfuyu/general/shape.py
CHANGED
absfuyu/logger.py
CHANGED
absfuyu/pkg_data/__init__.py
CHANGED
absfuyu/pkg_data/deprecated.py
CHANGED
absfuyu/pkg_data/logo.py
CHANGED
absfuyu/sort.py
CHANGED
absfuyu/tools/__init__.py
CHANGED
absfuyu/tools/checksum.py
CHANGED
absfuyu/tools/converter.py
CHANGED
absfuyu/tools/generator.py
CHANGED
absfuyu/tools/inspector.py
CHANGED
absfuyu/tools/keygen.py
CHANGED
absfuyu/tools/obfuscator.py
CHANGED
absfuyu/tools/passwordlib.py
CHANGED
absfuyu/tools/shutdownizer.py
CHANGED
absfuyu/tools/sw.py
CHANGED
|
@@ -3,8 +3,8 @@ Absufyu: Software
|
|
|
3
3
|
-----------------
|
|
4
4
|
Software, pyinstaller related stuff
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.9.0
|
|
7
|
+
Date updated: 23/09/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module level
|
|
@@ -40,7 +40,7 @@ from pathlib import Path
|
|
|
40
40
|
from typing import Literal, NamedTuple, TypedDict
|
|
41
41
|
|
|
42
42
|
from absfuyu.core.baseclass import BaseClass
|
|
43
|
-
from absfuyu.core.docstring import versionchanged
|
|
43
|
+
from absfuyu.core.docstring import versionadded, versionchanged
|
|
44
44
|
from absfuyu.dxt import Text
|
|
45
45
|
from absfuyu.tools.converter import Base64EncodeDecode
|
|
46
46
|
from absfuyu.util import stop_after_day
|
|
@@ -474,6 +474,28 @@ class BasicSoftwareProtection(BaseClass):
|
|
|
474
474
|
self._secret = secret
|
|
475
475
|
|
|
476
476
|
def check_valid_license(self, generate_helper: bool = True) -> None:
|
|
477
|
+
"""
|
|
478
|
+
Check for valid license
|
|
479
|
+
(``.zlic`` file in the same directory as the script that runs this code)
|
|
480
|
+
|
|
481
|
+
Parameters
|
|
482
|
+
----------
|
|
483
|
+
generate_helper : bool, optional
|
|
484
|
+
Generate a helper file (``license.helper``),
|
|
485
|
+
which can be used to make license key,
|
|
486
|
+
by default ``True``
|
|
487
|
+
|
|
488
|
+
Raises
|
|
489
|
+
------
|
|
490
|
+
SystemExit
|
|
491
|
+
License file not found!
|
|
492
|
+
|
|
493
|
+
SystemExit
|
|
494
|
+
Invalid license key format!
|
|
495
|
+
|
|
496
|
+
SystemExit
|
|
497
|
+
Invalid license!
|
|
498
|
+
"""
|
|
477
499
|
try:
|
|
478
500
|
# Get license file
|
|
479
501
|
license_file = list(self._cwd.glob("*.zlic"))[0]
|
|
@@ -501,14 +523,63 @@ class BasicSoftwareProtection(BaseClass):
|
|
|
501
523
|
else: # Invalid license
|
|
502
524
|
raise SystemExit("Invalid license!")
|
|
503
525
|
|
|
526
|
+
@versionadded("5.9.0")
|
|
527
|
+
def check_valid_license_gui(
|
|
528
|
+
self, title: str = "WARNING", message: str = "INVALID LICENSE!", generate_helper: bool = True
|
|
529
|
+
) -> None:
|
|
530
|
+
"""
|
|
531
|
+
Check for valid license
|
|
532
|
+
(``.zlic`` file in the same directory as the script that runs this code)
|
|
533
|
+
but will pop up a GUI when invalid license.
|
|
534
|
+
|
|
535
|
+
Parameters
|
|
536
|
+
----------
|
|
537
|
+
title : str, optional
|
|
538
|
+
Title of the GUI, by default "WARNING"
|
|
539
|
+
|
|
540
|
+
message : str, optional
|
|
541
|
+
Message in the GUI, by default "INVALID LICENSE!"
|
|
542
|
+
|
|
543
|
+
generate_helper : bool, optional
|
|
544
|
+
Generate a helper file (``license.helper``),
|
|
545
|
+
which can be used to make license key,
|
|
546
|
+
by default ``True``
|
|
547
|
+
|
|
548
|
+
Raises
|
|
549
|
+
------
|
|
550
|
+
SystemExit
|
|
551
|
+
Invalid license
|
|
552
|
+
"""
|
|
553
|
+
try:
|
|
554
|
+
self.check_valid_license(generate_helper=generate_helper)
|
|
555
|
+
except SystemExit:
|
|
556
|
+
from tkinter import messagebox
|
|
557
|
+
|
|
558
|
+
messagebox.showwarning(title, message, icon="error")
|
|
559
|
+
raise SystemExit("Invalid license")
|
|
560
|
+
|
|
504
561
|
# Make key
|
|
505
|
-
def _make_key(self, name: str, expiry: str, secret: str):
|
|
562
|
+
def _make_key(self, name: str, expiry: str, secret: str) -> None:
|
|
563
|
+
"""
|
|
564
|
+
Generate license key in the same directory as the script that runs this code.
|
|
565
|
+
|
|
566
|
+
Parameters
|
|
567
|
+
----------
|
|
568
|
+
name : str
|
|
569
|
+
Name of license's holder
|
|
570
|
+
|
|
571
|
+
expiry : str
|
|
572
|
+
Expiry date in format "yyyy-mm-dd"
|
|
573
|
+
|
|
574
|
+
secret : str
|
|
575
|
+
Secret string
|
|
576
|
+
"""
|
|
506
577
|
path = self._cwd.joinpath("license.zlic")
|
|
507
578
|
engine = LicenseKeySystem(name, expiry, secret)
|
|
508
579
|
with path.open("w", encoding="utf-8") as f:
|
|
509
580
|
f.write(engine.make_key())
|
|
510
581
|
|
|
511
|
-
def generate_license_helper(self):
|
|
582
|
+
def generate_license_helper(self) -> None:
|
|
512
583
|
"""Gather HWID and make it into a file"""
|
|
513
584
|
path = self._cwd.joinpath("license.helper")
|
|
514
585
|
with path.open("w", encoding="utf-8") as f:
|
absfuyu/tools/web.py
CHANGED
absfuyu/typings.py
CHANGED
absfuyu/util/__init__.py
CHANGED
|
@@ -3,8 +3,8 @@ Absufyu: Utilities
|
|
|
3
3
|
------------------
|
|
4
4
|
Some random utilities
|
|
5
5
|
|
|
6
|
-
Version: 5.
|
|
7
|
-
Date updated:
|
|
6
|
+
Version: 5.9.0
|
|
7
|
+
Date updated: 23/09/2025 (dd/mm/yyyy)
|
|
8
8
|
"""
|
|
9
9
|
|
|
10
10
|
# Module Package
|
|
@@ -25,6 +25,7 @@ __all__ = [
|
|
|
25
25
|
# Library
|
|
26
26
|
# ---------------------------------------------------------------------------
|
|
27
27
|
import pkgutil
|
|
28
|
+
import subprocess
|
|
28
29
|
from datetime import datetime
|
|
29
30
|
from string import printable
|
|
30
31
|
|
|
@@ -257,3 +258,31 @@ def convert_to_raw_unicode(text: str, partial: bool = True) -> str:
|
|
|
257
258
|
character if character in character_set and partial else _convert(character)
|
|
258
259
|
for character in text
|
|
259
260
|
)
|
|
261
|
+
|
|
262
|
+
|
|
263
|
+
@versionadded("5.9.0")
|
|
264
|
+
def is_command_available(cmd: list[str] | str, err_msg: str = "") -> None:
|
|
265
|
+
"""
|
|
266
|
+
Checks if the desired command available
|
|
267
|
+
|
|
268
|
+
Parameters
|
|
269
|
+
----------
|
|
270
|
+
cmd : list[str] | str
|
|
271
|
+
Command to check
|
|
272
|
+
|
|
273
|
+
err_msg : str, optional
|
|
274
|
+
Custom error message, by default ""
|
|
275
|
+
|
|
276
|
+
Raises
|
|
277
|
+
------
|
|
278
|
+
ValueError
|
|
279
|
+
When command is unvailable
|
|
280
|
+
"""
|
|
281
|
+
try:
|
|
282
|
+
subprocess.run(
|
|
283
|
+
cmd,
|
|
284
|
+
stdout=subprocess.DEVNULL,
|
|
285
|
+
stderr=subprocess.DEVNULL,
|
|
286
|
+
)
|
|
287
|
+
except Exception:
|
|
288
|
+
raise ValueError(err_msg)
|
absfuyu/util/api.py
CHANGED
absfuyu/util/gui.py
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Absfuyu: GUI
|
|
3
|
+
------------
|
|
4
|
+
Custom tkinter GUI
|
|
5
|
+
|
|
6
|
+
Version: 5.9.0
|
|
7
|
+
Date updated: 23/09/2025 (dd/mm/yyyy)
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
# Module level
|
|
11
|
+
# ---------------------------------------------------------------------------
|
|
12
|
+
__all__ = ["CustomTkinterApp"]
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
# Library
|
|
16
|
+
# ---------------------------------------------------------------------------
|
|
17
|
+
import tkinter as tk
|
|
18
|
+
|
|
19
|
+
from absfuyu.pkg_data.logo import AbsfuyuLogo
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Class
|
|
23
|
+
# ---------------------------------------------------------------------------
|
|
24
|
+
class CustomTkinterApp(tk.Tk):
|
|
25
|
+
def __init__(self, title: str | None = None) -> None:
|
|
26
|
+
super().__init__()
|
|
27
|
+
|
|
28
|
+
# Set custom icon
|
|
29
|
+
self.iconphoto(True, tk.PhotoImage(data=AbsfuyuLogo.SHORT))
|
|
30
|
+
|
|
31
|
+
# Title
|
|
32
|
+
self.title(title)
|
absfuyu/util/json_method.py
CHANGED
absfuyu/util/lunar.py
CHANGED
absfuyu/util/path.py
CHANGED
absfuyu/util/performance.py
CHANGED
absfuyu/util/shorten_number.py
CHANGED
absfuyu/util/text_table.py
CHANGED
absfuyu/util/zipped.py
CHANGED