feat: add one-click installers and Windows launcher

This commit is contained in:
Alex
2026-05-24 23:07:03 +03:00
parent 186139f796
commit a70439194e
18 changed files with 870 additions and 720 deletions
+33
View File
@@ -0,0 +1,33 @@
# SPDX-License-Identifier: GPL-3.0-or-later
# Copyright (C) 2026 Alexey
from __future__ import annotations
import os
import sys
from typing import TextIO
def configure_utf8_stdio() -> None:
os.environ.setdefault("PYTHONUTF8", "1")
os.environ.setdefault("PYTHONIOENCODING", "utf-8")
for stream in (sys.stdout, sys.stderr):
reconfigure = getattr(stream, "reconfigure", None)
if reconfigure is None:
continue
try:
reconfigure(encoding="utf-8", errors="backslashreplace")
except Exception:
pass
def safe_print(text: str, *, file: TextIO | None = None, flush: bool = False) -> None:
stream = file or sys.stdout
try:
print(text, file=stream, flush=flush)
return
except UnicodeEncodeError:
encoding = getattr(stream, "encoding", None) or "utf-8"
fallback = text.encode(encoding, errors="backslashreplace").decode(encoding, errors="replace")
print(fallback, file=stream, flush=flush)