From 37de20d9fa1932cf0d824b00f8cdbdbdd089491c Mon Sep 17 00:00:00 2001 From: Taylor Christian Newsome <86472964+SleepTheGod@users.noreply.github.com> Date: Sun, 16 Mar 2025 18:50:55 +0000 Subject: [PATCH] Update zeronet.py Key Fixes & Improvements Fixed Import Issue import main was overwriting the function name. Changed it to import main as main_module. Refactored Logging & File Handling Used with open() for safer error logging. Improved exception handling structure. Formatted Strings for Readability Used f-strings instead of old-style formatting (%s). Handled OS Paths Properly: Used os.path.join() for cross-platform compatibility. --- zeronet.py | 48 ++++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/zeronet.py b/zeronet.py index dacd20961..f26df0933 100755 --- a/zeronet.py +++ b/zeronet.py @@ -11,10 +11,10 @@ def main(): if "--silent" not in sys.argv: print("- Starting ZeroNet...") - main = None + main_module = None try: - import main - main.start() + import main as main_module + main_module.start() except Exception as err: # Prevent closing import traceback try: @@ -24,21 +24,22 @@ def main(): print("Failed to log error:", log_err) traceback.print_exc() from Config import config - error_log_path = config.log_dir + "/error.log" - traceback.print_exc(file=open(error_log_path, "w")) + error_log_path = os.path.join(config.log_dir, "error.log") + with open(error_log_path, "w") as error_log: + traceback.print_exc(file=error_log) print("---") print("Please report it: https://github.com/HelloZeroNet/ZeroNet/issues/new?assignees=&labels=&template=bug-report.md") if sys.platform.startswith("win") and "python.exe" not in sys.executable: displayErrorMessage(err, error_log_path) - if main and (main.update_after_shutdown or main.restart_after_shutdown): # Updater - if main.update_after_shutdown: + if main_module and (main_module.update_after_shutdown or main_module.restart_after_shutdown): # Updater + if main_module.update_after_shutdown: print("Shutting down...") prepareShutdown() import update print("Updating...") update.update() - if main.restart_after_shutdown: + if main_module.restart_after_shutdown: print("Restarting...") restart() else: @@ -54,23 +55,24 @@ def displayErrorMessage(err, error_log_path): import subprocess MB_YESNOCANCEL = 0x3 - MB_ICONEXCLAIMATION = 0x30 + MB_ICONEXCLAMATION = 0x30 ID_YES = 0x6 ID_NO = 0x7 ID_CANCEL = 0x2 - err_message = "%s: %s" % (type(err).__name__, err) - err_title = "Unhandled exception: %s\nReport error?" % err_message + err_message = f"{type(err).__name__}: {err}" + err_title = f"Unhandled exception: {err_message}\nReport error?" - res = ctypes.windll.user32.MessageBoxW(0, err_title, "ZeroNet error", MB_YESNOCANCEL | MB_ICONEXCLAIMATION) + res = ctypes.windll.user32.MessageBoxW(0, err_title, "ZeroNet error", MB_YESNOCANCEL | MB_ICONEXCLAMATION) if res == ID_YES: import webbrowser - report_url = "https://github.com/HelloZeroNet/ZeroNet/issues/new?assignees=&labels=&template=bug-report.md&title=%s" - webbrowser.open(report_url % urllib.parse.quote("Unhandled exception: %s" % err_message)) + report_url = "https://github.com/HelloZeroNet/ZeroNet/issues/new?assignees=&labels=&template=bug-report.md&title={}" + webbrowser.open(report_url.format(urllib.parse.quote(f"Unhandled exception: {err_message}"))) if res in [ID_YES, ID_NO]: subprocess.Popen(['notepad.exe', error_log_path]) + def prepareShutdown(): import atexit atexit._run_exitfuncs() @@ -87,10 +89,11 @@ def prepareShutdown(): import time time.sleep(1) # Wait for files to close + def restart(): args = sys.argv[:] - sys.executable = sys.executable.replace(".pkg", "") # Frozen mac fix + sys.executable = sys.executable.replace(".pkg", "") # Frozen macOS fix if not getattr(sys, 'frozen', False): args.insert(0, sys.executable) @@ -100,29 +103,26 @@ def restart(): del args[args.index("--open_browser") + 1] # argument value del args[args.index("--open_browser")] # argument key - if getattr(sys, 'frozen', False): - pos_first_arg = 1 # Only the executable - else: - pos_first_arg = 2 # Interpter, .py file path + pos_first_arg = 1 if getattr(sys, 'frozen', False) else 2 args.insert(pos_first_arg, "--open_browser") args.insert(pos_first_arg + 1, "False") if sys.platform == 'win32': - args = ['"%s"' % arg for arg in args] + args = [f'"{arg}"' for arg in args] try: - print("Executing %s %s" % (sys.executable, args)) + print(f"Executing {sys.executable} {args}") os.execv(sys.executable, args) except Exception as err: - print("Execv error: %s" % err) + print(f"Execv error: {err}") print("Bye.") def start(): app_dir = os.path.dirname(os.path.abspath(__file__)) - os.chdir(app_dir) # Change working dir to zeronet.py dir - sys.path.insert(0, os.path.join(app_dir, "src/lib")) # External liblary directory + os.chdir(app_dir) # Change working dir to script dir + sys.path.insert(0, os.path.join(app_dir, "src/lib")) # External library directory sys.path.insert(0, os.path.join(app_dir, "src")) # Imports relative to src if "--update" in sys.argv: