mirror of https://github.com/leafspark/AutoGGUF
101 lines
3.4 KiB
Python
101 lines
3.4 KiB
Python
from PySide6.QtWidgets import QFileDialog
|
|
|
|
from error_handling import show_error
|
|
from Localizations import *
|
|
import requests
|
|
|
|
from DownloadThread import DownloadThread
|
|
from imports_and_globals import ensure_directory
|
|
|
|
|
|
def browse_models(self):
|
|
self.logger.info(BROWSING_FOR_MODELS_DIRECTORY)
|
|
models_path = QFileDialog.getExistingDirectory(self, SELECT_MODELS_DIRECTORY)
|
|
if models_path:
|
|
self.models_input.setText(os.path.abspath(models_path))
|
|
ensure_directory(models_path)
|
|
self.load_models()
|
|
|
|
|
|
def browse_output(self):
|
|
self.logger.info(BROWSING_FOR_OUTPUT_DIRECTORY)
|
|
output_path = QFileDialog.getExistingDirectory(self, SELECT_OUTPUT_DIRECTORY)
|
|
if output_path:
|
|
self.output_input.setText(os.path.abspath(output_path))
|
|
ensure_directory(output_path)
|
|
|
|
|
|
def browse_logs(self):
|
|
self.logger.info(BROWSING_FOR_LOGS_DIRECTORY)
|
|
logs_path = QFileDialog.getExistingDirectory(self, SELECT_LOGS_DIRECTORY)
|
|
if logs_path:
|
|
self.logs_input.setText(os.path.abspath(logs_path))
|
|
ensure_directory(logs_path)
|
|
|
|
|
|
def browse_imatrix(self):
|
|
self.logger.info(BROWSING_FOR_IMATRIX_FILE)
|
|
imatrix_file, _ = QFileDialog.getOpenFileName(
|
|
self, SELECT_IMATRIX_FILE, "", DAT_FILES
|
|
)
|
|
if imatrix_file:
|
|
self.imatrix.setText(os.path.abspath(imatrix_file))
|
|
|
|
|
|
def browse_lora_input(self):
|
|
self.logger.info(BROWSING_FOR_LORA_INPUT_DIRECTORY)
|
|
lora_input_path = QFileDialog.getExistingDirectory(
|
|
self, SELECT_LORA_INPUT_DIRECTORY
|
|
)
|
|
if lora_input_path:
|
|
self.lora_input.setText(os.path.abspath(lora_input_path))
|
|
ensure_directory(lora_input_path)
|
|
|
|
|
|
def browse_lora_output(self):
|
|
self.logger.info(BROWSING_FOR_LORA_OUTPUT_FILE)
|
|
lora_output_file, _ = QFileDialog.getSaveFileName(
|
|
self, SELECT_LORA_OUTPUT_FILE, "", GGUF_AND_BIN_FILES
|
|
)
|
|
if lora_output_file:
|
|
self.lora_output.setText(os.path.abspath(lora_output_file))
|
|
|
|
|
|
def download_llama_cpp(self):
|
|
self.logger.info(STARTING_LLAMACPP_DOWNLOAD)
|
|
asset = self.asset_combo.currentData()
|
|
if not asset:
|
|
show_error(self.logger, NO_ASSET_SELECTED)
|
|
return
|
|
|
|
llama_bin = os.path.abspath("llama_bin")
|
|
os.makedirs(llama_bin, exist_ok=True)
|
|
|
|
save_path = os.path.join(llama_bin, asset["name"])
|
|
|
|
self.download_thread = DownloadThread(asset["browser_download_url"], save_path)
|
|
self.download_thread.progress_signal.connect(self.update_download_progress)
|
|
self.download_thread.finished_signal.connect(self.download_finished)
|
|
self.download_thread.error_signal.connect(self.download_error)
|
|
self.download_thread.start()
|
|
|
|
self.download_button.setEnabled(False)
|
|
self.download_progress.setValue(0)
|
|
|
|
|
|
def refresh_releases(self):
|
|
self.logger.info(REFRESHING_LLAMACPP_RELEASES)
|
|
try:
|
|
response = requests.get(
|
|
"https://api.github.com/repos/ggerganov/llama.cpp/releases"
|
|
)
|
|
response.raise_for_status() # Raise an exception for bad status codes
|
|
releases = response.json()
|
|
self.release_combo.clear()
|
|
for release in releases:
|
|
self.release_combo.addItem(release["tag_name"], userData=release)
|
|
self.release_combo.currentIndexChanged.connect(self.update_assets)
|
|
self.update_assets()
|
|
except requests.exceptions.RequestException as e:
|
|
show_error(self.logger, ERROR_FETCHING_RELEASES.format(str(e)))
|