AutoGGUF/src/imports_and_globals.py

84 lines
1.8 KiB
Python

import os
import sys
from typing import TextIO, Union
import psutil
import subprocess
import time
import signal
import json
import platform
import requests
import zipfile
from datetime import datetime
from PySide6.QtWidgets import (
QApplication,
QMainWindow,
QVBoxLayout,
QHBoxLayout,
QWidget,
QPushButton,
QListWidget,
QLineEdit,
QLabel,
QFileDialog,
QProgressBar,
QComboBox,
QTextEdit,
QCheckBox,
QGroupBox,
QFormLayout,
QScrollArea,
QSlider,
QSpinBox,
QListWidgetItem,
QMessageBox,
QDialog,
QPlainTextEdit,
QMenu,
)
from PySide6.QtCore import QTimer, Signal, QThread, Qt, QSize
from PySide6.QtGui import QCloseEvent, QAction
from Localizations import *
def show_about(self) -> None:
about_text = (
"AutoGGUF\n\n"
f"Version: {AUTOGGUF_VERSION}\n\n"
"A tool for managing and converting GGUF models."
)
QMessageBox.about(self, "About AutoGGUF", about_text)
def ensure_directory(path) -> None:
if not os.path.exists(path):
os.makedirs(path)
def open_file_safe(file_path, mode="r") -> TextIO:
encodings = ["utf-8", "latin-1", "ascii", "utf-16"]
for encoding in encodings:
try:
return open(file_path, mode, encoding=encoding)
except UnicodeDecodeError:
continue
raise ValueError(
f"Unable to open file {file_path} with any of the encodings: {encodings}"
)
def resource_path(relative_path) -> Union[str, str, bytes]:
if hasattr(sys, "_MEIPASS"):
# PyInstaller path
base_path = sys._MEIPASS
elif "__compiled__" in globals():
# Nuitka path
base_path = os.path.dirname(sys.executable)
else:
# Regular Python path
base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path)