From 7eb55c21d00f1f80a66658c45098889bd4a00725 Mon Sep 17 00:00:00 2001 From: WorldTeacher Date: Tue, 17 Jun 2025 16:21:56 +0200 Subject: [PATCH] migrate from PyQt6 to PySide6, remove unneeded dependencies --- config/config.py | 4 +- pyproject.toml | 5 +- src/backend/admin_console.py | 13 + src/backend/database.py | 1 + src/backend/documentation_thread.py | 2 +- src/backend/thread_bookgrabber.py | 4 +- src/backend/threads_autoadder.py | 4 +- src/backend/threads_availchecker.py | 4 +- src/ui/dialogs/Ui_edit_bookdata.py | 4 +- src/ui/dialogs/Ui_fileparser.py | 6 +- src/ui/dialogs/Ui_login.py | 4 +- src/ui/dialogs/Ui_mail_preview.py | 4 +- src/ui/dialogs/Ui_medianadder.py | 4 +- src/ui/dialogs/Ui_new_subject.py | 4 +- src/ui/dialogs/Ui_parsed_titles.py | 4 +- src/ui/dialogs/Ui_reminder.py | 4 +- src/ui/dialogs/Ui_settings.py | 4 +- src/ui/dialogs/about.py | 6 +- src/ui/dialogs/app_ext.py | 2 +- src/ui/dialogs/bookdata.py | 2 +- src/ui/dialogs/confirm_extend.py | 2 +- src/ui/dialogs/confirm_extend_ui.py | 4 +- src/ui/dialogs/dialog_sources/Ui_about.py | 4 +- .../dialogs/dialog_sources/Ui_app_status.py | 4 +- .../dialog_sources/Ui_apparat_extend.py | 4 +- .../dialog_sources/Ui_confirm_extend.py | 4 +- .../dialog_sources/Ui_edit_bookdata.py | 4 +- .../dialog_sources/Ui_elsa_add_table_entry.py | 4 +- .../Ui_elsa_generate_citation.py | 4 +- .../Ui_elsa_generator_confirm.py | 4 +- src/ui/dialogs/dialog_sources/Ui_login.py | 4 +- .../dialogs/dialog_sources/Ui_mail_preview.py | 4 +- .../dialogs/dialog_sources/Ui_medianadder.py | 4 +- .../Ui_newMailTemplateDesigner.py | 4 +- .../dialog_sources/Ui_parsed_titles.py | 4 +- src/ui/dialogs/dialog_sources/Ui_reminder.py | 4 +- src/ui/dialogs/dialog_sources/Ui_settings.py | 4 +- src/ui/dialogs/dialog_sources/about_ui.py | 4 +- .../dialogs/dialog_sources/app_status_ui.py | 4 +- .../dialog_sources/apparat_extend_ui.py | 4 +- .../dialog_sources/confirm_extend_ui.py | 4 +- .../dialog_sources/documentprint_ui.py | 4 +- .../dialog_sources/edit_bookdata_ui.py | 4 +- .../dialog_sources/elsa_add_table_entry_ui.py | 4 +- .../elsa_generate_citation_ui.py | 4 +- .../elsa_generator_confirm_ui.py | 4 +- src/ui/dialogs/dialog_sources/login_ui.py | 4 +- .../dialogs/dialog_sources/mail_preview_ui.py | 4 +- .../dialogs/dialog_sources/medianadder_ui.py | 4 +- .../newMailTemplateDesigner_ui.py | 4 +- .../dialog_sources/parsed_titles_ui.py | 4 +- src/ui/dialogs/dialog_sources/reminder_ui.py | 4 +- src/ui/dialogs/dialog_sources/settings_ui.py | 4 +- src/ui/dialogs/docuprint.py | 2 +- src/ui/dialogs/elsa_add_entry.py | 2 +- src/ui/dialogs/elsa_citation.py | 2 +- src/ui/dialogs/elsa_gen_confirm.py | 2 +- src/ui/dialogs/ext_app.py | 4 +- src/ui/dialogs/fileparser.py | 2 +- src/ui/dialogs/login.py | 6 +- src/ui/dialogs/mail.py | 2 +- src/ui/dialogs/mailTemplate.py | 4 +- src/ui/dialogs/mail_preview.py | 4 +- src/ui/dialogs/mail_preview_ui.py | 4 +- src/ui/dialogs/medienadder.py | 2 +- src/ui/dialogs/parsed_titles.py | 2 +- src/ui/dialogs/parsed_titles_ui.py | 4 +- src/ui/dialogs/popup_confirm.py | 4 +- src/ui/dialogs/reminder.py | 2 +- src/ui/dialogs/settings.py | 2 +- src/ui/extensions/ValidatorButton.py | 2 +- src/ui/semesterapparat_ui_ui.py | 4 +- src/ui/sounds/semesterapparat_ui_ui.py | 4 +- src/ui/userInterface.py | 6 +- src/ui/widgets/MessageCalendar.py | 6 +- src/ui/widgets/__init__.py | 2 +- src/ui/widgets/admin_create_user.py | 6 +- src/ui/widgets/admin_edit_prof.py | 2 +- src/ui/widgets/admin_edit_user.py | 2 +- src/ui/widgets/admin_query.py | 2 +- src/ui/widgets/calendar_entry.py | 10 +- src/ui/widgets/collapse.py | 4 +- src/ui/widgets/elsa_main.py | 14 +- src/ui/widgets/filepicker.py | 4 +- src/ui/widgets/iconLine.py | 2 +- src/ui/widgets/searchPage.py | 21 +- src/ui/widgets/welcome_wizard.py | 145 +++++++- .../widget_sources/admin_create_user_ui.py | 4 +- .../widget_sources/admin_edit_prof_ui.py | 4 +- .../widget_sources/admin_edit_user_ui.py | 4 +- .../widget_sources/calendar_entry_ui.py | 4 +- .../widget_sources/elsa_maindialog_ui.py | 4 +- .../widgets/widget_sources/icon_widget_ui.py | 4 +- .../search_statistic_page_ui.py | 4 +- .../widgets/widget_sources/welcome_wizard.ui | 201 +++++++++-- .../widget_sources/welcome_wizard_ui.py | 278 ++++++++++---- src/utils/Ui_docs.py | 4 +- src/utils/docs_ui.py | 4 +- src/utils/documentationview.py | 4 +- src/utils/icon.py | 2 +- uv.lock | 340 +++++++++--------- 101 files changed, 898 insertions(+), 464 deletions(-) diff --git a/config/config.py b/config/config.py index 51ba16a..5f1324e 100644 --- a/config/config.py +++ b/config/config.py @@ -33,7 +33,6 @@ class Database: name: str path: str | Path temp: str | Path - def getattr(self, name: str): return getattr(self, name) @@ -224,6 +223,9 @@ class Config: def set_zotero_attr(self, name: str, value: Any): OmegaConf.update(self._config, f"zotero.{name}", value) + def set_openai_attr(self, name: str, value: Any): + OmegaConf.update(self._config, f"openAI.{name}", value) + def set_icon_attr(self, name: str, value: Any): OmegaConf.update(self._config, f"icons.{name}", value) diff --git a/pyproject.toml b/pyproject.toml index 0ec7f41..2a03c91 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -21,8 +21,7 @@ dependencies = [ "openai>=1.79.0", "pandas>=2.2.3", "playwright>=1.49.1", - "pyqt6>=6.8.0", - "pyqtgraph>=0.13.7", + "pyside6>=6.9.1", "python-docx>=1.1.2", "pyzotero>=1.6.4", "ratelimit>=2.2.1", @@ -60,4 +59,4 @@ post_commit_hooks = [] [[tool.bumpversion.files]] filename = "src/__init__.py" [[tool.bumpversion.files]] -filename = ".version" \ No newline at end of file +filename = ".version" diff --git a/src/backend/admin_console.py b/src/backend/admin_console.py index fee467b..c65bfa8 100644 --- a/src/backend/admin_console.py +++ b/src/backend/admin_console.py @@ -44,6 +44,19 @@ class AdminCommands: hashed_password = self.hash_password("admin") self.db.createUser("admin", salt + hashed_password, "admin", salt) + def create_user(self, username: str, password: str, role: str = "user"): + """Create a new user in the database. + + Args: + username (str): the username of the user to be created. + password (str): the password of the user to be created. + role (str, optional): the role of the user to be created. Defaults to "user". + """ + hashed_password, salt = self.create_password(password) + self.db.createUser( + user=username, password=salt + hashed_password, role=role, salt=salt + ) + def hash_password(self, password: str) -> str: """Hash a password using SHA256. diff --git a/src/backend/database.py b/src/backend/database.py index 90f765d..2baecee 100644 --- a/src/backend/database.py +++ b/src/backend/database.py @@ -74,6 +74,7 @@ class Database: os.makedirs(path) if self.get_db_contents() == []: log.critical("Database does not exist, creating tables") + log.critical(f"Path: {path}") self.create_tables() self.insertSubjects() diff --git a/src/backend/documentation_thread.py b/src/backend/documentation_thread.py index 14d9e15..e411ec3 100644 --- a/src/backend/documentation_thread.py +++ b/src/backend/documentation_thread.py @@ -1,4 +1,4 @@ -from PyQt6.QtCore import QThread +from PySide6.QtCore import QThread from src.utils.documentation import run_mkdocs diff --git a/src/backend/thread_bookgrabber.py b/src/backend/thread_bookgrabber.py index 0db468e..02fef02 100644 --- a/src/backend/thread_bookgrabber.py +++ b/src/backend/thread_bookgrabber.py @@ -1,5 +1,5 @@ -from PyQt6.QtCore import QThread -from PyQt6.QtCore import pyqtSignal as Signal +from PySide6.QtCore import QThread +from PySide6.QtCore import Signal from src.backend import Database from src.logic.webrequest import BibTextTransformer, WebRequest diff --git a/src/backend/threads_autoadder.py b/src/backend/threads_autoadder.py index 6ac53bf..b793ae6 100644 --- a/src/backend/threads_autoadder.py +++ b/src/backend/threads_autoadder.py @@ -1,8 +1,8 @@ import time # from icecream import ic -from PyQt6.QtCore import QThread -from PyQt6.QtCore import pyqtSignal as Signal +from PySide6.QtCore import QThread +from PySide6.QtCore import Signal as Signal from src.backend import Database import loguru diff --git a/src/backend/threads_availchecker.py b/src/backend/threads_availchecker.py index b3b08c5..3fbf819 100644 --- a/src/backend/threads_availchecker.py +++ b/src/backend/threads_availchecker.py @@ -1,8 +1,8 @@ import time # from icecream import ic -from PyQt6.QtCore import QThread -from PyQt6.QtCore import pyqtSignal as Signal +from PySide6.QtCore import QThread +from PySide6.QtCore import Signal as Signal from src.backend.database import Database from src import LOG_DIR diff --git a/src/ui/dialogs/Ui_edit_bookdata.py b/src/ui/dialogs/Ui_edit_bookdata.py index 728cd17..eba44e0 100644 --- a/src/ui/dialogs/Ui_edit_bookdata.py +++ b/src/ui/dialogs/Ui_edit_bookdata.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\edit_bookdata.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.logic.dataclass import BookData diff --git a/src/ui/dialogs/Ui_fileparser.py b/src/ui/dialogs/Ui_fileparser.py index 05459bd..da869db 100644 --- a/src/ui/dialogs/Ui_fileparser.py +++ b/src/ui/dialogs/Ui_fileparser.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\fileparser.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.logic.webrequest import BibTextTransformer, WebRequest @@ -61,7 +61,7 @@ class Ui_Dialog(object): self.listWidget.setObjectName("listWidget") self.signatures = [] self.returned = [] - # self.data_gathering_complete = QtCore.pyqtSignal() + # self.data_gathering_complete = QtCore.Signal() self.retranslateUi(Dialog) QtCore.QMetaObject.connectSlotsByName(Dialog) diff --git a/src/ui/dialogs/Ui_login.py b/src/ui/dialogs/Ui_login.py index 3e570af..7e807ac 100644 --- a/src/ui/dialogs/Ui_login.py +++ b/src/ui/dialogs/Ui_login.py @@ -1,6 +1,6 @@ # Form implementation generated from reading ui file '/home/alexander/GitHub/Semesterapparate/ui/dialogs/login.ui' # -# Created by: PyQt6 UI code generator 6.5.3 +# Created by: PySide6 UI code generator 6.5.3 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. @@ -8,7 +8,7 @@ import hashlib -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from src.backend.database import Database from src.backend.admin_console import AdminCommands diff --git a/src/ui/dialogs/Ui_mail_preview.py b/src/ui/dialogs/Ui_mail_preview.py index 4b95e50..32ed57d 100644 --- a/src/ui/dialogs/Ui_mail_preview.py +++ b/src/ui/dialogs/Ui_mail_preview.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\mail_preview.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets import subprocess import tempfile import os diff --git a/src/ui/dialogs/Ui_medianadder.py b/src/ui/dialogs/Ui_medianadder.py index 3578bab..a1c46b0 100644 --- a/src/ui/dialogs/Ui_medianadder.py +++ b/src/ui/dialogs/Ui_medianadder.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\medianadder.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/Ui_new_subject.py b/src/ui/dialogs/Ui_new_subject.py index 213eb1c..db6ebde 100644 --- a/src/ui/dialogs/Ui_new_subject.py +++ b/src/ui/dialogs/Ui_new_subject.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\new_subject.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/Ui_parsed_titles.py b/src/ui/dialogs/Ui_parsed_titles.py index 786c176..b05ad32 100644 --- a/src/ui/dialogs/Ui_parsed_titles.py +++ b/src/ui/dialogs/Ui_parsed_titles.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\parsed_titles.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src.logic.log import MyLogger from src.logic.threads import AutoAdder diff --git a/src/ui/dialogs/Ui_reminder.py b/src/ui/dialogs/Ui_reminder.py index f4dbc8f..283e509 100644 --- a/src/ui/dialogs/Ui_reminder.py +++ b/src/ui/dialogs/Ui_reminder.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\reminder.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/Ui_settings.py b/src/ui/dialogs/Ui_settings.py index bc50dfe..36c39f2 100644 --- a/src/ui/dialogs/Ui_settings.py +++ b/src/ui/dialogs/Ui_settings.py @@ -1,13 +1,13 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\Semesterapparate\ui\dialogs\settings.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. from omegaconf import OmegaConf -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets config = OmegaConf.load("config.yaml") diff --git a/src/ui/dialogs/about.py b/src/ui/dialogs/about.py index 6a6ba29..972495e 100644 --- a/src/ui/dialogs/about.py +++ b/src/ui/dialogs/about.py @@ -1,6 +1,6 @@ from .dialog_sources.Ui_about import Ui_about -from PyQt6 import QtWidgets -from PyQt6.QtCore import PYQT_VERSION_STR +from PySide6 import QtWidgets +import PySide6 from src import Icon, __version__, __author__ @@ -20,7 +20,7 @@ class About(QtWidgets.QDialog, Ui_about): data = { "Version": __version__, "Author": __author__, - "PyQt6 Version": PYQT_VERSION_STR, + "PySide6 Version": PySide6.__version__, "License": "MIT License", "Icons": """Google Material Design Icons (https://fonts.google.com/icons) StableDiffusion (logo) diff --git a/src/ui/dialogs/app_ext.py b/src/ui/dialogs/app_ext.py index 9cb0516..8db924f 100644 --- a/src/ui/dialogs/app_ext.py +++ b/src/ui/dialogs/app_ext.py @@ -1,4 +1,4 @@ -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from .dialog_sources.Ui_apparat_extend import Ui_Dialog from src import Icon diff --git a/src/ui/dialogs/bookdata.py b/src/ui/dialogs/bookdata.py index 60bc5ed..9561604 100644 --- a/src/ui/dialogs/bookdata.py +++ b/src/ui/dialogs/bookdata.py @@ -1,4 +1,4 @@ -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src.logic.dataclass import BookData diff --git a/src/ui/dialogs/confirm_extend.py b/src/ui/dialogs/confirm_extend.py index 2be36ea..3363bd5 100644 --- a/src/ui/dialogs/confirm_extend.py +++ b/src/ui/dialogs/confirm_extend.py @@ -1,5 +1,5 @@ from .dialog_sources.Ui_confirm_extend import Ui_extend_confirm -from PyQt6 import QtWidgets +from PySide6 import QtWidgets class ConfirmExtend(QtWidgets.QDialog, Ui_extend_confirm): diff --git a/src/ui/dialogs/confirm_extend_ui.py b/src/ui/dialogs/confirm_extend_ui.py index 5c7a0ed..cc2674e 100644 --- a/src/ui/dialogs/confirm_extend_ui.py +++ b/src/ui/dialogs/confirm_extend_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\confirm_extend.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_extend_confirm(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_about.py b/src/ui/dialogs/dialog_sources/Ui_about.py index e151ec1..6434828 100644 --- a/src/ui/dialogs/dialog_sources/Ui_about.py +++ b/src/ui/dialogs/dialog_sources/Ui_about.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\about.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_about(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_app_status.py b/src/ui/dialogs/dialog_sources/Ui_app_status.py index a927c1b..7dcc51b 100644 --- a/src/ui/dialogs/dialog_sources/Ui_app_status.py +++ b/src/ui/dialogs/dialog_sources/Ui_app_status.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\app_status.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore +from PySide6 import QtCore class Ui_Form(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_apparat_extend.py b/src/ui/dialogs/dialog_sources/Ui_apparat_extend.py index 62b28d7..828d1a8 100644 --- a/src/ui/dialogs/dialog_sources/Ui_apparat_extend.py +++ b/src/ui/dialogs/dialog_sources/Ui_apparat_extend.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\apparat_extend.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PySide6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_confirm_extend.py b/src/ui/dialogs/dialog_sources/Ui_confirm_extend.py index 13f44e4..72ef74f 100644 --- a/src/ui/dialogs/dialog_sources/Ui_confirm_extend.py +++ b/src/ui/dialogs/dialog_sources/Ui_confirm_extend.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\confirm_extend.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PySide6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_extend_confirm(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_edit_bookdata.py b/src/ui/dialogs/dialog_sources/Ui_edit_bookdata.py index 97f0fd3..381cd43 100644 --- a/src/ui/dialogs/dialog_sources/Ui_edit_bookdata.py +++ b/src/ui/dialogs/dialog_sources/Ui_edit_bookdata.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\edit_bookdata.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_elsa_add_table_entry.py b/src/ui/dialogs/dialog_sources/Ui_elsa_add_table_entry.py index a608e77..a393508 100644 --- a/src/ui/dialogs/dialog_sources/Ui_elsa_add_table_entry.py +++ b/src/ui/dialogs/dialog_sources/Ui_elsa_add_table_entry.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_add_table_entry.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PySide6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_elsa_generate_citation.py b/src/ui/dialogs/dialog_sources/Ui_elsa_generate_citation.py index f3c7390..43944f4 100644 --- a/src/ui/dialogs/dialog_sources/Ui_elsa_generate_citation.py +++ b/src/ui/dialogs/dialog_sources/Ui_elsa_generate_citation.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_generate_citation.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_elsa_generator_confirm.py b/src/ui/dialogs/dialog_sources/Ui_elsa_generator_confirm.py index c9980a6..c56c6f3 100644 --- a/src/ui/dialogs/dialog_sources/Ui_elsa_generator_confirm.py +++ b/src/ui/dialogs/dialog_sources/Ui_elsa_generator_confirm.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_generator_confirm.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_login.py b/src/ui/dialogs/dialog_sources/Ui_login.py index ff7dcd0..deb1a62 100644 --- a/src/ui/dialogs/dialog_sources/Ui_login.py +++ b/src/ui/dialogs/dialog_sources/Ui_login.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\login.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_mail_preview.py b/src/ui/dialogs/dialog_sources/Ui_mail_preview.py index 333103c..e852ebf 100644 --- a/src/ui/dialogs/dialog_sources/Ui_mail_preview.py +++ b/src/ui/dialogs/dialog_sources/Ui_mail_preview.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\mail_preview.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PySide6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_eMailPreview(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_medianadder.py b/src/ui/dialogs/dialog_sources/Ui_medianadder.py index 44a884d..db20569 100644 --- a/src/ui/dialogs/dialog_sources/Ui_medianadder.py +++ b/src/ui/dialogs/dialog_sources/Ui_medianadder.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\medianadder.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PySide6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_newMailTemplateDesigner.py b/src/ui/dialogs/dialog_sources/Ui_newMailTemplateDesigner.py index df436d4..ee2e682 100644 --- a/src/ui/dialogs/dialog_sources/Ui_newMailTemplateDesigner.py +++ b/src/ui/dialogs/dialog_sources/Ui_newMailTemplateDesigner.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\newMailTemplateDesigner.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_parsed_titles.py b/src/ui/dialogs/dialog_sources/Ui_parsed_titles.py index b18b94a..bf60db7 100644 --- a/src/ui/dialogs/dialog_sources/Ui_parsed_titles.py +++ b/src/ui/dialogs/dialog_sources/Ui_parsed_titles.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\parsed_titles.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Form(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_reminder.py b/src/ui/dialogs/dialog_sources/Ui_reminder.py index 45cc18c..5f62089 100644 --- a/src/ui/dialogs/dialog_sources/Ui_reminder.py +++ b/src/ui/dialogs/dialog_sources/Ui_reminder.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\reminder.ui' # -# Created by: PyQt6 UI code generator 6.6.1 +# Created by: PySide6 UI code generator 6.6.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_Erinnerung(object): diff --git a/src/ui/dialogs/dialog_sources/Ui_settings.py b/src/ui/dialogs/dialog_sources/Ui_settings.py index 8ee3c85..f6cdc11 100644 --- a/src/ui/dialogs/dialog_sources/Ui_settings.py +++ b/src/ui/dialogs/dialog_sources/Ui_settings.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\settings.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PySide6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/about_ui.py b/src/ui/dialogs/dialog_sources/about_ui.py index 1a7c657..4713898 100644 --- a/src/ui/dialogs/dialog_sources/about_ui.py +++ b/src/ui/dialogs/dialog_sources/about_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\about.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_about(object): diff --git a/src/ui/dialogs/dialog_sources/app_status_ui.py b/src/ui/dialogs/dialog_sources/app_status_ui.py index 423eb50..d845f0e 100644 --- a/src/ui/dialogs/dialog_sources/app_status_ui.py +++ b/src/ui/dialogs/dialog_sources/app_status_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\app_status.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Form(object): diff --git a/src/ui/dialogs/dialog_sources/apparat_extend_ui.py b/src/ui/dialogs/dialog_sources/apparat_extend_ui.py index a9a9a81..c197967 100644 --- a/src/ui/dialogs/dialog_sources/apparat_extend_ui.py +++ b/src/ui/dialogs/dialog_sources/apparat_extend_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\apparat_extend.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/confirm_extend_ui.py b/src/ui/dialogs/dialog_sources/confirm_extend_ui.py index 1fe54b9..bef4a6b 100644 --- a/src/ui/dialogs/dialog_sources/confirm_extend_ui.py +++ b/src/ui/dialogs/dialog_sources/confirm_extend_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\confirm_extend.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_extend_confirm(object): diff --git a/src/ui/dialogs/dialog_sources/documentprint_ui.py b/src/ui/dialogs/dialog_sources/documentprint_ui.py index 030e9c5..aa7e341 100644 --- a/src/ui/dialogs/dialog_sources/documentprint_ui.py +++ b/src/ui/dialogs/dialog_sources/documentprint_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\documentprint.ui' # -# Created by: PyQt6 UI code generator 6.9.0 +# Created by: PySide6 UI code generator 6.9.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/edit_bookdata_ui.py b/src/ui/dialogs/dialog_sources/edit_bookdata_ui.py index 89e4ce0..be8db53 100644 --- a/src/ui/dialogs/dialog_sources/edit_bookdata_ui.py +++ b/src/ui/dialogs/dialog_sources/edit_bookdata_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\edit_bookdata.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/elsa_add_table_entry_ui.py b/src/ui/dialogs/dialog_sources/elsa_add_table_entry_ui.py index de48dbb..3a77b77 100644 --- a/src/ui/dialogs/dialog_sources/elsa_add_table_entry_ui.py +++ b/src/ui/dialogs/dialog_sources/elsa_add_table_entry_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_add_table_entry.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/elsa_generate_citation_ui.py b/src/ui/dialogs/dialog_sources/elsa_generate_citation_ui.py index dbed3f6..2315132 100644 --- a/src/ui/dialogs/dialog_sources/elsa_generate_citation_ui.py +++ b/src/ui/dialogs/dialog_sources/elsa_generate_citation_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_generate_citation.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/elsa_generator_confirm_ui.py b/src/ui/dialogs/dialog_sources/elsa_generator_confirm_ui.py index fcd4a4b..9c38f0f 100644 --- a/src/ui/dialogs/dialog_sources/elsa_generator_confirm_ui.py +++ b/src/ui/dialogs/dialog_sources/elsa_generator_confirm_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\elsa_generator_confirm.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/login_ui.py b/src/ui/dialogs/dialog_sources/login_ui.py index c3ee6d5..2a2c72b 100644 --- a/src/ui/dialogs/dialog_sources/login_ui.py +++ b/src/ui/dialogs/dialog_sources/login_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\login.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/mail_preview_ui.py b/src/ui/dialogs/dialog_sources/mail_preview_ui.py index 37109b2..a7ce30d 100644 --- a/src/ui/dialogs/dialog_sources/mail_preview_ui.py +++ b/src/ui/dialogs/dialog_sources/mail_preview_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\mail_preview.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_eMailPreview(object): diff --git a/src/ui/dialogs/dialog_sources/medianadder_ui.py b/src/ui/dialogs/dialog_sources/medianadder_ui.py index adf8edd..52e90ac 100644 --- a/src/ui/dialogs/dialog_sources/medianadder_ui.py +++ b/src/ui/dialogs/dialog_sources/medianadder_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\medianadder.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/newMailTemplateDesigner_ui.py b/src/ui/dialogs/dialog_sources/newMailTemplateDesigner_ui.py index 4ad337a..0892c34 100644 --- a/src/ui/dialogs/dialog_sources/newMailTemplateDesigner_ui.py +++ b/src/ui/dialogs/dialog_sources/newMailTemplateDesigner_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\newMailTemplateDesigner.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/dialog_sources/parsed_titles_ui.py b/src/ui/dialogs/dialog_sources/parsed_titles_ui.py index c99e92d..5d5cadf 100644 --- a/src/ui/dialogs/dialog_sources/parsed_titles_ui.py +++ b/src/ui/dialogs/dialog_sources/parsed_titles_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\parsed_titles.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Form(object): diff --git a/src/ui/dialogs/dialog_sources/reminder_ui.py b/src/ui/dialogs/dialog_sources/reminder_ui.py index 6ae8f4a..25b7bf8 100644 --- a/src/ui/dialogs/dialog_sources/reminder_ui.py +++ b/src/ui/dialogs/dialog_sources/reminder_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\reminder.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Erinnerung(object): diff --git a/src/ui/dialogs/dialog_sources/settings_ui.py b/src/ui/dialogs/dialog_sources/settings_ui.py index 92015d7..0ac4637 100644 --- a/src/ui/dialogs/dialog_sources/settings_ui.py +++ b/src/ui/dialogs/dialog_sources/settings_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\dialog_sources\settings.ui' # -# Created by: PyQt6 UI code generator 6.9.0 +# Created by: PySide6 UI code generator 6.9.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/docuprint.py b/src/ui/dialogs/docuprint.py index 4556ebd..3f87c1c 100644 --- a/src/ui/dialogs/docuprint.py +++ b/src/ui/dialogs/docuprint.py @@ -1,5 +1,5 @@ from .dialog_sources.documentprint_ui import Ui_Dialog -from PyQt6 import QtWidgets, QtCore +from PySide6 import QtWidgets, QtCore from src import Icon from src.utils.richtext import SemapSchilder, SemesterDocument diff --git a/src/ui/dialogs/elsa_add_entry.py b/src/ui/dialogs/elsa_add_entry.py index 597718e..c15a0ab 100644 --- a/src/ui/dialogs/elsa_add_entry.py +++ b/src/ui/dialogs/elsa_add_entry.py @@ -1,7 +1,7 @@ from .dialog_sources.Ui_elsa_add_table_entry import Ui_Dialog from src.logic.webrequest import WebRequest, BibTextTransformer from src import Icon -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src.transformers.transformers import DictToTable from src.logic.zotero import ZoteroController diff --git a/src/ui/dialogs/elsa_citation.py b/src/ui/dialogs/elsa_citation.py index eae7288..8a7c2e0 100644 --- a/src/ui/dialogs/elsa_citation.py +++ b/src/ui/dialogs/elsa_citation.py @@ -1,5 +1,5 @@ from .dialog_sources.Ui_elsa_generate_citation import Ui_Dialog -from PyQt6 import QtWidgets +from PySide6 import QtWidgets class ElsaCitation(QtWidgets.QDialog, Ui_Dialog): diff --git a/src/ui/dialogs/elsa_gen_confirm.py b/src/ui/dialogs/elsa_gen_confirm.py index b56a20a..8b15842 100644 --- a/src/ui/dialogs/elsa_gen_confirm.py +++ b/src/ui/dialogs/elsa_gen_confirm.py @@ -1,5 +1,5 @@ from .dialog_sources.Ui_elsa_generator_confirm import Ui_Dialog -from PyQt6 import QtWidgets +from PySide6 import QtWidgets class ElsaGenConfirm(QtWidgets.QDialog, Ui_Dialog): diff --git a/src/ui/dialogs/ext_app.py b/src/ui/dialogs/ext_app.py index 5ff330d..425067e 100644 --- a/src/ui/dialogs/ext_app.py +++ b/src/ui/dialogs/ext_app.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'ui/dialogs/extend_apparat.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Frame(object): diff --git a/src/ui/dialogs/fileparser.py b/src/ui/dialogs/fileparser.py index c049429..c0c29cd 100644 --- a/src/ui/dialogs/fileparser.py +++ b/src/ui/dialogs/fileparser.py @@ -1,4 +1,4 @@ -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src.logic.webrequest import BibTextTransformer, WebRequest diff --git a/src/ui/dialogs/login.py b/src/ui/dialogs/login.py index 39b8fd1..b7b820b 100644 --- a/src/ui/dialogs/login.py +++ b/src/ui/dialogs/login.py @@ -2,7 +2,7 @@ import hashlib import sys import loguru -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from src import LOG_DIR, Icon from src.backend.admin_console import AdminCommands @@ -88,14 +88,14 @@ class LoginDialog(Ui_Dialog): else: # Credentials are invalid, display a warning if username == "" or password == "": - logger.warning("Invalid username or password. Login failed.") + log.warning("Invalid username or password. Login failed.") warning_dialog = QtWidgets.QMessageBox() warning_dialog.setIcon(QtWidgets.QMessageBox.Icon.Warning) warning_dialog.setText("Please enter a username and password.") warning_dialog.setWindowTitle("Login Failed") warning_dialog.exec() else: - logger.warning("Invalid username or password. Login failed.") + log.warning("Invalid username or password. Login failed.") warning_dialog = QtWidgets.QMessageBox() warning_dialog.setIcon(QtWidgets.QMessageBox.Icon.Warning) warning_dialog.setText( diff --git a/src/ui/dialogs/mail.py b/src/ui/dialogs/mail.py index c631610..833233a 100644 --- a/src/ui/dialogs/mail.py +++ b/src/ui/dialogs/mail.py @@ -1,7 +1,7 @@ import os import sys -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src import Icon, settings as config diff --git a/src/ui/dialogs/mailTemplate.py b/src/ui/dialogs/mailTemplate.py index 9c55b7c..c8aae04 100644 --- a/src/ui/dialogs/mailTemplate.py +++ b/src/ui/dialogs/mailTemplate.py @@ -1,6 +1,6 @@ import os -from PyQt6 import QtGui, QtWidgets, QtCore +from PySide6 import QtGui, QtWidgets, QtCore from src import Icon @@ -22,7 +22,7 @@ logger.add(sys.stdout) class MailTemplateDialog(QtWidgets.QDialog, NewMailTemplateDesignerDialog): - updateSignal = QtCore.pyqtSignal() + updateSignal = QtCore.Signal() def __init__(self, parent=None) -> None: super().__init__(parent) diff --git a/src/ui/dialogs/mail_preview.py b/src/ui/dialogs/mail_preview.py index e4a6560..7d8dd36 100644 --- a/src/ui/dialogs/mail_preview.py +++ b/src/ui/dialogs/mail_preview.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'ui\dialogs\mail_preview.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/dialogs/mail_preview_ui.py b/src/ui/dialogs/mail_preview_ui.py index 473a6de..da6b448 100644 --- a/src/ui/dialogs/mail_preview_ui.py +++ b/src/ui/dialogs/mail_preview_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\mail_preview.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_eMailPreview(object): diff --git a/src/ui/dialogs/medienadder.py b/src/ui/dialogs/medienadder.py index 1f00c71..ecdeac6 100644 --- a/src/ui/dialogs/medienadder.py +++ b/src/ui/dialogs/medienadder.py @@ -1,4 +1,4 @@ -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from .dialog_sources.medianadder_ui import Ui_Dialog from src import Icon diff --git a/src/ui/dialogs/parsed_titles.py b/src/ui/dialogs/parsed_titles.py index cf4d50f..d5ba73b 100644 --- a/src/ui/dialogs/parsed_titles.py +++ b/src/ui/dialogs/parsed_titles.py @@ -1,4 +1,4 @@ -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src.backend import AutoAdder diff --git a/src/ui/dialogs/parsed_titles_ui.py b/src/ui/dialogs/parsed_titles_ui.py index 7f643c8..59f38d2 100644 --- a/src/ui/dialogs/parsed_titles_ui.py +++ b/src/ui/dialogs/parsed_titles_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\dialogs\parsed_titles.ui' # -# Created by: PyQt6 UI code generator 6.9.0 +# Created by: PySide6 UI code generator 6.9.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Form(object): diff --git a/src/ui/dialogs/popup_confirm.py b/src/ui/dialogs/popup_confirm.py index 6f47a8f..8b7f19c 100644 --- a/src/ui/dialogs/popup_confirm.py +++ b/src/ui/dialogs/popup_confirm.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'ui\dialogs\confirm_extend.ui' # -# Created by: PyQt6 UI code generator 6.3.1 +# Created by: PySide6 UI code generator 6.3.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src import Icon diff --git a/src/ui/dialogs/reminder.py b/src/ui/dialogs/reminder.py index 54ec66e..f92e8b3 100644 --- a/src/ui/dialogs/reminder.py +++ b/src/ui/dialogs/reminder.py @@ -1,4 +1,4 @@ -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from .dialog_sources.reminder_ui import Ui_Erinnerung as Ui_Dialog from src import Icon diff --git a/src/ui/dialogs/settings.py b/src/ui/dialogs/settings.py index bdd4502..df918d0 100644 --- a/src/ui/dialogs/settings.py +++ b/src/ui/dialogs/settings.py @@ -1,4 +1,4 @@ -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets from src import Icon, settings from .dialog_sources.settings_ui import Ui_Dialog as _settings from src.ui.widgets.iconLine import IconWidget diff --git a/src/ui/extensions/ValidatorButton.py b/src/ui/extensions/ValidatorButton.py index 85fa7b8..bbdecb5 100644 --- a/src/ui/extensions/ValidatorButton.py +++ b/src/ui/extensions/ValidatorButton.py @@ -1,4 +1,4 @@ -from PyQt6 import QtWidgets +from PySide6 import QtWidgets class ValidatorButton(QtWidgets.QToolButton): diff --git a/src/ui/semesterapparat_ui_ui.py b/src/ui/semesterapparat_ui_ui.py index 4c0af77..077fb02 100644 --- a/src/ui/semesterapparat_ui_ui.py +++ b/src/ui/semesterapparat_ui_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\semesterapparat_ui.ui' # -# Created by: PyQt6 UI code generator 6.9.0 +# Created by: PySide6 UI code generator 6.9.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): diff --git a/src/ui/sounds/semesterapparat_ui_ui.py b/src/ui/sounds/semesterapparat_ui_ui.py index 657741f..302f6f3 100644 --- a/src/ui/sounds/semesterapparat_ui_ui.py +++ b/src/ui/sounds/semesterapparat_ui_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\sounds\semesterapparat_ui.ui' # -# Created by: PyQt6 UI code generator 6.9.0 +# Created by: PySide6 UI code generator 6.9.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_MainWindow(object): diff --git a/src/ui/userInterface.py b/src/ui/userInterface.py index 8003f86..b6b8fc1 100644 --- a/src/ui/userInterface.py +++ b/src/ui/userInterface.py @@ -11,9 +11,9 @@ from typing import Any, Union import loguru from natsort import natsorted -from PyQt6 import QtCore, QtGui, QtWidgets -from PyQt6.QtCore import QThread -from PyQt6.QtGui import QRegularExpressionValidator +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtCore import QThread +from PySide6.QtGui import QRegularExpressionValidator from src import LOG_DIR, Icon from src.backend import AvailChecker, BookGrabber, Database, DocumentationThread diff --git a/src/ui/widgets/MessageCalendar.py b/src/ui/widgets/MessageCalendar.py index 9a424cd..f14fcbe 100644 --- a/src/ui/widgets/MessageCalendar.py +++ b/src/ui/widgets/MessageCalendar.py @@ -3,9 +3,9 @@ from typing import Any import darkdetect import loguru -from PyQt6 import QtCore, QtWidgets -from PyQt6.QtCore import QDate -from PyQt6.QtGui import QColor, QPen +from PySide6 import QtCore, QtWidgets +from PySide6.QtCore import QDate +from PySide6.QtGui import QColor, QPen from src import LOG_DIR from src.backend import Database diff --git a/src/ui/widgets/__init__.py b/src/ui/widgets/__init__.py index 3eb366b..43b611a 100644 --- a/src/ui/widgets/__init__.py +++ b/src/ui/widgets/__init__.py @@ -16,7 +16,7 @@ __all__ = [ from .collapse import StatusWidget from .filepicker import FilePicker -from .graph import DataGraph +from .graph import DataQtGraph from .calendar_entry import CalendarEntry from .MessageCalendar import MessageCalendar from .searchPage import SearchStatisticPage diff --git a/src/ui/widgets/admin_create_user.py b/src/ui/widgets/admin_create_user.py index 2be5e2a..d9a0e68 100644 --- a/src/ui/widgets/admin_create_user.py +++ b/src/ui/widgets/admin_create_user.py @@ -1,11 +1,11 @@ -from PyQt6 import QtWidgets -from PyQt6.QtCore import pyqtSignal +from PySide6 import QtWidgets +from PySide6.QtCore import Signal from .widget_sources.admin_create_user_ui import Ui_Dialog from src.backend import AdminCommands, Database class UserCreate(QtWidgets.QDialog, Ui_Dialog): - admin_action_changed = pyqtSignal() + admin_action_changed = Signal() def __init__(self): super(UserCreate, self).__init__() diff --git a/src/ui/widgets/admin_edit_prof.py b/src/ui/widgets/admin_edit_prof.py index 4ef209a..0e327c3 100644 --- a/src/ui/widgets/admin_edit_prof.py +++ b/src/ui/widgets/admin_edit_prof.py @@ -1,5 +1,5 @@ from .widget_sources.admin_edit_prof_ui import Ui_Dialog # -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src.logic import Prof from src.backend import Database diff --git a/src/ui/widgets/admin_edit_user.py b/src/ui/widgets/admin_edit_user.py index 7ce5914..6768dcb 100644 --- a/src/ui/widgets/admin_edit_user.py +++ b/src/ui/widgets/admin_edit_user.py @@ -1,5 +1,5 @@ from .widget_sources.admin_edit_user_ui import Ui_Dialog -from PyQt6 import QtWidgets +from PySide6 import QtWidgets from src.backend import Database from src.backend import AdminCommands diff --git a/src/ui/widgets/admin_query.py b/src/ui/widgets/admin_query.py index 46389ee..5c933f4 100644 --- a/src/ui/widgets/admin_query.py +++ b/src/ui/widgets/admin_query.py @@ -1,6 +1,6 @@ from .widget_sources.admin_query_ui import Ui_Form -from PyQt6 import QtWidgets, QtCore +from PySide6 import QtWidgets, QtCore from src import Icon from src.backend import Database diff --git a/src/ui/widgets/calendar_entry.py b/src/ui/widgets/calendar_entry.py index 1c70b94..566bd6f 100644 --- a/src/ui/widgets/calendar_entry.py +++ b/src/ui/widgets/calendar_entry.py @@ -1,15 +1,13 @@ from .widget_sources.calendar_entry_ui import Ui_Dialog -from PyQt6 import QtWidgets -from PyQt6.QtCore import pyqtSignal +from PySide6 import QtWidgets +from PySide6.QtCore import Signal from src.backend.database import Database from src import Icon class CalendarEntry(QtWidgets.QDialog, Ui_Dialog): - deleteSignal = pyqtSignal( - int - ) # when emit, send the id of the message to be deleted - repaintSignal = pyqtSignal(str) + deleteSignal = Signal(int) # when emit, send the id of the message to be deleted + repaintSignal = Signal(str) def __init__(self, parent=None, messages=None, date=None): super().__init__(parent) diff --git a/src/ui/widgets/collapse.py b/src/ui/widgets/collapse.py index cd5ceae..e6a1ca7 100644 --- a/src/ui/widgets/collapse.py +++ b/src/ui/widgets/collapse.py @@ -1,6 +1,6 @@ # import pysignal pyslot -from PyQt6.QtCore import pyqtSignal as Signal -from PyQt6.QtWidgets import ( +from PySide6.QtCore import Signal as Signal +from PySide6.QtWidgets import ( QApplication, QTreeWidget, QTreeWidgetItem, diff --git a/src/ui/widgets/elsa_main.py b/src/ui/widgets/elsa_main.py index 1c83a6d..ccad176 100644 --- a/src/ui/widgets/elsa_main.py +++ b/src/ui/widgets/elsa_main.py @@ -1,13 +1,13 @@ import os from .widget_sources.elsa_maindialog_ui import Ui_Dialog -from PyQt6 import QtCore, QtWidgets, QtGui -from PyQt6.QtGui import QRegularExpressionValidator -from PyQt6.QtCore import QDate +from PySide6 import QtCore, QtWidgets, QtGui +from PySide6.QtGui import QRegularExpressionValidator +from PySide6.QtCore import QDate from src import Icon from src.backend import Semester, Database from src.logic import elsa_word_to_csv, Prof from src.ui.dialogs import ElsaAddEntry, popus_confirm -from src.ui.widgets import FilePicker, DataGraph +from src.ui.widgets import FilePicker, DataQtGraph from src.backend import recreateElsaFile import loguru import sys @@ -463,10 +463,12 @@ class ElsaDialog(QtWidgets.QDialog, Ui_Dialog): self.graph_data["x"].pop(0) self.graph_data["y"].pop(0) # generateMissing = True if len(self.graph_data["x"]) > 2 else False - graph = DataGraph( + graph = DataQtGraph( title="ELSA Apparate pro Semester", data=self.graph_data, - label="Anzahl der Apparate", + generateMissing=False, + y_label="Anzahl der Apparate", + x_rotation=0, ) log.debug(self.graph_data) self.elsa_statistics_table.setRowCount(0) diff --git a/src/ui/widgets/filepicker.py b/src/ui/widgets/filepicker.py index fb89d82..e44a1fe 100644 --- a/src/ui/widgets/filepicker.py +++ b/src/ui/widgets/filepicker.py @@ -1,7 +1,7 @@ import sys -from PyQt6.QtCore import QSettings -from PyQt6.QtWidgets import QApplication, QFileDialog +from PySide6.QtCore import QSettings +from PySide6.QtWidgets import QApplication, QFileDialog class FilePicker: diff --git a/src/ui/widgets/iconLine.py b/src/ui/widgets/iconLine.py index d4f1478..7a1e9b7 100644 --- a/src/ui/widgets/iconLine.py +++ b/src/ui/widgets/iconLine.py @@ -1,5 +1,5 @@ from .widget_sources.icon_widget_ui import Ui_Dialog -from PyQt6 import QtWidgets +from PySide6 import QtWidgets import sys from loguru import logger as log diff --git a/src/ui/widgets/searchPage.py b/src/ui/widgets/searchPage.py index 448f319..4d10292 100644 --- a/src/ui/widgets/searchPage.py +++ b/src/ui/widgets/searchPage.py @@ -2,14 +2,14 @@ import sys import loguru from natsort import natsorted -from PyQt6 import QtCore, QtGui, QtWidgets -from PyQt6.QtCore import pyqtSignal +from PySide6 import QtCore, QtGui, QtWidgets +from PySide6.QtCore import Signal from src import LOG_DIR from src.backend import Database, Semester from src.logic import Prof, custom_sort, sort_semesters_list from src.ui.dialogs import ApparatExtendDialog, Mail_Dialog, ReminderDialog -from src.ui.widgets import DataGraph, StatusWidget +from src.ui.widgets import DataQtGraph, StatusWidget from .widget_sources.search_statistic_page_ui import Ui_Dialog @@ -26,10 +26,10 @@ class MyComboBox(QtWidgets.QComboBox): class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog): - apparat_open = pyqtSignal(str) - reloadSignal = pyqtSignal() - refreshSignal = pyqtSignal() - updateCalendar = pyqtSignal(int, list) + apparat_open = Signal(str) + reloadSignal = Signal() + refreshSignal = Signal() + updateCalendar = Signal(int, list) def __init__(self): log.info("SearchStatisticPage started") @@ -310,7 +310,12 @@ class SearchStatisticPage(QtWidgets.QDialog, Ui_Dialog): "x": [i[0] for i in data], "y": {"Erstellt": [i[1] for i in data], "Gelöscht": [i[2] for i in data]}, } - graph = DataGraph(title="Erstellte und gelöschte Apparate", data=graph_data) + graph = DataQtGraph( + title="Erstellte und gelöschte Apparate", + data=graph_data, + generateMissing=False, + y_label="Anzahl der Apparate", + ) # place the graph into tabWidget_3 self.tabWidget_3.addTab(graph, "Graph") diff --git a/src/ui/widgets/welcome_wizard.py b/src/ui/widgets/welcome_wizard.py index d79fa5a..f72e6e3 100644 --- a/src/ui/widgets/welcome_wizard.py +++ b/src/ui/widgets/welcome_wizard.py @@ -1,6 +1,10 @@ from .widget_sources.welcome_wizard_ui import Ui_Wizard -from PyQt6 import QtWidgets, QtCore, QtGui +from PySide6 import QtWidgets, QtCore, QtGui from src import settings +from src.backend import AdminCommands +from appdirs import AppDirs + +appdirs = AppDirs("SemesterApparatsManager", "SAM") class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard): def __init__(self, parent=None): @@ -8,21 +12,146 @@ class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard): self.setupUi(self) self.btn_database.clicked.connect(self.open_database_settings) self.btn_temp.clicked.connect(self.open_temp_settings) + self.btn_test.clicked.connect(self.test_login_data) + self.btn_create.clicked.connect(self.create_sam_user) + # mail password field + self.settings_mail_password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Password) + # allow user to toggle password visibility + self.settings_mail_password.setContextMenuPolicy( + QtCore.Qt.ContextMenuPolicy.CustomContextMenu + ) + self.settings_mail_password.customContextMenuRequested.connect( + self.toggle_password_visibility + ) + # if button for next page is clicked, run function to store settings + self.button(QtWidgets.QWizard.WizardButton.FinishButton).clicked.connect( + self.store_settings + ) + self.settings_mail_use_user_name.toggled.connect(self.set_check_text) + # set initial values for checkbox, database + self.set_check_text(self.settings_mail_use_user_name.isChecked()) + self.settings_database.setText( + str(settings.database.path) or str(appdirs.user_data_dir) + ) + + self.settings_temp.setText( + str(settings.database.temp) or str(appdirs.user_cache_dir) + ) + + def test_login_data(self): + sam_users = AdminCommands().list_users() + sam_users = [user[2] for user in sam_users] + if not sam_users: + QtWidgets.QMessageBox.critical( + self, + "Error", + "No SAM users found. Please create a SAM user first.", + ) + return + username = self.sam_username.text() + if username in sam_users: + QtWidgets.QMessageBox.information( + self, + "Error", + f"User '{username}' exists in SAM.", + ) + + def create_sam_user(self): + """Create a SAM user in the database.""" + admin = AdminCommands() + if not admin.create_user(self.sam_username.text(), self.sam_password.text()): + QtWidgets.QMessageBox.critical( + self, + "Error", + "Failed to create SAM user", + ) + else: + QtWidgets.QMessageBox.information( + self, + "Success", + "SAM user created successfully", + ) + + def set_check_text(self, checked): + """Set the text of the checkbox based on its state.""" + if checked: + self.settings_mail_use_user_name.setText("Nutzername wird verwendet") + else: + self.settings_mail_use_user_name.setText("Nutzername wird nicht verwendet") + + def toggle_password_visibility(self, pos): + """Toggle the visibility of the password field.""" + if ( + self.settings_mail_password.echoMode() + == QtWidgets.QLineEdit.EchoMode.Password + ): + self.settings_mail_password.setEchoMode(QtWidgets.QLineEdit.EchoMode.Normal) + else: + self.settings_mail_password.setEchoMode( + QtWidgets.QLineEdit.EchoMode.Password + ) + + def store_settings(self): + # database page + db_path = self.settings_database.text() + temp_path = self.settings_temp.text() + db_name = self.settings_database_name.text() + + # mail page + smtp_server = self.settings_mail_smtp_server.text() + smtp_port = self.settings_mail_smtp_port.text() + mail_sender = self.settings_mail_address.text() + mail_user_name = self.settings_mail_user_name.text() + mail_password = self.settings_mail_password.text() + mail_printer_mail = self.settings_mail_printer.text() + mail_signature = self.settings_mail_signature.toPlainText() + use_user_name = self.settings_mail_use_user_name.isChecked() + + # zotero page + zotero__api_key = self.settings_zotero_api_key.text() + zotero_user_id = self.settings_zotero_library_id.text() + zotero_library_type = self.settings_zotero_library_type.text() + + # openai page + openai_api_key = self.settings_openai_api_key.text() + openai_model = self.settings_openai_model.currentText() + + # store settings in config + settings.set_database_attr("path", db_path) + settings.set_database_attr("name", db_name) + settings.set_database_attr("temp", temp_path) + settings.set_mail_attr("smtp_server", smtp_server) + settings.set_mail_attr("port", smtp_port) + settings.set_mail_attr("sender", mail_sender) + settings.set_mail_attr("user_name", mail_user_name) + settings.set_mail_attr("password", mail_password) + settings.set_mail_attr("printer_mail", mail_printer_mail) + settings.set_mail_attr("signature", mail_signature) + settings.set_mail_attr("use_user_name", use_user_name) + settings.set_zotero_attr("api_key", zotero__api_key) + settings.set_zotero_attr("library_id", zotero_user_id) + settings.set_zotero_attr("library_type", zotero_library_type) + settings.set_openai_attr("api_key", openai_api_key) + settings.set_openai_attr("model", openai_model) + # save settings to file + print("Saving settings...") + print(settings) + settings.save() def open_database_settings(self): #open filepicker dialog to select database file folder file_dialog = QtWidgets.QFileDialog(self, "Select Database File") - file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.ExistingFile) - file_dialog.setNameFilter("Database Files (*.db *.sqlite *.sqlite3)") + file_dialog.setFileMode(QtWidgets.QFileDialog.FileMode.Directory) file_dialog.setViewMode(QtWidgets.QFileDialog.ViewMode.List) - file_dialog.setDirectory(settings.database.path) # Set initial directory if needed - file_dialog.setOption(QtWidgets.QFileDialog.Option.DontUseNativeDialog, True) file_dialog.setWindowFlags(file_dialog.windowFlags() | QtCore.Qt.WindowType.WindowStaysOnTopHint) + # set start dir to appdir.user_data_dir + file_dialog.setDirectory(str(appdirs.user_data_dir)) if file_dialog.exec(): selected_files = file_dialog.selectedFiles() if selected_files: # Do something with the selected database file - print("Selected database file:", selected_files[0]) + db_path = selected_files[0] + self.settings_database.setText(db_path) def open_temp_settings(self): #open filepicker dialog to select temporary directory @@ -34,8 +163,8 @@ class WelcomeWizard(QtWidgets.QWizard, Ui_Wizard): selected_dirs = dir_dialog.selectedFiles() if selected_dirs: # Do something with the selected temporary directory - print("Selected temporary directory:", selected_dirs[0]) - + temp_path = selected_dirs[0] + self.settings_temp.setText(temp_path) def launch_wizard(): """Launch the welcome wizard.""" diff --git a/src/ui/widgets/widget_sources/admin_create_user_ui.py b/src/ui/widgets/widget_sources/admin_create_user_ui.py index a43d4bb..935fc8b 100644 --- a/src/ui/widgets/widget_sources/admin_create_user_ui.py +++ b/src/ui/widgets/widget_sources/admin_create_user_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_create_user.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/widgets/widget_sources/admin_edit_prof_ui.py b/src/ui/widgets/widget_sources/admin_edit_prof_ui.py index 1ecaddc..3cbb6ce 100644 --- a/src/ui/widgets/widget_sources/admin_edit_prof_ui.py +++ b/src/ui/widgets/widget_sources/admin_edit_prof_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_edit_prof.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/widgets/widget_sources/admin_edit_user_ui.py b/src/ui/widgets/widget_sources/admin_edit_user_ui.py index 8094d24..a33fce7 100644 --- a/src/ui/widgets/widget_sources/admin_edit_user_ui.py +++ b/src/ui/widgets/widget_sources/admin_edit_user_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\admin_edit_user.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/widgets/widget_sources/calendar_entry_ui.py b/src/ui/widgets/widget_sources/calendar_entry_ui.py index e5ea069..8041d1f 100644 --- a/src/ui/widgets/widget_sources/calendar_entry_ui.py +++ b/src/ui/widgets/widget_sources/calendar_entry_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\calendar_entry.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/widgets/widget_sources/elsa_maindialog_ui.py b/src/ui/widgets/widget_sources/elsa_maindialog_ui.py index 2822004..0edfbe5 100644 --- a/src/ui/widgets/widget_sources/elsa_maindialog_ui.py +++ b/src/ui/widgets/widget_sources/elsa_maindialog_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\elsa_maindialog.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/widgets/widget_sources/icon_widget_ui.py b/src/ui/widgets/widget_sources/icon_widget_ui.py index 82f9c01..66b7475 100644 --- a/src/ui/widgets/widget_sources/icon_widget_ui.py +++ b/src/ui/widgets/widget_sources/icon_widget_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\icon_widget.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/widgets/widget_sources/search_statistic_page_ui.py b/src/ui/widgets/widget_sources/search_statistic_page_ui.py index 210d580..4cced76 100644 --- a/src/ui/widgets/widget_sources/search_statistic_page_ui.py +++ b/src/ui/widgets/widget_sources/search_statistic_page_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\search_statistic_page.ui' # -# Created by: PyQt6 UI code generator 6.9.0 +# Created by: PySide6 UI code generator 6.9.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/ui/widgets/widget_sources/welcome_wizard.ui b/src/ui/widgets/widget_sources/welcome_wizard.ui index b2bcba6..0f1b382 100644 --- a/src/ui/widgets/widget_sources/welcome_wizard.ui +++ b/src/ui/widgets/widget_sources/welcome_wizard.ui @@ -23,7 +23,7 @@ Qt::PlainText - 0 + 5 @@ -41,6 +41,9 @@ false + + Qt::NoFocus + 0 @@ -64,7 +67,7 @@ li.checked::marker { content: "\2612"; } <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- eMail</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- Zotero Integration</p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">- KI Integration</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><br /></p></body></html> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Anschließend kann ein Nutzeraccount für SAM erstellt werden</p></body></html> @@ -81,17 +84,43 @@ li.checked::marker { content: "\2612"; } 1 + + + + Qt::NoFocus + + + true + + + C:\Users\[Nutzer]\AppData\Local\SAM\SemesterApparatsManager\Cache + + + - Datenbank + Datenbankpfad + + Qt::NoFocus + + + true + - semesterapparate.db + + + + + + + + Temporäre Daten @@ -102,24 +131,24 @@ li.checked::marker { content: "\2612"; } - - + + - Temporäre Daten + ... + + + + + + + Datenbankname - + - C:\Users\[Nutzer]\AppData\Local\SAM\SemesterApparatsManager\Cache - - - - - - - ... + semesterapparate.db @@ -144,16 +173,41 @@ li.checked::marker { content: "\2612"; } - + + + true + + - + + + Qt::ImhDigitsOnly + + + true + + - + + + true + + - + + + Rechtsklick, um passwort anzuzeigen + + + + + + + + @@ -184,7 +238,11 @@ li.checked::marker { content: "\2612"; } - + + + true + + @@ -202,7 +260,7 @@ für SMTP - + @@ -219,7 +277,11 @@ für SMTP - + + + true + + @@ -282,7 +344,7 @@ für SMTP - + @@ -299,9 +361,9 @@ für SMTP - + - gpt-4o-mini + gpt3.5-turbo @@ -342,7 +404,94 @@ für SMTP + + + SAM Nutzer + + + Hier kann ein Nutzer für SAM erstellt werden + + + + + + Nutzername + + + + + + + + + + Passwort + + + + + + + + + + + + Prüfen + + + + + + + Anlegen + + + true + + + false + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + settings_database + btn_database + settings_database_name + settings_temp + btn_temp + settings_mail_smtp_server + settings_mail_smtp_port + settings_mail_address + settings_mail_user_name + settings_mail_password + settings_mail_signature + settings_mail_printer + settings_mail_use_user_name + settings_zotero_api_key + settings_zotero_library_id + settings_zotero_library_type + settings_openai_api_key + settings_openai_model + diff --git a/src/ui/widgets/widget_sources/welcome_wizard_ui.py b/src/ui/widgets/widget_sources/welcome_wizard_ui.py index 3433e85..eaf5851 100644 --- a/src/ui/widgets/widget_sources/welcome_wizard_ui.py +++ b/src/ui/widgets/widget_sources/welcome_wizard_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\ui\widgets\widget_sources\welcome_wizard.ui' # -# Created by: PyQt6 UI code generator 6.9.0 +# Created by: PySide6 UI code generator 6.9.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Wizard(object): @@ -16,7 +16,7 @@ class Ui_Wizard(object): Wizard.setSizeGripEnabled(False) Wizard.setWizardStyle(QtWidgets.QWizard.WizardStyle.ClassicStyle) Wizard.setSubTitleFormat(QtCore.Qt.TextFormat.PlainText) - Wizard.setCurrentId(0) + Wizard.setCurrentId(5) self.wizardPage1 = QtWidgets.QWizardPage() self.wizardPage1.setSubTitle("") self.wizardPage1.setObjectName("wizardPage1") @@ -24,6 +24,7 @@ class Ui_Wizard(object): self.verticalLayout.setObjectName("verticalLayout") self.textEdit = QtWidgets.QTextEdit(parent=self.wizardPage1) self.textEdit.setEnabled(False) + self.textEdit.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) self.textEdit.setLineWidth(0) self.textEdit.setAutoFormatting(QtWidgets.QTextEdit.AutoFormattingFlag.AutoAll) self.textEdit.setReadOnly(True) @@ -34,24 +35,35 @@ class Ui_Wizard(object): self.wizardPage2.setObjectName("wizardPage2") self.gridLayout = QtWidgets.QGridLayout(self.wizardPage2) self.gridLayout.setObjectName("gridLayout") + self.settings_temp = QtWidgets.QLineEdit(parent=self.wizardPage2) + self.settings_temp.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.settings_temp.setReadOnly(True) + self.settings_temp.setObjectName("settings_temp") + self.gridLayout.addWidget(self.settings_temp, 2, 1, 1, 1) self.label = QtWidgets.QLabel(parent=self.wizardPage2) self.label.setObjectName("label") self.gridLayout.addWidget(self.label, 0, 0, 1, 1) self.settings_database = QtWidgets.QLineEdit(parent=self.wizardPage2) + self.settings_database.setFocusPolicy(QtCore.Qt.FocusPolicy.NoFocus) + self.settings_database.setReadOnly(True) + self.settings_database.setPlaceholderText("") self.settings_database.setObjectName("settings_database") self.gridLayout.addWidget(self.settings_database, 0, 1, 1, 1) + self.label_2 = QtWidgets.QLabel(parent=self.wizardPage2) + self.label_2.setObjectName("label_2") + self.gridLayout.addWidget(self.label_2, 2, 0, 1, 1) self.btn_database = QtWidgets.QToolButton(parent=self.wizardPage2) self.btn_database.setObjectName("btn_database") self.gridLayout.addWidget(self.btn_database, 0, 2, 1, 1) - self.label_2 = QtWidgets.QLabel(parent=self.wizardPage2) - self.label_2.setObjectName("label_2") - self.gridLayout.addWidget(self.label_2, 1, 0, 1, 1) - self.settings_temp = QtWidgets.QLineEdit(parent=self.wizardPage2) - self.settings_temp.setObjectName("settings_temp") - self.gridLayout.addWidget(self.settings_temp, 1, 1, 1, 1) self.btn_temp = QtWidgets.QToolButton(parent=self.wizardPage2) self.btn_temp.setObjectName("btn_temp") - self.gridLayout.addWidget(self.btn_temp, 1, 2, 1, 1) + self.gridLayout.addWidget(self.btn_temp, 2, 2, 1, 1) + self.label_16 = QtWidgets.QLabel(parent=self.wizardPage2) + self.label_16.setObjectName("label_16") + self.gridLayout.addWidget(self.label_16, 1, 0, 1, 1) + self.settings_database_name = QtWidgets.QLineEdit(parent=self.wizardPage2) + self.settings_database_name.setObjectName("settings_database_name") + self.gridLayout.addWidget(self.settings_database_name, 1, 1, 1, 1) Wizard.addPage(self.wizardPage2) self.wizardPage3 = QtWidgets.QWizardPage() self.wizardPage3.setObjectName("wizardPage3") @@ -60,18 +72,34 @@ class Ui_Wizard(object): self.label_3 = QtWidgets.QLabel(parent=self.wizardPage3) self.label_3.setObjectName("label_3") self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_3) - self.lineEdit = QtWidgets.QLineEdit(parent=self.wizardPage3) - self.lineEdit.setObjectName("lineEdit") - self.formLayout.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit) - self.lineEdit_2 = QtWidgets.QLineEdit(parent=self.wizardPage3) - self.lineEdit_2.setObjectName("lineEdit_2") - self.formLayout.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_2) - self.lineEdit_3 = QtWidgets.QLineEdit(parent=self.wizardPage3) - self.lineEdit_3.setObjectName("lineEdit_3") - self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_3) - self.lineEdit_4 = QtWidgets.QLineEdit(parent=self.wizardPage3) - self.lineEdit_4.setObjectName("lineEdit_4") - self.formLayout.setWidget(4, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_4) + self.settings_mail_smtp_server = QtWidgets.QLineEdit(parent=self.wizardPage3) + self.settings_mail_smtp_server.setClearButtonEnabled(True) + self.settings_mail_smtp_server.setObjectName("settings_mail_smtp_server") + self.formLayout.setWidget( + 0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_smtp_server + ) + self.settings_mail_smtp_port = QtWidgets.QLineEdit(parent=self.wizardPage3) + self.settings_mail_smtp_port.setInputMethodHints( + QtCore.Qt.InputMethodHint.ImhDigitsOnly + ) + self.settings_mail_smtp_port.setClearButtonEnabled(True) + self.settings_mail_smtp_port.setObjectName("settings_mail_smtp_port") + self.formLayout.setWidget( + 1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_smtp_port + ) + self.settings_mail_user_name = QtWidgets.QLineEdit(parent=self.wizardPage3) + self.settings_mail_user_name.setClearButtonEnabled(True) + self.settings_mail_user_name.setObjectName("settings_mail_user_name") + self.formLayout.setWidget( + 3, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_user_name + ) + self.settings_mail_password = QtWidgets.QLineEdit(parent=self.wizardPage3) + self.settings_mail_password.setStatusTip("") + self.settings_mail_password.setWhatsThis("") + self.settings_mail_password.setObjectName("settings_mail_password") + self.formLayout.setWidget( + 4, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_password + ) self.label_4 = QtWidgets.QLabel(parent=self.wizardPage3) self.label_4.setObjectName("label_4") self.formLayout.setWidget(3, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_4) @@ -84,27 +112,35 @@ class Ui_Wizard(object): self.settings_mail_use_user_name = QtWidgets.QCheckBox(parent=self.wizardPage3) self.settings_mail_use_user_name.setObjectName("settings_mail_use_user_name") self.formLayout.setWidget(8, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_use_user_name) - self.settings_mail_ = QtWidgets.QLineEdit(parent=self.wizardPage3) - self.settings_mail_.setObjectName("settings_mail_") - self.formLayout.setWidget(7, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_) + self.settings_mail_printer = QtWidgets.QLineEdit(parent=self.wizardPage3) + self.settings_mail_printer.setClearButtonEnabled(True) + self.settings_mail_printer.setObjectName("settings_mail_printer") + self.formLayout.setWidget( + 7, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_printer + ) self.label_8 = QtWidgets.QLabel(parent=self.wizardPage3) self.label_8.setObjectName("label_8") self.formLayout.setWidget(7, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_8) self.label_9 = QtWidgets.QLabel(parent=self.wizardPage3) self.label_9.setObjectName("label_9") self.formLayout.setWidget(8, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_9) - self.textEdit_2 = QtWidgets.QTextEdit(parent=self.wizardPage3) - self.textEdit_2.setObjectName("textEdit_2") - self.formLayout.setWidget(5, QtWidgets.QFormLayout.ItemRole.FieldRole, self.textEdit_2) + self.settings_mail_signature = QtWidgets.QTextEdit(parent=self.wizardPage3) + self.settings_mail_signature.setObjectName("settings_mail_signature") + self.formLayout.setWidget( + 5, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_signature + ) self.label_10 = QtWidgets.QLabel(parent=self.wizardPage3) self.label_10.setObjectName("label_10") self.formLayout.setWidget(5, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_10) self.label_7 = QtWidgets.QLabel(parent=self.wizardPage3) self.label_7.setObjectName("label_7") self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_7) - self.lineEdit_5 = QtWidgets.QLineEdit(parent=self.wizardPage3) - self.lineEdit_5.setObjectName("lineEdit_5") - self.formLayout.setWidget(2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_5) + self.settings_mail_address = QtWidgets.QLineEdit(parent=self.wizardPage3) + self.settings_mail_address.setClearButtonEnabled(True) + self.settings_mail_address.setObjectName("settings_mail_address") + self.formLayout.setWidget( + 2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_mail_address + ) Wizard.addPage(self.wizardPage3) self.wizardPage4 = QtWidgets.QWizardPage() self.wizardPage4.setObjectName("wizardPage4") @@ -133,59 +169,151 @@ class Ui_Wizard(object): self.wizardPage5.setObjectName("wizardPage5") self.formLayout_3 = QtWidgets.QFormLayout(self.wizardPage5) self.formLayout_3.setObjectName("formLayout_3") - self.lineEdit_6 = QtWidgets.QLineEdit(parent=self.wizardPage5) - self.lineEdit_6.setObjectName("lineEdit_6") - self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.lineEdit_6) + self.settings_openai_api_key = QtWidgets.QLineEdit(parent=self.wizardPage5) + self.settings_openai_api_key.setObjectName("settings_openai_api_key") + self.formLayout_3.setWidget( + 0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_openai_api_key + ) self.label_14 = QtWidgets.QLabel(parent=self.wizardPage5) self.label_14.setObjectName("label_14") self.formLayout_3.setWidget(0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_14) self.label_15 = QtWidgets.QLabel(parent=self.wizardPage5) self.label_15.setObjectName("label_15") self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_15) - self.comboBox = QtWidgets.QComboBox(parent=self.wizardPage5) - self.comboBox.setObjectName("comboBox") - self.comboBox.addItem("") - self.comboBox.addItem("") - self.comboBox.addItem("") - self.comboBox.addItem("") - self.comboBox.addItem("") - self.comboBox.addItem("") - self.comboBox.addItem("") - self.formLayout_3.setWidget(1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.comboBox) + self.settings_openai_model = QtWidgets.QComboBox(parent=self.wizardPage5) + self.settings_openai_model.setObjectName("settings_openai_model") + self.settings_openai_model.addItem("") + self.settings_openai_model.addItem("") + self.settings_openai_model.addItem("") + self.settings_openai_model.addItem("") + self.settings_openai_model.addItem("") + self.settings_openai_model.addItem("") + self.settings_openai_model.addItem("") + self.formLayout_3.setWidget( + 1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.settings_openai_model + ) Wizard.addPage(self.wizardPage5) + self.wizardPage6 = QtWidgets.QWizardPage() + self.wizardPage6.setObjectName("wizardPage6") + self.formLayout_4 = QtWidgets.QFormLayout(self.wizardPage6) + self.formLayout_4.setObjectName("formLayout_4") + self.label_17 = QtWidgets.QLabel(parent=self.wizardPage6) + self.label_17.setObjectName("label_17") + self.formLayout_4.setWidget( + 0, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_17 + ) + self.sam_username = QtWidgets.QLineEdit(parent=self.wizardPage6) + self.sam_username.setObjectName("sam_username") + self.formLayout_4.setWidget( + 0, QtWidgets.QFormLayout.ItemRole.FieldRole, self.sam_username + ) + self.label_18 = QtWidgets.QLabel(parent=self.wizardPage6) + self.label_18.setObjectName("label_18") + self.formLayout_4.setWidget( + 1, QtWidgets.QFormLayout.ItemRole.LabelRole, self.label_18 + ) + self.sam_password = QtWidgets.QLineEdit(parent=self.wizardPage6) + self.sam_password.setObjectName("sam_password") + self.formLayout_4.setWidget( + 1, QtWidgets.QFormLayout.ItemRole.FieldRole, self.sam_password + ) + self.horizontalLayout = QtWidgets.QHBoxLayout() + self.horizontalLayout.setObjectName("horizontalLayout") + self.btn_test = QtWidgets.QPushButton(parent=self.wizardPage6) + self.btn_test.setObjectName("btn_test") + self.horizontalLayout.addWidget(self.btn_test) + self.btn_create = QtWidgets.QPushButton(parent=self.wizardPage6) + self.btn_create.setDefault(True) + self.btn_create.setFlat(False) + self.btn_create.setObjectName("btn_create") + self.horizontalLayout.addWidget(self.btn_create) + self.formLayout_4.setLayout( + 2, QtWidgets.QFormLayout.ItemRole.FieldRole, self.horizontalLayout + ) + spacerItem = QtWidgets.QSpacerItem( + 20, + 40, + QtWidgets.QSizePolicy.Policy.Minimum, + QtWidgets.QSizePolicy.Policy.Expanding, + ) + self.formLayout_4.setItem( + 3, QtWidgets.QFormLayout.ItemRole.FieldRole, spacerItem + ) + Wizard.addPage(self.wizardPage6) self.retranslateUi(Wizard) QtCore.QMetaObject.connectSlotsByName(Wizard) + Wizard.setTabOrder(self.settings_database, self.btn_database) + Wizard.setTabOrder(self.btn_database, self.settings_database_name) + Wizard.setTabOrder(self.settings_database_name, self.settings_temp) + Wizard.setTabOrder(self.settings_temp, self.btn_temp) + Wizard.setTabOrder(self.btn_temp, self.settings_mail_smtp_server) + Wizard.setTabOrder(self.settings_mail_smtp_server, self.settings_mail_smtp_port) + Wizard.setTabOrder(self.settings_mail_smtp_port, self.settings_mail_address) + Wizard.setTabOrder(self.settings_mail_address, self.settings_mail_user_name) + Wizard.setTabOrder(self.settings_mail_user_name, self.settings_mail_password) + Wizard.setTabOrder(self.settings_mail_password, self.settings_mail_signature) + Wizard.setTabOrder(self.settings_mail_signature, self.settings_mail_printer) + Wizard.setTabOrder(self.settings_mail_printer, self.settings_mail_use_user_name) + Wizard.setTabOrder( + self.settings_mail_use_user_name, self.settings_zotero_api_key + ) + Wizard.setTabOrder( + self.settings_zotero_api_key, self.settings_zotero_library_id + ) + Wizard.setTabOrder( + self.settings_zotero_library_id, self.settings_zotero_library_type + ) + Wizard.setTabOrder( + self.settings_zotero_library_type, self.settings_openai_api_key + ) + Wizard.setTabOrder(self.settings_openai_api_key, self.settings_openai_model) def retranslateUi(self, Wizard): _translate = QtCore.QCoreApplication.translate Wizard.setWindowTitle(_translate("Wizard", "Wizard")) self.wizardPage1.setTitle(_translate("Wizard", "Willkommen")) - self.textEdit.setHtml(_translate("Wizard", "\n" -"\n" -"

Es wurde erkannt, dass der SemesterApparatsManager (SAM) zum ersten Mal gestartet wurde. In den Folgenden Seiten werden die grundlegenden Einstellungen festgelegt, anschließend wird SAM geöffnet. Folgende Einstellungen werden über diesen Wizard festgelegt:

\n" -"


\n" -"

- Datenbank

\n" -"

- eMail

\n" -"

- Zotero Integration

\n" -"

- KI Integration

\n" -"


")) + self.textEdit.setHtml( + _translate( + "Wizard", + '\n' + '\n" + '

Es wurde erkannt, dass der SemesterApparatsManager (SAM) zum ersten Mal gestartet wurde. In den Folgenden Seiten werden die grundlegenden Einstellungen festgelegt, anschließend wird SAM geöffnet. Folgende Einstellungen werden über diesen Wizard festgelegt:

\n' + '


\n' + '

- Datenbank

\n' + '

- eMail

\n' + '

- Zotero Integration

\n' + '

- KI Integration

\n' + '

Anschließend kann ein Nutzeraccount für SAM erstellt werden

', + ) + ) self.wizardPage2.setTitle(_translate("Wizard", "Datenbank")) - self.wizardPage2.setSubTitle(_translate("Wizard", "Hier werden die Einstellungen für die Datenbank und temporären Dateien festgelegt. Über den [...] Knopf können die Datenbank und der Speicherort für die temporären Daten festgelegt werden")) - self.label.setText(_translate("Wizard", "Datenbank")) - self.settings_database.setPlaceholderText(_translate("Wizard", "semesterapparate.db")) - self.btn_database.setText(_translate("Wizard", "...")) - self.label_2.setText(_translate("Wizard", "Temporäre Daten")) + self.wizardPage2.setSubTitle( + _translate( + "Wizard", + "Hier werden die Einstellungen für die Datenbank und temporären Dateien festgelegt. Über den [...] Knopf können die Datenbank und der Speicherort für die temporären Daten festgelegt werden", + ) + ) self.settings_temp.setPlaceholderText(_translate("Wizard", "C:\\Users\\[Nutzer]\\AppData\\Local\\SAM\\SemesterApparatsManager\\Cache")) + self.label.setText(_translate("Wizard", "Datenbankpfad")) + self.label_2.setText(_translate("Wizard", "Temporäre Daten")) + self.btn_database.setText(_translate("Wizard", "...")) self.btn_temp.setText(_translate("Wizard", "...")) + self.label_16.setText(_translate("Wizard", "Datenbankname")) + self.settings_database_name.setPlaceholderText( + _translate("Wizard", "semesterapparate.db") + ) self.wizardPage3.setTitle(_translate("Wizard", "Mail")) self.wizardPage3.setSubTitle(_translate("Wizard", "Hier werden die Einstellungen für die Mailverbindung eingegeben")) self.label_3.setText(_translate("Wizard", "SMTP Server")) + self.settings_mail_password.setToolTip( + _translate("Wizard", "Rechtsklick, um passwort anzuzeigen") + ) self.label_4.setText(_translate("Wizard", "Nutzername")) self.label_5.setText(_translate("Wizard", "SMTP Port")) self.label_6.setText(_translate("Wizard", "Passwort")) @@ -205,11 +333,19 @@ class Ui_Wizard(object): self.wizardPage5.setSubTitle(_translate("Wizard", "Hier werden die Einstellungen für die KI Integration eingestellt.")) self.label_14.setText(_translate("Wizard", "API Key")) self.label_15.setText(_translate("Wizard", "ChatGPT Modell")) - self.comboBox.setCurrentText(_translate("Wizard", "gpt-4o-mini")) - self.comboBox.setItemText(0, _translate("Wizard", "gpt3.5-turbo")) - self.comboBox.setItemText(1, _translate("Wizard", "gpt-4")) - self.comboBox.setItemText(2, _translate("Wizard", "gpt-4o")) - self.comboBox.setItemText(3, _translate("Wizard", "gpt-4o-mini")) - self.comboBox.setItemText(4, _translate("Wizard", "gpt-4.1")) - self.comboBox.setItemText(5, _translate("Wizard", "gpt-4.1-mini")) - self.comboBox.setItemText(6, _translate("Wizard", "gpt-4.1-nano")) + self.settings_openai_model.setCurrentText(_translate("Wizard", "gpt3.5-turbo")) + self.settings_openai_model.setItemText(0, _translate("Wizard", "gpt3.5-turbo")) + self.settings_openai_model.setItemText(1, _translate("Wizard", "gpt-4")) + self.settings_openai_model.setItemText(2, _translate("Wizard", "gpt-4o")) + self.settings_openai_model.setItemText(3, _translate("Wizard", "gpt-4o-mini")) + self.settings_openai_model.setItemText(4, _translate("Wizard", "gpt-4.1")) + self.settings_openai_model.setItemText(5, _translate("Wizard", "gpt-4.1-mini")) + self.settings_openai_model.setItemText(6, _translate("Wizard", "gpt-4.1-nano")) + self.wizardPage6.setTitle(_translate("Wizard", "SAM Nutzer")) + self.wizardPage6.setSubTitle( + _translate("Wizard", "Hier kann ein Nutzer für SAM erstellt werden") + ) + self.label_17.setText(_translate("Wizard", "Nutzername")) + self.label_18.setText(_translate("Wizard", "Passwort")) + self.btn_test.setText(_translate("Wizard", "Prüfen")) + self.btn_create.setText(_translate("Wizard", "Anlegen")) diff --git a/src/utils/Ui_docs.py b/src/utils/Ui_docs.py index b849a8d..e4b744c 100644 --- a/src/utils/Ui_docs.py +++ b/src/utils/Ui_docs.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\utils\docs.ui' # -# Created by: PyQt6 UI code generator 6.7.1 +# Created by: PySide6 UI code generator 6.7.1 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets class Ui_Dialog(object): diff --git a/src/utils/docs_ui.py b/src/utils/docs_ui.py index 3e11e63..1f0523a 100644 --- a/src/utils/docs_ui.py +++ b/src/utils/docs_ui.py @@ -1,12 +1,12 @@ # Form implementation generated from reading ui file 'c:\Users\aky547\GitHub\SemesterapparatsManager\src\utils\docs.ui' # -# Created by: PyQt6 UI code generator 6.8.0 +# Created by: PySide6 UI code generator 6.8.0 # # WARNING: Any manual changes made to this file will be lost when pyuic6 is # run again. Do not edit this file unless you know what you are doing. -from PyQt6 import QtCore, QtGui, QtWidgets +from PySide6 import QtCore, QtGui, QtWidgets class Ui_Dialog(object): diff --git a/src/utils/documentationview.py b/src/utils/documentationview.py index 2ad2283..ca180f2 100644 --- a/src/utils/documentationview.py +++ b/src/utils/documentationview.py @@ -1,8 +1,8 @@ import os import sys -# from PyQt6 import Webview -from PyQt6.QtWidgets import QApplication, QMainWindow, QTabWidget +# from PySide6 import Webview +from PySide6.QtWidgets import QApplication, QMainWindow, QTabWidget documentation_path = "docs" diff --git a/src/utils/icon.py b/src/utils/icon.py index f281a27..b659d75 100644 --- a/src/utils/icon.py +++ b/src/utils/icon.py @@ -1,5 +1,5 @@ import darkdetect -from PyQt6 import QtGui +from PySide6 import QtGui import re from src import settings diff --git a/uv.lock b/uv.lock index ee8e501..a58dca0 100644 --- a/uv.lock +++ b/uv.lock @@ -118,7 +118,7 @@ wheels = [ [[package]] name = "bump-my-version" -version = "1.1.2" +version = "1.2.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, @@ -131,9 +131,9 @@ dependencies = [ { name = "tomlkit" }, { name = "wcmatch" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/13/0a/544e8eb6d46baa99bf16d180b4ddb4509631fa8476e686c8e6c47681afb4/bump_my_version-1.1.2.tar.gz", hash = "sha256:0122845a78502b5a5a635ca17c1efb3e1ec05e77d72d13b2314186b9806882fb", size = 1120309 } +sdist = { url = "https://files.pythonhosted.org/packages/a4/b6/c45043a404e0878e3abeff1c25c87df78777c33760e7459901e0504f003a/bump_my_version-1.2.0.tar.gz", hash = "sha256:5120d798aaf26468a37ca0f127992dc036688b8e5e106adc8870b13c2a2df22d", size = 1136170 } wheels = [ - { url = "https://files.pythonhosted.org/packages/dc/a9/026894e86ce2838d029af1344c71fd57560d1b6e2ce6513c340cbf8e00cb/bump_my_version-1.1.2-py3-none-any.whl", hash = "sha256:71a2a8c3940c87749c4cc404b2ada2fafbeab4e478e0ef54537686905ae58e0d", size = 59495 }, + { url = "https://files.pythonhosted.org/packages/1f/e4/715484178fa80279cd67fd06c6641a4611c5ea580acdc221ad715b39d85c/bump_my_version-1.2.0-py3-none-any.whl", hash = "sha256:201e6b103ff0f2b240c9d0a6eb83db382840b1f78eb78f6d77726bed39a326d8", size = 59560 }, ] [[package]] @@ -224,14 +224,14 @@ wheels = [ [[package]] name = "click" -version = "8.1.8" +version = "8.2.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "colorama", marker = "platform_system == 'Windows'" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/b9/2e/0090cbf739cee7d23781ad4b89a9894a41538e4fcf4c31dcdd705b78eb8b/click-8.1.8.tar.gz", hash = "sha256:ed53c9d8990d83c2a27deae68e4ee337473f6330c040a31d4225c9574d16096a", size = 226593 } +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7e/d4/7ebdbd03970677812aac39c869717059dbb71a4cfc033ca6e5221787892c/click-8.1.8-py3-none-any.whl", hash = "sha256:63c132bbbed01578a06712a2d1f497bb62d9c1c0d329b7903a866228027263b2", size = 98188 }, + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215 }, ] [[package]] @@ -245,11 +245,11 @@ wheels = [ [[package]] name = "comtypes" -version = "1.4.10" +version = "1.4.11" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/07/7e/34f4941ab5ec7d1d4c496282b1944a5119fc52641c5770a78e6fa0ca32ec/comtypes-1.4.10.zip", hash = "sha256:b92372e76299836177b41aeda784225e18c5071c6bacdab88a7433224a4dc912", size = 267293 } +sdist = { url = "https://files.pythonhosted.org/packages/3c/b9/4431119a640f568190499fd76fac4b4ccb5695659c4b3aac570329c150ea/comtypes-1.4.11.zip", hash = "sha256:0a4259370ec48b685fe4483b0944ba1df0aa45163922073fe9b7df1d187db09e", size = 272448 } wheels = [ - { url = "https://files.pythonhosted.org/packages/4c/44/72009bb0a0d8286f6408c9cb70552350e21e9c280bfa1ef30784b30dfc0f/comtypes-1.4.10-py3-none-any.whl", hash = "sha256:e078555721ee7ab40648a3363697d420b845b323e5944b55846e96aff97d2534", size = 241481 }, + { url = "https://files.pythonhosted.org/packages/f1/f4/7b7fdbb613992013c4518a0bf8fee2915f79ec07bcfa6180569bca7fa8ef/comtypes-1.4.11-py3-none-any.whl", hash = "sha256:1760d5059ca7ca1d61b574c998378d879c271a86c41f88926619ea97497592bb", size = 246365 }, ] [[package]] @@ -319,36 +319,35 @@ wheels = [ [[package]] name = "greenlet" -version = "3.2.1" +version = "3.2.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/3f/74/907bb43af91782e0366b0960af62a8ce1f9398e4291cac7beaeffbee0c04/greenlet-3.2.1.tar.gz", hash = "sha256:9f4dd4b4946b14bb3bf038f81e1d2e535b7d94f1b2a59fdba1293cd9c1a0a4d7", size = 184475 } +sdist = { url = "https://files.pythonhosted.org/packages/c9/92/bb85bd6e80148a4d2e0c59f7c0c2891029f8fd510183afc7d8d2feeed9b6/greenlet-3.2.3.tar.gz", hash = "sha256:8b0dd8ae4c0d6f5e54ee55ba935eeb3d735a9b58a8a1e5b5cbab64e01a39f365", size = 185752 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/d1/e4777b188a04726f6cf69047830d37365b9191017f54caf2f7af336a6f18/greenlet-3.2.1-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:0ba2811509a30e5f943be048895a983a8daf0b9aa0ac0ead526dfb5d987d80ea", size = 270381 }, - { url = "https://files.pythonhosted.org/packages/59/e7/b5b738f5679247ddfcf2179c38945519668dced60c3164c20d55c1a7bb4a/greenlet-3.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4245246e72352b150a1588d43ddc8ab5e306bef924c26571aafafa5d1aaae4e8", size = 637195 }, - { url = "https://files.pythonhosted.org/packages/6c/9f/57968c88a5f6bc371364baf983a2e5549cca8f503bfef591b6dd81332cbc/greenlet-3.2.1-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:7abc0545d8e880779f0c7ce665a1afc3f72f0ca0d5815e2b006cafc4c1cc5840", size = 651381 }, - { url = "https://files.pythonhosted.org/packages/40/81/1533c9a458e9f2ebccb3ae22f1463b2093b0eb448a88aac36182f1c2cd3d/greenlet-3.2.1-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:6dcc6d604a6575c6225ac0da39df9335cc0c6ac50725063fa90f104f3dbdb2c9", size = 646110 }, - { url = "https://files.pythonhosted.org/packages/06/66/25f7e4b1468ebe4a520757f2e41c2a36a2f49a12e963431b82e9f98df2a0/greenlet-3.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2273586879affca2d1f414709bb1f61f0770adcabf9eda8ef48fd90b36f15d12", size = 648070 }, - { url = "https://files.pythonhosted.org/packages/d7/4c/49d366565c4c4d29e6f666287b9e2f471a66c3a3d8d5066692e347f09e27/greenlet-3.2.1-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ff38c869ed30fff07f1452d9a204ece1ec6d3c0870e0ba6e478ce7c1515acf22", size = 603816 }, - { url = "https://files.pythonhosted.org/packages/04/15/1612bb61506f44b6b8b6bebb6488702b1fe1432547e95dda57874303a1f5/greenlet-3.2.1-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:e934591a7a4084fa10ee5ef50eb9d2ac8c4075d5c9cf91128116b5dca49d43b1", size = 1119572 }, - { url = "https://files.pythonhosted.org/packages/cc/2f/002b99dacd1610e825876f5cbbe7f86740aa2a6b76816e5eca41c8457e85/greenlet-3.2.1-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:063bcf7f8ee28eb91e7f7a8148c65a43b73fbdc0064ab693e024b5a940070145", size = 1147442 }, - { url = "https://files.pythonhosted.org/packages/c0/ba/82a2c3b9868644ee6011da742156247070f30e952f4d33f33857458450f2/greenlet-3.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7132e024ebeeeabbe661cf8878aac5d2e643975c4feae833142592ec2f03263d", size = 296207 }, - { url = "https://files.pythonhosted.org/packages/77/2a/581b3808afec55b2db838742527c40b4ce68b9b64feedff0fd0123f4b19a/greenlet-3.2.1-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:e1967882f0c42eaf42282a87579685c8673c51153b845fde1ee81be720ae27ac", size = 269119 }, - { url = "https://files.pythonhosted.org/packages/b0/f3/1c4e27fbdc84e13f05afc2baf605e704668ffa26e73a43eca93e1120813e/greenlet-3.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e77ae69032a95640a5fe8c857ec7bee569a0997e809570f4c92048691ce4b437", size = 637314 }, - { url = "https://files.pythonhosted.org/packages/fc/1a/9fc43cb0044f425f7252da9847893b6de4e3b20c0a748bce7ab3f063d5bc/greenlet-3.2.1-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3227c6ec1149d4520bc99edac3b9bc8358d0034825f3ca7572165cb502d8f29a", size = 651421 }, - { url = "https://files.pythonhosted.org/packages/8a/65/d47c03cdc62c6680206b7420c4a98363ee997e87a5e9da1e83bd7eeb57a8/greenlet-3.2.1-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:0ddda0197c5b46eedb5628d33dad034c455ae77708c7bf192686e760e26d6a0c", size = 645789 }, - { url = "https://files.pythonhosted.org/packages/2f/40/0faf8bee1b106c241780f377b9951dd4564ef0972de1942ef74687aa6bba/greenlet-3.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:de62b542e5dcf0b6116c310dec17b82bb06ef2ceb696156ff7bf74a7a498d982", size = 648262 }, - { url = "https://files.pythonhosted.org/packages/e0/a8/73305f713183c2cb08f3ddd32eaa20a6854ba9c37061d682192db9b021c3/greenlet-3.2.1-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c07a0c01010df42f1f058b3973decc69c4d82e036a951c3deaf89ab114054c07", size = 606770 }, - { url = "https://files.pythonhosted.org/packages/c3/05/7d726e1fb7f8a6ac55ff212a54238a36c57db83446523c763e20cd30b837/greenlet-3.2.1-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:2530bfb0abcd451ea81068e6d0a1aac6dabf3f4c23c8bd8e2a8f579c2dd60d95", size = 1117960 }, - { url = "https://files.pythonhosted.org/packages/bf/9f/2b6cb1bd9f1537e7b08c08705c4a1d7bd4f64489c67d102225c4fd262bda/greenlet-3.2.1-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:1c472adfca310f849903295c351d297559462067f618944ce2650a1878b84123", size = 1145500 }, - { url = "https://files.pythonhosted.org/packages/e4/f6/339c6e707062319546598eb9827d3ca8942a3eccc610d4a54c1da7b62527/greenlet-3.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:24a496479bc8bd01c39aa6516a43c717b4cee7196573c47b1f8e1011f7c12495", size = 295994 }, - { url = "https://files.pythonhosted.org/packages/f1/72/2a251d74a596af7bb1717e891ad4275a3fd5ac06152319d7ad8c77f876af/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:175d583f7d5ee57845591fc30d852b75b144eb44b05f38b67966ed6df05c8526", size = 629889 }, - { url = "https://files.pythonhosted.org/packages/29/2e/d7ed8bf97641bf704b6a43907c0e082cdf44d5bc026eb8e1b79283e7a719/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:3ecc9d33ca9428e4536ea53e79d781792cee114d2fa2695b173092bdbd8cd6d5", size = 635261 }, - { url = "https://files.pythonhosted.org/packages/1e/75/802aa27848a6fcb5e566f69c64534f572e310f0f12d41e9201a81e741551/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:3f56382ac4df3860ebed8ed838f268f03ddf4e459b954415534130062b16bc32", size = 632523 }, - { url = "https://files.pythonhosted.org/packages/56/09/f7c1c3bab9b4c589ad356503dd71be00935e9c4db4db516ed88fc80f1187/greenlet-3.2.1-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc45a7189c91c0f89aaf9d69da428ce8301b0fd66c914a499199cfb0c28420fc", size = 628816 }, - { url = "https://files.pythonhosted.org/packages/79/e0/1bb90d30b5450eac2dffeaac6b692857c4bd642c21883b79faa8fa056cf2/greenlet-3.2.1-cp313-cp313t-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:51a2f49da08cff79ee42eb22f1658a2aed60c72792f0a0a95f5f0ca6d101b1fb", size = 593687 }, - { url = "https://files.pythonhosted.org/packages/c5/b5/adbe03c8b4c178add20cc716021183ae6b0326d56ba8793d7828c94286f6/greenlet-3.2.1-cp313-cp313t-musllinux_1_1_aarch64.whl", hash = "sha256:0c68bbc639359493420282d2f34fa114e992a8724481d700da0b10d10a7611b8", size = 1105754 }, - { url = "https://files.pythonhosted.org/packages/39/93/84582d7ef38dec009543ccadec6ab41079a6cbc2b8c0566bcd07bf1aaf6c/greenlet-3.2.1-cp313-cp313t-musllinux_1_1_x86_64.whl", hash = "sha256:e775176b5c203a1fa4be19f91da00fd3bff536868b77b237da3f4daa5971ae5d", size = 1125160 }, - { url = "https://files.pythonhosted.org/packages/01/e6/f9d759788518a6248684e3afeb3691f3ab0276d769b6217a1533362298c8/greenlet-3.2.1-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:d6668caf15f181c1b82fb6406f3911696975cc4c37d782e19cb7ba499e556189", size = 269897 }, + { url = "https://files.pythonhosted.org/packages/f3/94/ad0d435f7c48debe960c53b8f60fb41c2026b1d0fa4a99a1cb17c3461e09/greenlet-3.2.3-cp312-cp312-macosx_11_0_universal2.whl", hash = "sha256:25ad29caed5783d4bd7a85c9251c651696164622494c00802a139c00d639242d", size = 271992 }, + { url = "https://files.pythonhosted.org/packages/93/5d/7c27cf4d003d6e77749d299c7c8f5fd50b4f251647b5c2e97e1f20da0ab5/greenlet-3.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:88cd97bf37fe24a6710ec6a3a7799f3f81d9cd33317dcf565ff9950c83f55e0b", size = 638820 }, + { url = "https://files.pythonhosted.org/packages/c6/7e/807e1e9be07a125bb4c169144937910bf59b9d2f6d931578e57f0bce0ae2/greenlet-3.2.3-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:baeedccca94880d2f5666b4fa16fc20ef50ba1ee353ee2d7092b383a243b0b0d", size = 653046 }, + { url = "https://files.pythonhosted.org/packages/9d/ab/158c1a4ea1068bdbc78dba5a3de57e4c7aeb4e7fa034320ea94c688bfb61/greenlet-3.2.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:be52af4b6292baecfa0f397f3edb3c6092ce071b499dd6fe292c9ac9f2c8f264", size = 647701 }, + { url = "https://files.pythonhosted.org/packages/cc/0d/93729068259b550d6a0288da4ff72b86ed05626eaf1eb7c0d3466a2571de/greenlet-3.2.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:0cc73378150b8b78b0c9fe2ce56e166695e67478550769536a6742dca3651688", size = 649747 }, + { url = "https://files.pythonhosted.org/packages/f6/f6/c82ac1851c60851302d8581680573245c8fc300253fc1ff741ae74a6c24d/greenlet-3.2.3-cp312-cp312-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:706d016a03e78df129f68c4c9b4c4f963f7d73534e48a24f5f5a7101ed13dbbb", size = 605461 }, + { url = "https://files.pythonhosted.org/packages/98/82/d022cf25ca39cf1200650fc58c52af32c90f80479c25d1cbf57980ec3065/greenlet-3.2.3-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:419e60f80709510c343c57b4bb5a339d8767bf9aef9b8ce43f4f143240f88b7c", size = 1121190 }, + { url = "https://files.pythonhosted.org/packages/f5/e1/25297f70717abe8104c20ecf7af0a5b82d2f5a980eb1ac79f65654799f9f/greenlet-3.2.3-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:93d48533fade144203816783373f27a97e4193177ebaaf0fc396db19e5d61163", size = 1149055 }, + { url = "https://files.pythonhosted.org/packages/1f/8f/8f9e56c5e82eb2c26e8cde787962e66494312dc8cb261c460e1f3a9c88bc/greenlet-3.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:7454d37c740bb27bdeddfc3f358f26956a07d5220818ceb467a483197d84f849", size = 297817 }, + { url = "https://files.pythonhosted.org/packages/b1/cf/f5c0b23309070ae93de75c90d29300751a5aacefc0a3ed1b1d8edb28f08b/greenlet-3.2.3-cp313-cp313-macosx_11_0_universal2.whl", hash = "sha256:500b8689aa9dd1ab26872a34084503aeddefcb438e2e7317b89b11eaea1901ad", size = 270732 }, + { url = "https://files.pythonhosted.org/packages/48/ae/91a957ba60482d3fecf9be49bc3948f341d706b52ddb9d83a70d42abd498/greenlet-3.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:a07d3472c2a93117af3b0136f246b2833fdc0b542d4a9799ae5f41c28323faef", size = 639033 }, + { url = "https://files.pythonhosted.org/packages/6f/df/20ffa66dd5a7a7beffa6451bdb7400d66251374ab40b99981478c69a67a8/greenlet-3.2.3-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:8704b3768d2f51150626962f4b9a9e4a17d2e37c8a8d9867bbd9fa4eb938d3b3", size = 652999 }, + { url = "https://files.pythonhosted.org/packages/51/b4/ebb2c8cb41e521f1d72bf0465f2f9a2fd803f674a88db228887e6847077e/greenlet-3.2.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:5035d77a27b7c62db6cf41cf786cfe2242644a7a337a0e155c80960598baab95", size = 647368 }, + { url = "https://files.pythonhosted.org/packages/8e/6a/1e1b5aa10dced4ae876a322155705257748108b7fd2e4fae3f2a091fe81a/greenlet-3.2.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:2d8aa5423cd4a396792f6d4580f88bdc6efcb9205891c9d40d20f6e670992efb", size = 650037 }, + { url = "https://files.pythonhosted.org/packages/26/f2/ad51331a157c7015c675702e2d5230c243695c788f8f75feba1af32b3617/greenlet-3.2.3-cp313-cp313-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:2c724620a101f8170065d7dded3f962a2aea7a7dae133a009cada42847e04a7b", size = 608402 }, + { url = "https://files.pythonhosted.org/packages/26/bc/862bd2083e6b3aff23300900a956f4ea9a4059de337f5c8734346b9b34fc/greenlet-3.2.3-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:873abe55f134c48e1f2a6f53f7d1419192a3d1a4e873bace00499a4e45ea6af0", size = 1119577 }, + { url = "https://files.pythonhosted.org/packages/86/94/1fc0cc068cfde885170e01de40a619b00eaa8f2916bf3541744730ffb4c3/greenlet-3.2.3-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:024571bbce5f2c1cfff08bf3fbaa43bbc7444f580ae13b0099e95d0e6e67ed36", size = 1147121 }, + { url = "https://files.pythonhosted.org/packages/27/1a/199f9587e8cb08a0658f9c30f3799244307614148ffe8b1e3aa22f324dea/greenlet-3.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:5195fb1e75e592dd04ce79881c8a22becdfa3e6f500e7feb059b1e6fdd54d3e3", size = 297603 }, + { url = "https://files.pythonhosted.org/packages/d8/ca/accd7aa5280eb92b70ed9e8f7fd79dc50a2c21d8c73b9a0856f5b564e222/greenlet-3.2.3-cp314-cp314-macosx_11_0_universal2.whl", hash = "sha256:3d04332dddb10b4a211b68111dabaee2e1a073663d117dc10247b5b1642bac86", size = 271479 }, + { url = "https://files.pythonhosted.org/packages/55/71/01ed9895d9eb49223280ecc98a557585edfa56b3d0e965b9fa9f7f06b6d9/greenlet-3.2.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:8186162dffde068a465deab08fc72c767196895c39db26ab1c17c0b77a6d8b97", size = 683952 }, + { url = "https://files.pythonhosted.org/packages/ea/61/638c4bdf460c3c678a0a1ef4c200f347dff80719597e53b5edb2fb27ab54/greenlet-3.2.3-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f4bfbaa6096b1b7a200024784217defedf46a07c2eee1a498e94a1b5f8ec5728", size = 696917 }, + { url = "https://files.pythonhosted.org/packages/22/cc/0bd1a7eb759d1f3e3cc2d1bc0f0b487ad3cc9f34d74da4b80f226fde4ec3/greenlet-3.2.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:ed6cfa9200484d234d8394c70f5492f144b20d4533f69262d530a1a082f6ee9a", size = 692443 }, + { url = "https://files.pythonhosted.org/packages/67/10/b2a4b63d3f08362662e89c103f7fe28894a51ae0bc890fabf37d1d780e52/greenlet-3.2.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:02b0df6f63cd15012bed5401b47829cfd2e97052dc89da3cfaf2c779124eb892", size = 692995 }, + { url = "https://files.pythonhosted.org/packages/5a/c6/ad82f148a4e3ce9564056453a71529732baf5448ad53fc323e37efe34f66/greenlet-3.2.3-cp314-cp314-manylinux_2_24_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:86c2d68e87107c1792e2e8d5399acec2487a4e993ab76c792408e59394d52141", size = 655320 }, + { url = "https://files.pythonhosted.org/packages/5c/4f/aab73ecaa6b3086a4c89863d94cf26fa84cbff63f52ce9bc4342b3087a06/greenlet-3.2.3-cp314-cp314-win_amd64.whl", hash = "sha256:8c47aae8fbbfcf82cc13327ae802ba13c9c36753b67e760023fd116bc124a62a", size = 301236 }, ] [[package]] @@ -644,7 +643,7 @@ wheels = [ [[package]] name = "mkdocs-material" -version = "9.6.12" +version = "9.6.14" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "babel" }, @@ -659,9 +658,9 @@ dependencies = [ { name = "pymdown-extensions" }, { name = "requests" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/2d/ef/25fc10dbbb8faeeeb10ed7734d84a347cd2ec5d7200733f11c5553c02608/mkdocs_material-9.6.12.tar.gz", hash = "sha256:add6a6337b29f9ea7912cb1efc661de2c369060b040eb5119855d794ea85b473", size = 3951532 } +sdist = { url = "https://files.pythonhosted.org/packages/b3/fa/0101de32af88f87cf5cc23ad5f2e2030d00995f74e616306513431b8ab4b/mkdocs_material-9.6.14.tar.gz", hash = "sha256:39d795e90dce6b531387c255bd07e866e027828b7346d3eba5ac3de265053754", size = 3951707 } wheels = [ - { url = "https://files.pythonhosted.org/packages/09/00/592940f4d150327a4f455171b2c9d4c3be7779a88e18b0a086183fcd8f06/mkdocs_material-9.6.12-py3-none-any.whl", hash = "sha256:92b4fbdc329e4febc267ca6e2c51e8501fa97b2225c5f4deb4d4e43550f8e61e", size = 8703654 }, + { url = "https://files.pythonhosted.org/packages/3a/a1/7fdb959ad592e013c01558822fd3c22931a95a0f08cf0a7c36da13a5b2b5/mkdocs_material-9.6.14-py3-none-any.whl", hash = "sha256:3b9cee6d3688551bf7a8e8f41afda97a3c39a12f0325436d76c86706114b721b", size = 8703767 }, ] [[package]] @@ -684,50 +683,53 @@ wheels = [ [[package]] name = "nuitka" -version = "2.7.1" +version = "2.7.7" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "ordered-set" }, { name = "zstandard" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/18/f7/f1d87901ab90be0bc1dd96d9f899a07f626f5f2bebe3b09e475fdc4b7fdb/Nuitka-2.7.1.tar.gz", hash = "sha256:1e7ff9208f8d8262302a6eee05d299650f30813dbecb4501d365a712c3169209", size = 3882402 } +sdist = { url = "https://files.pythonhosted.org/packages/0a/3f/3294699ad8ebca820127b5606c77e52bb1bd5d7eea97e9dd5a6228884e80/Nuitka-2.7.7.tar.gz", hash = "sha256:327e697e1a3eea2608ca7dce228c2d7686d65e38af9907c98646695ba5df9edf", size = 3886105 } [[package]] name = "numpy" -version = "2.2.5" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dc/b2/ce4b867d8cd9c0ee84938ae1e6a6f7926ebf928c9090d036fc3c6a04f946/numpy-2.2.5.tar.gz", hash = "sha256:a9c0d994680cd991b1cb772e8b297340085466a6fe964bc9d4e80f5e2f43c291", size = 20273920 } +sdist = { url = "https://files.pythonhosted.org/packages/f3/db/8e12381333aea300890829a0a36bfa738cac95475d88982d538725143fd9/numpy-2.3.0.tar.gz", hash = "sha256:581f87f9e9e9db2cba2141400e160e9dd644ee248788d6f90636eeb8fd9260a6", size = 20382813 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/f7/1fd4ff108cd9d7ef929b8882692e23665dc9c23feecafbb9c6b80f4ec583/numpy-2.2.5-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:ee461a4eaab4f165b68780a6a1af95fb23a29932be7569b9fab666c407969051", size = 20948633 }, - { url = "https://files.pythonhosted.org/packages/12/03/d443c278348371b20d830af155ff2079acad6a9e60279fac2b41dbbb73d8/numpy-2.2.5-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:ec31367fd6a255dc8de4772bd1658c3e926d8e860a0b6e922b615e532d320ddc", size = 14176123 }, - { url = "https://files.pythonhosted.org/packages/2b/0b/5ca264641d0e7b14393313304da48b225d15d471250376f3fbdb1a2be603/numpy-2.2.5-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:47834cde750d3c9f4e52c6ca28a7361859fcaf52695c7dc3cc1a720b8922683e", size = 5163817 }, - { url = "https://files.pythonhosted.org/packages/04/b3/d522672b9e3d28e26e1613de7675b441bbd1eaca75db95680635dd158c67/numpy-2.2.5-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:2c1a1c6ccce4022383583a6ded7bbcda22fc635eb4eb1e0a053336425ed36dfa", size = 6698066 }, - { url = "https://files.pythonhosted.org/packages/a0/93/0f7a75c1ff02d4b76df35079676b3b2719fcdfb39abdf44c8b33f43ef37d/numpy-2.2.5-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9d75f338f5f79ee23548b03d801d28a505198297534f62416391857ea0479571", size = 14087277 }, - { url = "https://files.pythonhosted.org/packages/b0/d9/7c338b923c53d431bc837b5b787052fef9ae68a56fe91e325aac0d48226e/numpy-2.2.5-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3a801fef99668f309b88640e28d261991bfad9617c27beda4a3aec4f217ea073", size = 16135742 }, - { url = "https://files.pythonhosted.org/packages/2d/10/4dec9184a5d74ba9867c6f7d1e9f2e0fb5fe96ff2bf50bb6f342d64f2003/numpy-2.2.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:abe38cd8381245a7f49967a6010e77dbf3680bd3627c0fe4362dd693b404c7f8", size = 15581825 }, - { url = "https://files.pythonhosted.org/packages/80/1f/2b6fcd636e848053f5b57712a7d1880b1565eec35a637fdfd0a30d5e738d/numpy-2.2.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:5a0ac90e46fdb5649ab6369d1ab6104bfe5854ab19b645bf5cda0127a13034ae", size = 17899600 }, - { url = "https://files.pythonhosted.org/packages/ec/87/36801f4dc2623d76a0a3835975524a84bd2b18fe0f8835d45c8eae2f9ff2/numpy-2.2.5-cp312-cp312-win32.whl", hash = "sha256:0cd48122a6b7eab8f06404805b1bd5856200e3ed6f8a1b9a194f9d9054631beb", size = 6312626 }, - { url = "https://files.pythonhosted.org/packages/8b/09/4ffb4d6cfe7ca6707336187951992bd8a8b9142cf345d87ab858d2d7636a/numpy-2.2.5-cp312-cp312-win_amd64.whl", hash = "sha256:ced69262a8278547e63409b2653b372bf4baff0870c57efa76c5703fd6543282", size = 12645715 }, - { url = "https://files.pythonhosted.org/packages/e2/a0/0aa7f0f4509a2e07bd7a509042967c2fab635690d4f48c6c7b3afd4f448c/numpy-2.2.5-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:059b51b658f4414fff78c6d7b1b4e18283ab5fa56d270ff212d5ba0c561846f4", size = 20935102 }, - { url = "https://files.pythonhosted.org/packages/7e/e4/a6a9f4537542912ec513185396fce52cdd45bdcf3e9d921ab02a93ca5aa9/numpy-2.2.5-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:47f9ed103af0bc63182609044b0490747e03bd20a67e391192dde119bf43d52f", size = 14191709 }, - { url = "https://files.pythonhosted.org/packages/be/65/72f3186b6050bbfe9c43cb81f9df59ae63603491d36179cf7a7c8d216758/numpy-2.2.5-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:261a1ef047751bb02f29dfe337230b5882b54521ca121fc7f62668133cb119c9", size = 5149173 }, - { url = "https://files.pythonhosted.org/packages/e5/e9/83e7a9432378dde5802651307ae5e9ea07bb72b416728202218cd4da2801/numpy-2.2.5-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4520caa3807c1ceb005d125a75e715567806fed67e315cea619d5ec6e75a4191", size = 6684502 }, - { url = "https://files.pythonhosted.org/packages/ea/27/b80da6c762394c8ee516b74c1f686fcd16c8f23b14de57ba0cad7349d1d2/numpy-2.2.5-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:3d14b17b9be5f9c9301f43d2e2a4886a33b53f4e6fdf9ca2f4cc60aeeee76372", size = 14084417 }, - { url = "https://files.pythonhosted.org/packages/aa/fc/ebfd32c3e124e6a1043e19c0ab0769818aa69050ce5589b63d05ff185526/numpy-2.2.5-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2ba321813a00e508d5421104464510cc962a6f791aa2fca1c97b1e65027da80d", size = 16133807 }, - { url = "https://files.pythonhosted.org/packages/bf/9b/4cc171a0acbe4666f7775cfd21d4eb6bb1d36d3a0431f48a73e9212d2278/numpy-2.2.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:a4cbdef3ddf777423060c6f81b5694bad2dc9675f110c4b2a60dc0181543fac7", size = 15575611 }, - { url = "https://files.pythonhosted.org/packages/a3/45/40f4135341850df48f8edcf949cf47b523c404b712774f8855a64c96ef29/numpy-2.2.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:54088a5a147ab71a8e7fdfd8c3601972751ded0739c6b696ad9cb0343e21ab73", size = 17895747 }, - { url = "https://files.pythonhosted.org/packages/f8/4c/b32a17a46f0ffbde8cc82df6d3daeaf4f552e346df143e1b188a701a8f09/numpy-2.2.5-cp313-cp313-win32.whl", hash = "sha256:c8b82a55ef86a2d8e81b63da85e55f5537d2157165be1cb2ce7cfa57b6aef38b", size = 6309594 }, - { url = "https://files.pythonhosted.org/packages/13/ae/72e6276feb9ef06787365b05915bfdb057d01fceb4a43cb80978e518d79b/numpy-2.2.5-cp313-cp313-win_amd64.whl", hash = "sha256:d8882a829fd779f0f43998e931c466802a77ca1ee0fe25a3abe50278616b1471", size = 12638356 }, - { url = "https://files.pythonhosted.org/packages/79/56/be8b85a9f2adb688e7ded6324e20149a03541d2b3297c3ffc1a73f46dedb/numpy-2.2.5-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:e8b025c351b9f0e8b5436cf28a07fa4ac0204d67b38f01433ac7f9b870fa38c6", size = 20963778 }, - { url = "https://files.pythonhosted.org/packages/ff/77/19c5e62d55bff507a18c3cdff82e94fe174957bad25860a991cac719d3ab/numpy-2.2.5-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:8dfa94b6a4374e7851bbb6f35e6ded2120b752b063e6acdd3157e4d2bb922eba", size = 14207279 }, - { url = "https://files.pythonhosted.org/packages/75/22/aa11f22dc11ff4ffe4e849d9b63bbe8d4ac6d5fae85ddaa67dfe43be3e76/numpy-2.2.5-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:97c8425d4e26437e65e1d189d22dff4a079b747ff9c2788057bfb8114ce1e133", size = 5199247 }, - { url = "https://files.pythonhosted.org/packages/4f/6c/12d5e760fc62c08eded0394f62039f5a9857f758312bf01632a81d841459/numpy-2.2.5-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:352d330048c055ea6db701130abc48a21bec690a8d38f8284e00fab256dc1376", size = 6711087 }, - { url = "https://files.pythonhosted.org/packages/ef/94/ece8280cf4218b2bee5cec9567629e61e51b4be501e5c6840ceb593db945/numpy-2.2.5-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:8b4c0773b6ada798f51f0f8e30c054d32304ccc6e9c5d93d46cb26f3d385ab19", size = 14059964 }, - { url = "https://files.pythonhosted.org/packages/39/41/c5377dac0514aaeec69115830a39d905b1882819c8e65d97fc60e177e19e/numpy-2.2.5-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:55f09e00d4dccd76b179c0f18a44f041e5332fd0e022886ba1c0bbf3ea4a18d0", size = 16121214 }, - { url = "https://files.pythonhosted.org/packages/db/54/3b9f89a943257bc8e187145c6bc0eb8e3d615655f7b14e9b490b053e8149/numpy-2.2.5-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:02f226baeefa68f7d579e213d0f3493496397d8f1cff5e2b222af274c86a552a", size = 15575788 }, - { url = "https://files.pythonhosted.org/packages/b1/c4/2e407e85df35b29f79945751b8f8e671057a13a376497d7fb2151ba0d290/numpy-2.2.5-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:c26843fd58f65da9491165072da2cccc372530681de481ef670dcc8e27cfb066", size = 17893672 }, - { url = "https://files.pythonhosted.org/packages/29/7e/d0b44e129d038dba453f00d0e29ebd6eaf2f06055d72b95b9947998aca14/numpy-2.2.5-cp313-cp313t-win32.whl", hash = "sha256:1a161c2c79ab30fe4501d5a2bbfe8b162490757cf90b7f05be8b80bc02f7bb8e", size = 6377102 }, - { url = "https://files.pythonhosted.org/packages/63/be/b85e4aa4bf42c6502851b971f1c326d583fcc68227385f92089cf50a7b45/numpy-2.2.5-cp313-cp313t-win_amd64.whl", hash = "sha256:d403c84991b5ad291d3809bace5e85f4bbf44a04bdc9a88ed2bb1807b3360bb8", size = 12750096 }, + { url = "https://files.pythonhosted.org/packages/89/59/9df493df81ac6f76e9f05cdbe013cdb0c9a37b434f6e594f5bd25e278908/numpy-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:389b85335838155a9076e9ad7f8fdba0827496ec2d2dc32ce69ce7898bde03ba", size = 20897025 }, + { url = "https://files.pythonhosted.org/packages/2f/86/4ff04335901d6cf3a6bb9c748b0097546ae5af35e455ae9b962ebff4ecd7/numpy-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:9498f60cd6bb8238d8eaf468a3d5bb031d34cd12556af53510f05fcf581c1b7e", size = 14129882 }, + { url = "https://files.pythonhosted.org/packages/71/8d/a942cd4f959de7f08a79ab0c7e6cecb7431d5403dce78959a726f0f57aa1/numpy-2.3.0-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:622a65d40d8eb427d8e722fd410ac3ad4958002f109230bc714fa551044ebae2", size = 5110181 }, + { url = "https://files.pythonhosted.org/packages/86/5d/45850982efc7b2c839c5626fb67fbbc520d5b0d7c1ba1ae3651f2f74c296/numpy-2.3.0-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:b9446d9d8505aadadb686d51d838f2b6688c9e85636a0c3abaeb55ed54756459", size = 6647581 }, + { url = "https://files.pythonhosted.org/packages/1a/c0/c871d4a83f93b00373d3eebe4b01525eee8ef10b623a335ec262b58f4dc1/numpy-2.3.0-cp312-cp312-manylinux_2_28_aarch64.whl", hash = "sha256:50080245365d75137a2bf46151e975de63146ae6d79f7e6bd5c0e85c9931d06a", size = 14262317 }, + { url = "https://files.pythonhosted.org/packages/b7/f6/bc47f5fa666d5ff4145254f9e618d56e6a4ef9b874654ca74c19113bb538/numpy-2.3.0-cp312-cp312-manylinux_2_28_x86_64.whl", hash = "sha256:c24bb4113c66936eeaa0dc1e47c74770453d34f46ee07ae4efd853a2ed1ad10a", size = 16633919 }, + { url = "https://files.pythonhosted.org/packages/f5/b4/65f48009ca0c9b76df5f404fccdea5a985a1bb2e34e97f21a17d9ad1a4ba/numpy-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:4d8d294287fdf685281e671886c6dcdf0291a7c19db3e5cb4178d07ccf6ecc67", size = 15567651 }, + { url = "https://files.pythonhosted.org/packages/f1/62/5367855a2018578e9334ed08252ef67cc302e53edc869666f71641cad40b/numpy-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6295f81f093b7f5769d1728a6bd8bf7466de2adfa771ede944ce6711382b89dc", size = 18361723 }, + { url = "https://files.pythonhosted.org/packages/d4/75/5baed8cd867eabee8aad1e74d7197d73971d6a3d40c821f1848b8fab8b84/numpy-2.3.0-cp312-cp312-win32.whl", hash = "sha256:e6648078bdd974ef5d15cecc31b0c410e2e24178a6e10bf511e0557eed0f2570", size = 6318285 }, + { url = "https://files.pythonhosted.org/packages/bc/49/d5781eaa1a15acb3b3a3f49dc9e2ff18d92d0ce5c2976f4ab5c0a7360250/numpy-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:0898c67a58cdaaf29994bc0e2c65230fd4de0ac40afaf1584ed0b02cd74c6fdd", size = 12732594 }, + { url = "https://files.pythonhosted.org/packages/c2/1c/6d343e030815c7c97a1f9fbad00211b47717c7fe446834c224bd5311e6f1/numpy-2.3.0-cp312-cp312-win_arm64.whl", hash = "sha256:bd8df082b6c4695753ad6193018c05aac465d634834dca47a3ae06d4bb22d9ea", size = 9891498 }, + { url = "https://files.pythonhosted.org/packages/73/fc/1d67f751fd4dbafc5780244fe699bc4084268bad44b7c5deb0492473127b/numpy-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:5754ab5595bfa2c2387d241296e0381c21f44a4b90a776c3c1d39eede13a746a", size = 20889633 }, + { url = "https://files.pythonhosted.org/packages/e8/95/73ffdb69e5c3f19ec4530f8924c4386e7ba097efc94b9c0aff607178ad94/numpy-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:d11fa02f77752d8099573d64e5fe33de3229b6632036ec08f7080f46b6649959", size = 14151683 }, + { url = "https://files.pythonhosted.org/packages/64/d5/06d4bb31bb65a1d9c419eb5676173a2f90fd8da3c59f816cc54c640ce265/numpy-2.3.0-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:aba48d17e87688a765ab1cd557882052f238e2f36545dfa8e29e6a91aef77afe", size = 5102683 }, + { url = "https://files.pythonhosted.org/packages/12/8b/6c2cef44f8ccdc231f6b56013dff1d71138c48124334aded36b1a1b30c5a/numpy-2.3.0-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:4dc58865623023b63b10d52f18abaac3729346a7a46a778381e0e3af4b7f3beb", size = 6640253 }, + { url = "https://files.pythonhosted.org/packages/62/aa/fca4bf8de3396ddb59544df9b75ffe5b73096174de97a9492d426f5cd4aa/numpy-2.3.0-cp313-cp313-manylinux_2_28_aarch64.whl", hash = "sha256:df470d376f54e052c76517393fa443758fefcdd634645bc9c1f84eafc67087f0", size = 14258658 }, + { url = "https://files.pythonhosted.org/packages/1c/12/734dce1087eed1875f2297f687e671cfe53a091b6f2f55f0c7241aad041b/numpy-2.3.0-cp313-cp313-manylinux_2_28_x86_64.whl", hash = "sha256:87717eb24d4a8a64683b7a4e91ace04e2f5c7c77872f823f02a94feee186168f", size = 16628765 }, + { url = "https://files.pythonhosted.org/packages/48/03/ffa41ade0e825cbcd5606a5669962419528212a16082763fc051a7247d76/numpy-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d8fa264d56882b59dcb5ea4d6ab6f31d0c58a57b41aec605848b6eb2ef4a43e8", size = 15564335 }, + { url = "https://files.pythonhosted.org/packages/07/58/869398a11863310aee0ff85a3e13b4c12f20d032b90c4b3ee93c3b728393/numpy-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:e651756066a0eaf900916497e20e02fe1ae544187cb0fe88de981671ee7f6270", size = 18360608 }, + { url = "https://files.pythonhosted.org/packages/2f/8a/5756935752ad278c17e8a061eb2127c9a3edf4ba2c31779548b336f23c8d/numpy-2.3.0-cp313-cp313-win32.whl", hash = "sha256:e43c3cce3b6ae5f94696669ff2a6eafd9a6b9332008bafa4117af70f4b88be6f", size = 6310005 }, + { url = "https://files.pythonhosted.org/packages/08/60/61d60cf0dfc0bf15381eaef46366ebc0c1a787856d1db0c80b006092af84/numpy-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:81ae0bf2564cf475f94be4a27ef7bcf8af0c3e28da46770fc904da9abd5279b5", size = 12729093 }, + { url = "https://files.pythonhosted.org/packages/66/31/2f2f2d2b3e3c32d5753d01437240feaa32220b73258c9eef2e42a0832866/numpy-2.3.0-cp313-cp313-win_arm64.whl", hash = "sha256:c8738baa52505fa6e82778580b23f945e3578412554d937093eac9205e845e6e", size = 9885689 }, + { url = "https://files.pythonhosted.org/packages/f1/89/c7828f23cc50f607ceb912774bb4cff225ccae7131c431398ad8400e2c98/numpy-2.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:39b27d8b38942a647f048b675f134dd5a567f95bfff481f9109ec308515c51d8", size = 20986612 }, + { url = "https://files.pythonhosted.org/packages/dd/46/79ecf47da34c4c50eedec7511e53d57ffdfd31c742c00be7dc1d5ffdb917/numpy-2.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:0eba4a1ea88f9a6f30f56fdafdeb8da3774349eacddab9581a21234b8535d3d3", size = 14298953 }, + { url = "https://files.pythonhosted.org/packages/59/44/f6caf50713d6ff4480640bccb2a534ce1d8e6e0960c8f864947439f0ee95/numpy-2.3.0-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:b0f1f11d0a1da54927436505a5a7670b154eac27f5672afc389661013dfe3d4f", size = 5225806 }, + { url = "https://files.pythonhosted.org/packages/a6/43/e1fd1aca7c97e234dd05e66de4ab7a5be54548257efcdd1bc33637e72102/numpy-2.3.0-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:690d0a5b60a47e1f9dcec7b77750a4854c0d690e9058b7bef3106e3ae9117808", size = 6735169 }, + { url = "https://files.pythonhosted.org/packages/84/89/f76f93b06a03177c0faa7ca94d0856c4e5c4bcaf3c5f77640c9ed0303e1c/numpy-2.3.0-cp313-cp313t-manylinux_2_28_aarch64.whl", hash = "sha256:8b51ead2b258284458e570942137155978583e407babc22e3d0ed7af33ce06f8", size = 14330701 }, + { url = "https://files.pythonhosted.org/packages/aa/f5/4858c3e9ff7a7d64561b20580cf7cc5d085794bd465a19604945d6501f6c/numpy-2.3.0-cp313-cp313t-manylinux_2_28_x86_64.whl", hash = "sha256:aaf81c7b82c73bd9b45e79cfb9476cb9c29e937494bfe9092c26aece812818ad", size = 16692983 }, + { url = "https://files.pythonhosted.org/packages/08/17/0e3b4182e691a10e9483bcc62b4bb8693dbf9ea5dc9ba0b77a60435074bb/numpy-2.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:f420033a20b4f6a2a11f585f93c843ac40686a7c3fa514060a97d9de93e5e72b", size = 15641435 }, + { url = "https://files.pythonhosted.org/packages/4e/d5/463279fda028d3c1efa74e7e8d507605ae87f33dbd0543cf4c4527c8b882/numpy-2.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:d344ca32ab482bcf8735d8f95091ad081f97120546f3d250240868430ce52555", size = 18433798 }, + { url = "https://files.pythonhosted.org/packages/0e/1e/7a9d98c886d4c39a2b4d3a7c026bffcf8fbcaf518782132d12a301cfc47a/numpy-2.3.0-cp313-cp313t-win32.whl", hash = "sha256:48a2e8eaf76364c32a1feaa60d6925eaf32ed7a040183b807e02674305beef61", size = 6438632 }, + { url = "https://files.pythonhosted.org/packages/fe/ab/66fc909931d5eb230107d016861824f335ae2c0533f422e654e5ff556784/numpy-2.3.0-cp313-cp313t-win_amd64.whl", hash = "sha256:ba17f93a94e503551f154de210e4d50c5e3ee20f7e7a1b5f6ce3f22d419b93bb", size = 12868491 }, + { url = "https://files.pythonhosted.org/packages/ee/e8/2c8a1c9e34d6f6d600c83d5ce5b71646c32a13f34ca5c518cc060639841c/numpy-2.3.0-cp313-cp313t-win_arm64.whl", hash = "sha256:f14e016d9409680959691c109be98c436c6249eaf7f118b424679793607b5944", size = 9935345 }, ] [[package]] @@ -745,7 +747,7 @@ wheels = [ [[package]] name = "openai" -version = "1.79.0" +version = "1.86.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "anyio" }, @@ -757,9 +759,9 @@ dependencies = [ { name = "tqdm" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/52/cf/4901077dbbfd0d82a814d721600fa0c3a61a093d7f0bf84d0e4732448dc9/openai-1.79.0.tar.gz", hash = "sha256:e3b627aa82858d3e42d16616edc22aa9f7477ee5eb3e6819e9f44a961d899a4c", size = 444736 } +sdist = { url = "https://files.pythonhosted.org/packages/ec/7a/9ad4a61f1502f0e59d8c27fb629e28a63259a44d8d31cd2314e1534a2d9f/openai-1.86.0.tar.gz", hash = "sha256:c64d5b788359a8fdf69bd605ae804ce41c1ce2e78b8dd93e2542e0ee267f1e4b", size = 468272 } wheels = [ - { url = "https://files.pythonhosted.org/packages/81/d2/e3992bb7c6641b765c1008e3c96e076e0b50381be2cce344e6ff177bad80/openai-1.79.0-py3-none-any.whl", hash = "sha256:d5050b92d5ef83f869cb8dcd0aca0b2291c3413412500eec40c66981b3966992", size = 683334 }, + { url = "https://files.pythonhosted.org/packages/58/c1/dfb16b3432810fc9758564f9d1a4dbce6b93b7fb763ba57530c7fc48316d/openai-1.86.0-py3-none-any.whl", hash = "sha256:c8889c39410621fe955c230cc4c21bfe36ec887f4e60a957de05f507d7e1f349", size = 730296 }, ] [[package]] @@ -791,7 +793,7 @@ wheels = [ [[package]] name = "pandas" -version = "2.2.3" +version = "2.3.0" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "numpy" }, @@ -799,28 +801,28 @@ dependencies = [ { name = "pytz" }, { name = "tzdata" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/9c/d6/9f8431bacc2e19dca897724cd097b1bb224a6ad5433784a44b587c7c13af/pandas-2.2.3.tar.gz", hash = "sha256:4f18ba62b61d7e192368b84517265a99b4d7ee8912f8708660fb4a366cc82667", size = 4399213 } +sdist = { url = "https://files.pythonhosted.org/packages/72/51/48f713c4c728d7c55ef7444ba5ea027c26998d96d1a40953b346438602fc/pandas-2.3.0.tar.gz", hash = "sha256:34600ab34ebf1131a7613a260a61dbe8b62c188ec0ea4c296da7c9a06b004133", size = 4484490 } wheels = [ - { url = "https://files.pythonhosted.org/packages/17/a3/fb2734118db0af37ea7433f57f722c0a56687e14b14690edff0cdb4b7e58/pandas-2.2.3-cp312-cp312-macosx_10_9_x86_64.whl", hash = "sha256:b1d432e8d08679a40e2a6d8b2f9770a5c21793a6f9f47fdd52c5ce1948a5a8a9", size = 12529893 }, - { url = "https://files.pythonhosted.org/packages/e1/0c/ad295fd74bfac85358fd579e271cded3ac969de81f62dd0142c426b9da91/pandas-2.2.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:a5a1595fe639f5988ba6a8e5bc9649af3baf26df3998a0abe56c02609392e0a4", size = 11363475 }, - { url = "https://files.pythonhosted.org/packages/c6/2a/4bba3f03f7d07207481fed47f5b35f556c7441acddc368ec43d6643c5777/pandas-2.2.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5de54125a92bb4d1c051c0659e6fcb75256bf799a732a87184e5ea503965bce3", size = 15188645 }, - { url = "https://files.pythonhosted.org/packages/38/f8/d8fddee9ed0d0c0f4a2132c1dfcf0e3e53265055da8df952a53e7eaf178c/pandas-2.2.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fffb8ae78d8af97f849404f21411c95062db1496aeb3e56f146f0355c9989319", size = 12739445 }, - { url = "https://files.pythonhosted.org/packages/20/e8/45a05d9c39d2cea61ab175dbe6a2de1d05b679e8de2011da4ee190d7e748/pandas-2.2.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6dfcb5ee8d4d50c06a51c2fffa6cff6272098ad6540aed1a76d15fb9318194d8", size = 16359235 }, - { url = "https://files.pythonhosted.org/packages/1d/99/617d07a6a5e429ff90c90da64d428516605a1ec7d7bea494235e1c3882de/pandas-2.2.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:062309c1b9ea12a50e8ce661145c6aab431b1e99530d3cd60640e255778bd43a", size = 14056756 }, - { url = "https://files.pythonhosted.org/packages/29/d4/1244ab8edf173a10fd601f7e13b9566c1b525c4f365d6bee918e68381889/pandas-2.2.3-cp312-cp312-win_amd64.whl", hash = "sha256:59ef3764d0fe818125a5097d2ae867ca3fa64df032331b7e0917cf5d7bf66b13", size = 11504248 }, - { url = "https://files.pythonhosted.org/packages/64/22/3b8f4e0ed70644e85cfdcd57454686b9057c6c38d2f74fe4b8bc2527214a/pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f00d1345d84d8c86a63e476bb4955e46458b304b9575dcf71102b5c705320015", size = 12477643 }, - { url = "https://files.pythonhosted.org/packages/e4/93/b3f5d1838500e22c8d793625da672f3eec046b1a99257666c94446969282/pandas-2.2.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:3508d914817e153ad359d7e069d752cdd736a247c322d932eb89e6bc84217f28", size = 11281573 }, - { url = "https://files.pythonhosted.org/packages/f5/94/6c79b07f0e5aab1dcfa35a75f4817f5c4f677931d4234afcd75f0e6a66ca/pandas-2.2.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:22a9d949bfc9a502d320aa04e5d02feab689d61da4e7764b62c30b991c42c5f0", size = 15196085 }, - { url = "https://files.pythonhosted.org/packages/e8/31/aa8da88ca0eadbabd0a639788a6da13bb2ff6edbbb9f29aa786450a30a91/pandas-2.2.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f3a255b2c19987fbbe62a9dfd6cff7ff2aa9ccab3fc75218fd4b7530f01efa24", size = 12711809 }, - { url = "https://files.pythonhosted.org/packages/ee/7c/c6dbdb0cb2a4344cacfb8de1c5808ca885b2e4dcfde8008266608f9372af/pandas-2.2.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:800250ecdadb6d9c78eae4990da62743b857b470883fa27f652db8bdde7f6659", size = 16356316 }, - { url = "https://files.pythonhosted.org/packages/57/b7/8b757e7d92023b832869fa8881a992696a0bfe2e26f72c9ae9f255988d42/pandas-2.2.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6374c452ff3ec675a8f46fd9ab25c4ad0ba590b71cf0656f8b6daa5202bca3fb", size = 14022055 }, - { url = "https://files.pythonhosted.org/packages/3b/bc/4b18e2b8c002572c5a441a64826252ce5da2aa738855747247a971988043/pandas-2.2.3-cp313-cp313-win_amd64.whl", hash = "sha256:61c5ad4043f791b61dd4752191d9f07f0ae412515d59ba8f005832a532f8736d", size = 11481175 }, - { url = "https://files.pythonhosted.org/packages/76/a3/a5d88146815e972d40d19247b2c162e88213ef51c7c25993942c39dbf41d/pandas-2.2.3-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:3b71f27954685ee685317063bf13c7709a7ba74fc996b84fc6821c59b0f06468", size = 12615650 }, - { url = "https://files.pythonhosted.org/packages/9c/8c/f0fd18f6140ddafc0c24122c8a964e48294acc579d47def376fef12bcb4a/pandas-2.2.3-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:38cf8125c40dae9d5acc10fa66af8ea6fdf760b2714ee482ca691fc66e6fcb18", size = 11290177 }, - { url = "https://files.pythonhosted.org/packages/ed/f9/e995754eab9c0f14c6777401f7eece0943840b7a9fc932221c19d1abee9f/pandas-2.2.3-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:ba96630bc17c875161df3818780af30e43be9b166ce51c9a18c1feae342906c2", size = 14651526 }, - { url = "https://files.pythonhosted.org/packages/25/b0/98d6ae2e1abac4f35230aa756005e8654649d305df9a28b16b9ae4353bff/pandas-2.2.3-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1db71525a1538b30142094edb9adc10be3f3e176748cd7acc2240c2f2e5aa3a4", size = 11871013 }, - { url = "https://files.pythonhosted.org/packages/cc/57/0f72a10f9db6a4628744c8e8f0df4e6e21de01212c7c981d31e50ffc8328/pandas-2.2.3-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:15c0e1e02e93116177d29ff83e8b1619c93ddc9c49083f237d4312337a61165d", size = 15711620 }, - { url = "https://files.pythonhosted.org/packages/ab/5f/b38085618b950b79d2d9164a711c52b10aefc0ae6833b96f626b7021b2ed/pandas-2.2.3-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:ad5b65698ab28ed8d7f18790a0dc58005c7629f227be9ecc1072aa74c0c1d43a", size = 13098436 }, + { url = "https://files.pythonhosted.org/packages/94/46/24192607058dd607dbfacdd060a2370f6afb19c2ccb617406469b9aeb8e7/pandas-2.3.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:2eb4728a18dcd2908c7fccf74a982e241b467d178724545a48d0caf534b38ebf", size = 11573865 }, + { url = "https://files.pythonhosted.org/packages/9f/cc/ae8ea3b800757a70c9fdccc68b67dc0280a6e814efcf74e4211fd5dea1ca/pandas-2.3.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:b9d8c3187be7479ea5c3d30c32a5d73d62a621166675063b2edd21bc47614027", size = 10702154 }, + { url = "https://files.pythonhosted.org/packages/d8/ba/a7883d7aab3d24c6540a2768f679e7414582cc389876d469b40ec749d78b/pandas-2.3.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:9ff730713d4c4f2f1c860e36c005c7cefc1c7c80c21c0688fd605aa43c9fcf09", size = 11262180 }, + { url = "https://files.pythonhosted.org/packages/01/a5/931fc3ad333d9d87b10107d948d757d67ebcfc33b1988d5faccc39c6845c/pandas-2.3.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba24af48643b12ffe49b27065d3babd52702d95ab70f50e1b34f71ca703e2c0d", size = 11991493 }, + { url = "https://files.pythonhosted.org/packages/d7/bf/0213986830a92d44d55153c1d69b509431a972eb73f204242988c4e66e86/pandas-2.3.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:404d681c698e3c8a40a61d0cd9412cc7364ab9a9cc6e144ae2992e11a2e77a20", size = 12470733 }, + { url = "https://files.pythonhosted.org/packages/a4/0e/21eb48a3a34a7d4bac982afc2c4eb5ab09f2d988bdf29d92ba9ae8e90a79/pandas-2.3.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:6021910b086b3ca756755e86ddc64e0ddafd5e58e076c72cb1585162e5ad259b", size = 13212406 }, + { url = "https://files.pythonhosted.org/packages/1f/d9/74017c4eec7a28892d8d6e31ae9de3baef71f5a5286e74e6b7aad7f8c837/pandas-2.3.0-cp312-cp312-win_amd64.whl", hash = "sha256:094e271a15b579650ebf4c5155c05dcd2a14fd4fdd72cf4854b2f7ad31ea30be", size = 10976199 }, + { url = "https://files.pythonhosted.org/packages/d3/57/5cb75a56a4842bbd0511c3d1c79186d8315b82dac802118322b2de1194fe/pandas-2.3.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:2c7e2fc25f89a49a11599ec1e76821322439d90820108309bf42130d2f36c983", size = 11518913 }, + { url = "https://files.pythonhosted.org/packages/05/01/0c8785610e465e4948a01a059562176e4c8088aa257e2e074db868f86d4e/pandas-2.3.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:c6da97aeb6a6d233fb6b17986234cc723b396b50a3c6804776351994f2a658fd", size = 10655249 }, + { url = "https://files.pythonhosted.org/packages/e8/6a/47fd7517cd8abe72a58706aab2b99e9438360d36dcdb052cf917b7bf3bdc/pandas-2.3.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bb32dc743b52467d488e7a7c8039b821da2826a9ba4f85b89ea95274f863280f", size = 11328359 }, + { url = "https://files.pythonhosted.org/packages/2a/b3/463bfe819ed60fb7e7ddffb4ae2ee04b887b3444feee6c19437b8f834837/pandas-2.3.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:213cd63c43263dbb522c1f8a7c9d072e25900f6975596f883f4bebd77295d4f3", size = 12024789 }, + { url = "https://files.pythonhosted.org/packages/04/0c/e0704ccdb0ac40aeb3434d1c641c43d05f75c92e67525df39575ace35468/pandas-2.3.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:1d2b33e68d0ce64e26a4acc2e72d747292084f4e8db4c847c6f5f6cbe56ed6d8", size = 12480734 }, + { url = "https://files.pythonhosted.org/packages/e9/df/815d6583967001153bb27f5cf075653d69d51ad887ebbf4cfe1173a1ac58/pandas-2.3.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:430a63bae10b5086995db1b02694996336e5a8ac9a96b4200572b413dfdfccb9", size = 13223381 }, + { url = "https://files.pythonhosted.org/packages/79/88/ca5973ed07b7f484c493e941dbff990861ca55291ff7ac67c815ce347395/pandas-2.3.0-cp313-cp313-win_amd64.whl", hash = "sha256:4930255e28ff5545e2ca404637bcc56f031893142773b3468dc021c6c32a1390", size = 10970135 }, + { url = "https://files.pythonhosted.org/packages/24/fb/0994c14d1f7909ce83f0b1fb27958135513c4f3f2528bde216180aa73bfc/pandas-2.3.0-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:f925f1ef673b4bd0271b1809b72b3270384f2b7d9d14a189b12b7fc02574d575", size = 12141356 }, + { url = "https://files.pythonhosted.org/packages/9d/a2/9b903e5962134497ac4f8a96f862ee3081cb2506f69f8e4778ce3d9c9d82/pandas-2.3.0-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78ad363ddb873a631e92a3c063ade1ecfb34cae71e9a2be6ad100f875ac1042", size = 11474674 }, + { url = "https://files.pythonhosted.org/packages/81/3a/3806d041bce032f8de44380f866059437fb79e36d6b22c82c187e65f765b/pandas-2.3.0-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:951805d146922aed8357e4cc5671b8b0b9be1027f0619cea132a9f3f65f2f09c", size = 11439876 }, + { url = "https://files.pythonhosted.org/packages/15/aa/3fc3181d12b95da71f5c2537c3e3b3af6ab3a8c392ab41ebb766e0929bc6/pandas-2.3.0-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1a881bc1309f3fce34696d07b00f13335c41f5f5a8770a33b09ebe23261cfc67", size = 11966182 }, + { url = "https://files.pythonhosted.org/packages/37/e7/e12f2d9b0a2c4a2cc86e2aabff7ccfd24f03e597d770abfa2acd313ee46b/pandas-2.3.0-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:e1991bbb96f4050b09b5f811253c4f3cf05ee89a589379aa36cd623f21a31d6f", size = 12547686 }, + { url = "https://files.pythonhosted.org/packages/39/c2/646d2e93e0af70f4e5359d870a63584dacbc324b54d73e6b3267920ff117/pandas-2.3.0-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:bb3be958022198531eb7ec2008cfc78c5b1eed51af8600c6c5d9160d89d8d249", size = 13231847 }, ] [[package]] @@ -883,7 +885,7 @@ wheels = [ [[package]] name = "pydantic" -version = "2.11.4" +version = "2.11.5" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "annotated-types" }, @@ -891,9 +893,9 @@ dependencies = [ { name = "typing-extensions" }, { name = "typing-inspection" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/77/ab/5250d56ad03884ab5efd07f734203943c8a8ab40d551e208af81d0257bf2/pydantic-2.11.4.tar.gz", hash = "sha256:32738d19d63a226a52eed76645a98ee07c1f410ee41d93b4afbfa85ed8111c2d", size = 786540 } +sdist = { url = "https://files.pythonhosted.org/packages/f0/86/8ce9040065e8f924d642c58e4a344e33163a07f6b57f836d0d734e0ad3fb/pydantic-2.11.5.tar.gz", hash = "sha256:7f853db3d0ce78ce8bbb148c401c2cdd6431b3473c0cdff2755c7690952a7b7a", size = 787102 } wheels = [ - { url = "https://files.pythonhosted.org/packages/e7/12/46b65f3534d099349e38ef6ec98b1a5a81f42536d17e0ba382c28c67ba67/pydantic-2.11.4-py3-none-any.whl", hash = "sha256:d9615eaa9ac5a063471da949c8fc16376a84afb5024688b3ff885693506764eb", size = 443900 }, + { url = "https://files.pythonhosted.org/packages/b5/69/831ed22b38ff9b4b64b66569f0e5b7b97cf3638346eb95a2147fdb49ad5f/pydantic-2.11.5-py3-none-any.whl", hash = "sha256:f9c26ba06f9747749ca1e5c94d6a85cb84254577553c8785576fd38fa64dc0f7", size = 444229 }, ] [[package]] @@ -996,63 +998,51 @@ wheels = [ ] [[package]] -name = "pyqt6" -version = "6.9.0" +name = "pyside6" +version = "6.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "pyqt6-qt6" }, - { name = "pyqt6-sip" }, + { name = "pyside6-addons" }, + { name = "pyside6-essentials" }, + { name = "shiboken6" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/32/de/102e8e66149085acf38bbf01df572a2cd53259bcd99b7d8ecef0d6b36172/pyqt6-6.9.0.tar.gz", hash = "sha256:6a8ff8e3cd18311bb7d937f7d741e787040ae7ff47ce751c28a94c5cddc1b4e6", size = 1066831 } wheels = [ - { url = "https://files.pythonhosted.org/packages/97/e5/f9e2b5326d6103bce4894a969be54ce3be4b0a7a6ff848228e6a61a9993f/PyQt6-6.9.0-cp39-abi3-macosx_10_14_universal2.whl", hash = "sha256:5344240747e81bde1a4e0e98d4e6e2d96ad56a985d8f36b69cd529c1ca9ff760", size = 12257215 }, - { url = "https://files.pythonhosted.org/packages/ed/3a/bcc7687c5a11079bbd1606a015514562f2ac8cb01c5e3e4a3b30fcbdad36/PyQt6-6.9.0-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e344868228c71fc89a0edeb325497df4ff731a89cfa5fe57a9a4e9baecc9512b", size = 8259731 }, - { url = "https://files.pythonhosted.org/packages/e1/47/13ab0b916b5bad07ab04767b412043f5c1ca206bf38a906b1d8d5c520a98/PyQt6-6.9.0-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:1cbc5a282454cf19691be09eadbde019783f1ae0523e269b211b0173b67373f6", size = 8207593 }, - { url = "https://files.pythonhosted.org/packages/d1/a8/955cfd880f2725a218ee7b272c005658e857e9224823d49c32c93517f6d9/PyQt6-6.9.0-cp39-abi3-win_amd64.whl", hash = "sha256:d36482000f0cd7ce84a35863766f88a5e671233d5f1024656b600cd8915b3752", size = 6748279 }, - { url = "https://files.pythonhosted.org/packages/9f/38/586ce139b1673a27607f7b85c594878e1bba215abdca3de67732b463f7b2/PyQt6-6.9.0-cp39-abi3-win_arm64.whl", hash = "sha256:0c8b7251608e05b479cfe731f95857e853067459f7cbbcfe90f89de1bcf04280", size = 5478122 }, + { url = "https://files.pythonhosted.org/packages/14/91/8e9c7f7e90431297de9856e90a156ade9420977e26d87996909c63f30bd2/PySide6-6.9.1-cp39-abi3-macosx_12_0_universal2.whl", hash = "sha256:f843ef39970a2f79757810fffd7b8e93ac42a3de9ea62f2a03648cde57648aed", size = 558097 }, + { url = "https://files.pythonhosted.org/packages/d7/ff/04d1b6b30edd24d761cc30d964860f997bdf37d06620694bf9aab35eec3a/PySide6-6.9.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:db44ac08b8f7ac1b421bc1c6a44200d03f08d80dc7b3f68dfdb1684f30f41c17", size = 558239 }, + { url = "https://files.pythonhosted.org/packages/3c/b4/ca076c55c11a8e473363e05aa82c5c03dd7ba8f17b77cc9311ce17213193/PySide6-6.9.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:531a6e67c429b045674d57fe9864b711eb59e4cded753c2640982e368fd468d1", size = 558239 }, + { url = "https://files.pythonhosted.org/packages/83/ff/95c941f53b0faebc27dbe361d8e971b77f504b9cf36f8f5d750fd82cd6fc/PySide6-6.9.1-cp39-abi3-win_amd64.whl", hash = "sha256:c82dbb7d32bbdd465e01059174f71bddc97de152ab71bded3f1907c40f9a5f16", size = 564571 }, + { url = "https://files.pythonhosted.org/packages/d1/ef/0aa5e910fa4e9770db6b45c23e360a52313922e0ca71fc060a57db613de1/PySide6-6.9.1-cp39-abi3-win_arm64.whl", hash = "sha256:1525d63dc6dc425b8c2dc5bc01a8cb1d67530401449f3a3490c09a14c095b9f9", size = 401793 }, ] [[package]] -name = "pyqt6-qt6" -version = "6.9.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e2/11/8c450442bf4702ed810689a045f9c5d9236d709163886f09374fd8d84143/PyQt6_Qt6-6.9.0-py3-none-macosx_10_14_x86_64.whl", hash = "sha256:b1c4e4a78f0f22fbf88556e3d07c99e5ce93032feae5c1e575958d914612e0f9", size = 66804297 }, - { url = "https://files.pythonhosted.org/packages/6e/be/191ba4402c24646f6b98c326ff0ee22e820096c69e67ba5860a687057616/PyQt6_Qt6-6.9.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:6d3875119dec6bf5f799facea362aa0ad39bb23aa9654112faa92477abccb5ff", size = 60943708 }, - { url = "https://files.pythonhosted.org/packages/0f/70/ec018b6e979b3914c984e5ab7e130918930d5423735ac96c70c328227b9b/PyQt6_Qt6-6.9.0-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:9c0e603c934e4f130c110190fbf2c482ff1221a58317266570678bc02db6b152", size = 81846956 }, - { url = "https://files.pythonhosted.org/packages/ac/ed/2d78cd08be415a21dac2e7277967b90b0c05afc4782100f0a037447bb1c6/PyQt6_Qt6-6.9.0-py3-none-manylinux_2_39_aarch64.whl", hash = "sha256:cf840e8ae20a0704e0343810cf0e485552db28bf09ea976e58ec0e9b7bb27fcd", size = 80295982 }, - { url = "https://files.pythonhosted.org/packages/6e/24/6b6168a75c7b6a55b9f6b5c897e6164ec15e94594af11a6f358c49845442/PyQt6_Qt6-6.9.0-py3-none-win_amd64.whl", hash = "sha256:c825a6f5a9875ef04ef6681eda16aa3a9e9ad71847aa78dfafcf388c8007aa0a", size = 73652485 }, - { url = "https://files.pythonhosted.org/packages/44/fd/1238931df039e46e128d53974c0cfc9d34da3d54c5662bd589fe7b0a67c2/PyQt6_Qt6-6.9.0-py3-none-win_arm64.whl", hash = "sha256:1188f118d1c570d27fba39707e3d8a48525f979816e73de0da55b9e6fa9ad0a1", size = 49568913 }, -] - -[[package]] -name = "pyqt6-sip" -version = "13.10.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/90/18/0405c54acba0c8e276dd6f0601890e6e735198218d031a6646104870fe22/pyqt6_sip-13.10.0.tar.gz", hash = "sha256:d6daa95a0bd315d9ec523b549e0ce97455f61ded65d5eafecd83ed2aa4ae5350", size = 92464 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/69/81/66d9bdacb790592a0641378749a047f12e3b254cdc2cb51f7ed636cf01d2/PyQt6_sip-13.10.0-cp312-cp312-macosx_10_9_universal2.whl", hash = "sha256:48791db2914fc39c3218519a02d2a5fd3fcd354a1be3141a57bf2880701486f2", size = 112334 }, - { url = "https://files.pythonhosted.org/packages/26/2c/4796c209009a018e0d4a5c406d5a519234c5a378f370dc679d0ad5f455b2/PyQt6_sip-13.10.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:466d6b4791973c9fcbdc2e0087ed194b9ea802a8c3948867a849498f0841c70c", size = 322334 }, - { url = "https://files.pythonhosted.org/packages/99/34/2ec54bd475f0a811df1d32be485f2344cf9e8b388ce7adb26b46ce5552d4/PyQt6_sip-13.10.0-cp312-cp312-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:ae15358941f127cd3d1ab09c1ebd45c4dabb0b2e91587b9eebde0279d0039c54", size = 303798 }, - { url = "https://files.pythonhosted.org/packages/0c/e4/82099bb4ab8bc152b5718541e93c0b3adf7566c0f307c9e58e2368b8c517/PyQt6_sip-13.10.0-cp312-cp312-win_amd64.whl", hash = "sha256:ad573184fa8b00041944e5a17d150ab0d08db2d2189e39c9373574ebab3f2e58", size = 53569 }, - { url = "https://files.pythonhosted.org/packages/e3/09/90e0378887a3cb9664da77061229cf8e97e6ec25a5611b7dbc9cc3e02c78/PyQt6_sip-13.10.0-cp312-cp312-win_arm64.whl", hash = "sha256:2d579d810d0047d40bde9c6aef281d6ed218db93c9496ebc9e55b9e6f27a229d", size = 45430 }, - { url = "https://files.pythonhosted.org/packages/6b/0c/8d1de48b45b565a46bf4757341f13f9b1853a7d2e6b023700f0af2c213ab/PyQt6_sip-13.10.0-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7b6e250c2e7c14702a623f2cc1479d7fb8db2b6eee9697cac10d06fe79c281bb", size = 112343 }, - { url = "https://files.pythonhosted.org/packages/af/13/e2cc2b667a9f5d44c2d0e18fa6e1066fca3f4521dcb301f4b5374caeb33e/PyQt6_sip-13.10.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0fcb30756568f8cd59290f9ef2ae5ee3e72ff9cdd61a6f80c9e3d3b95ae676be", size = 322527 }, - { url = "https://files.pythonhosted.org/packages/20/1a/5c6fcae85edb65cf236c9dc6d23b279b5316e94cdca1abdee6d0a217ddbb/PyQt6_sip-13.10.0-cp313-cp313-manylinux_2_5_x86_64.manylinux1_x86_64.whl", hash = "sha256:757ac52c92b2ef0b56ecc7cd763b55a62d3c14271d7ea8d03315af85a70090ff", size = 303407 }, - { url = "https://files.pythonhosted.org/packages/b9/db/6924ec985be7d746772806b96ab81d24263ef72f0249f0573a82adaed75e/PyQt6_sip-13.10.0-cp313-cp313-win_amd64.whl", hash = "sha256:571900c44a3e38738d696234d94fe2043972b9de0633505451c99e2922cb6a34", size = 53580 }, - { url = "https://files.pythonhosted.org/packages/77/c3/9e44729b582ee7f1d45160e8c292723156889f3e38ce6574f88d5ab8fa02/PyQt6_sip-13.10.0-cp313-cp313-win_arm64.whl", hash = "sha256:39cba2cc71cf80a99b4dc8147b43508d4716e128f9fb99f5eb5860a37f082282", size = 45446 }, -] - -[[package]] -name = "pyqtgraph" -version = "0.13.7" +name = "pyside6-addons" +version = "6.9.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "numpy" }, + { name = "pyside6-essentials" }, + { name = "shiboken6" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/33/d9/b62d5cddb3caa6e5145664bee5ed90223dee23ca887ed3ee479f2609e40a/pyqtgraph-0.13.7.tar.gz", hash = "sha256:64f84f1935c6996d0e09b1ee66fe478a7771e3ca6f3aaa05f00f6e068321d9e3", size = 2343380 } wheels = [ - { url = "https://files.pythonhosted.org/packages/7b/34/5702b3b7cafe99be1d94b42f100e8cc5e6957b761fcb1cf5f72d492851da/pyqtgraph-0.13.7-py3-none-any.whl", hash = "sha256:7754edbefb6c367fa0dfb176e2d0610da3ada20aa7a5318516c74af5fb72bf7a", size = 1925473 }, + { url = "https://files.pythonhosted.org/packages/e7/e2/39b9e04335d7ac782b6459bf7abec90c36b8efaac5a88ef818e972c59387/PySide6_Addons-6.9.1-cp39-abi3-macosx_12_0_universal2.whl", hash = "sha256:7be0708fa89715c282541fca47e2ba97c0c8d2886e0236ef994b2dd8f52aacdd", size = 316212438 }, + { url = "https://files.pythonhosted.org/packages/cf/6f/691d7039a6f7943522a770b713ecd85fa169688dfdd65ddd4db1699d01b6/PySide6_Addons-6.9.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:da7869b02e3599d26546fad582db4656060786bc5ec8ece5ec9ee8aa8b42371c", size = 166690468 }, + { url = "https://files.pythonhosted.org/packages/9d/08/a264db09ad35819643d910cd4c73a86f72f23b7092f8ebc7e51dcca53a86/PySide6_Addons-6.9.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:53fd08c8152b6ba8c435458afd189835ba905793a5077a2bb0b1b11222b375d4", size = 162466096 }, + { url = "https://files.pythonhosted.org/packages/84/be/a849402f7e73d137b5ae8b4370a49b0cf0e0c02f028b845782cb743e4995/PySide6_Addons-6.9.1-cp39-abi3-win_amd64.whl", hash = "sha256:cd93a3a5e3886cd958f3a5acc7c061c24f10a394ce9f4ce657ac394544ca7ec2", size = 143150906 }, + { url = "https://files.pythonhosted.org/packages/2a/f1/1bb6b5859aff4e2b3f5ef789b9cee200811a9f469f04d9aa7425e816622b/PySide6_Addons-6.9.1-cp39-abi3-win_arm64.whl", hash = "sha256:4f589631bdceb518080ae9c9fa288e64f092cd5bebe25adc8ad89e8eadd4db29", size = 26938762 }, +] + +[[package]] +name = "pyside6-essentials" +version = "6.9.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "shiboken6" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/59/714874db9ef3bbbbda654fd3223248969bea02ec1a5bfdd1c941c4e97749/PySide6_Essentials-6.9.1-cp39-abi3-macosx_12_0_universal2.whl", hash = "sha256:ed43435a70e018e1c22efcaf34a9430b83cfcad716dba661b03de21c13322fab", size = 132957077 }, + { url = "https://files.pythonhosted.org/packages/59/6a/ea0db68d40a1c487fd255634896f4e37b6560e3ef1f57ca5139bf6509b1f/PySide6_Essentials-6.9.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:e5da48883f006c6206ef85874db74ddebcdf69b0281bd4f1642b1c5ac1d54aea", size = 96416183 }, + { url = "https://files.pythonhosted.org/packages/5b/2f/4243630d1733522638c4967d36018c38719d8b84f5246bf3d4c010e0aa9d/PySide6_Essentials-6.9.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:e46a2801c9c6098025515fd0af6c594b9e9c951842f68b8f6f3da9858b9b26c2", size = 94171343 }, + { url = "https://files.pythonhosted.org/packages/0d/a9/a8e0209ba9116f2c2db990cfb79f2edbd5a3a428013be2df1f1cddd660a9/PySide6_Essentials-6.9.1-cp39-abi3-win_amd64.whl", hash = "sha256:ad1ac94011492dba33051bc33db1c76a7d6f815a81c01422cb6220273b369145", size = 72435676 }, + { url = "https://files.pythonhosted.org/packages/d0/e4/23268c57e775a1a4d2843d288a9583a47f2e4b3977a9ae93cb9ded1a4ea5/PySide6_Essentials-6.9.1-cp39-abi3-win_arm64.whl", hash = "sha256:35c2c2bb4a88db74d11e638cf917524ff35785883f10b439ead07960a5733aa4", size = 49483707 }, ] [[package]] @@ -1139,14 +1129,14 @@ wheels = [ [[package]] name = "pyyaml-env-tag" -version = "0.1" +version = "1.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "pyyaml" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/fb/8e/da1c6c58f751b70f8ceb1eb25bc25d524e8f14fe16edcce3f4e3ba08629c/pyyaml_env_tag-0.1.tar.gz", hash = "sha256:70092675bda14fdec33b31ba77e7543de9ddc88f2e5b99160396572d11525bdb", size = 5631 } +sdist = { url = "https://files.pythonhosted.org/packages/eb/2e/79c822141bfd05a853236b504869ebc6b70159afc570e1d5a20641782eaa/pyyaml_env_tag-1.1.tar.gz", hash = "sha256:2eb38b75a2d21ee0475d6d97ec19c63287a7e140231e4214969d0eac923cd7ff", size = 5737 } wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/66/bbb1dd374f5c870f59c5bb1db0e18cbe7fa739415a24cbd95b2d1f5ae0c4/pyyaml_env_tag-0.1-py3-none-any.whl", hash = "sha256:af31106dec8a4d68c60207c1886031cbf839b68aa7abccdb19868200532c2069", size = 3911 }, + { url = "https://files.pythonhosted.org/packages/04/11/432f32f8097b03e3cd5fe57e88efb685d964e2e5178a48ed61e841f7fdce/pyyaml_env_tag-1.1-py3-none-any.whl", hash = "sha256:17109e1a528561e32f026364712fee1264bc2ea6715120891174ed1b980d2e04", size = 4722 }, ] [[package]] @@ -1184,7 +1174,7 @@ sdist = { url = "https://files.pythonhosted.org/packages/ab/38/ff60c8fc9e002d50d [[package]] name = "requests" -version = "2.32.3" +version = "2.32.4" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "certifi" }, @@ -1192,9 +1182,9 @@ dependencies = [ { name = "idna" }, { name = "urllib3" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/63/70/2bf7780ad2d390a8d301ad0b550f1581eadbd9a20f896afe06353c2a2913/requests-2.32.3.tar.gz", hash = "sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760", size = 131218 } +sdist = { url = "https://files.pythonhosted.org/packages/e1/0a/929373653770d8a0d7ea76c37de6e41f11eb07559b103b1c02cafb3f7cf8/requests-2.32.4.tar.gz", hash = "sha256:27d0316682c8a29834d3264820024b62a36942083d52caf2f14c0591336d3422", size = 135258 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/9b/335f9764261e915ed497fcdeb11df5dfd6f7bf257d4a6a2a686d80da4d54/requests-2.32.3-py3-none-any.whl", hash = "sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6", size = 64928 }, + { url = "https://files.pythonhosted.org/packages/7c/e4/56027c4a6b4ae70ca9de302488c5ca95ad4a39e190093d6c1a8ace08341b/requests-2.32.4-py3-none-any.whl", hash = "sha256:27babd3cda2a6d50b30443204ee89830707d396671944c998b5975b031ac2b2c", size = 64847 }, ] [[package]] @@ -1212,16 +1202,16 @@ wheels = [ [[package]] name = "rich-click" -version = "1.8.8" +version = "1.8.9" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "click" }, { name = "rich" }, { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/a6/7a/4b78c5997f2a799a8c5c07f3b2145bbcda40115c4d35c76fbadd418a3c89/rich_click-1.8.8.tar.gz", hash = "sha256:547c618dea916620af05d4a6456da797fbde904c97901f44d2f32f89d85d6c84", size = 39066 } +sdist = { url = "https://files.pythonhosted.org/packages/b7/a8/dcc0a8ec9e91d76ecad9413a84b6d3a3310c6111cfe012d75ed385c78d96/rich_click-1.8.9.tar.gz", hash = "sha256:fd98c0ab9ddc1cf9c0b7463f68daf28b4d0033a74214ceb02f761b3ff2af3136", size = 39378 } wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/69/963f0bf44a654f6465bdb66fb5a91051b0d7af9f742b5bd7202607165036/rich_click-1.8.8-py3-none-any.whl", hash = "sha256:205aabd5a98e64ab2c105dee9e368be27480ba004c7dfa2accd0ed44f9f1550e", size = 35747 }, + { url = "https://files.pythonhosted.org/packages/b6/c2/9fce4c8a9587c4e90500114d742fe8ef0fd92d7bad29d136bb9941add271/rich_click-1.8.9-py3-none-any.whl", hash = "sha256:c3fa81ed8a671a10de65a9e20abf642cfdac6fdb882db1ef465ee33919fbcfe2", size = 36082 }, ] [[package]] @@ -1245,8 +1235,7 @@ dependencies = [ { name = "openai" }, { name = "pandas" }, { name = "playwright" }, - { name = "pyqt6" }, - { name = "pyqtgraph" }, + { name = "pyside6" }, { name = "python-docx" }, { name = "pyzotero" }, { name = "ratelimit" }, @@ -1278,8 +1267,7 @@ requires-dist = [ { name = "openai", specifier = ">=1.79.0" }, { name = "pandas", specifier = ">=2.2.3" }, { name = "playwright", specifier = ">=1.49.1" }, - { name = "pyqt6", specifier = ">=6.8.0" }, - { name = "pyqtgraph", specifier = ">=0.13.7" }, + { name = "pyside6", specifier = ">=6.9.1" }, { name = "python-docx", specifier = ">=1.1.2" }, { name = "pyzotero", specifier = ">=1.6.4" }, { name = "ratelimit", specifier = ">=2.2.1" }, @@ -1299,6 +1287,18 @@ version = "1.0.0" source = { registry = "https://pypi.org/simple" } sdist = { url = "https://files.pythonhosted.org/packages/9e/bd/3704a8c3e0942d711c1299ebf7b9091930adae6675d7c8f476a7ce48653c/sgmllib3k-1.0.0.tar.gz", hash = "sha256:7868fb1c8bfa764c1ac563d3cf369c381d1325d36124933a726f29fcdaa812e9", size = 5750 } +[[package]] +name = "shiboken6" +version = "6.9.1" +source = { registry = "https://pypi.org/simple" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/98/98/34d4d25b79055959b171420d47fcc10121aefcbb261c91d5491252830e31/shiboken6-6.9.1-cp39-abi3-macosx_12_0_universal2.whl", hash = "sha256:40e92afc88da06b5100c56b761e59837ff282166e9531268f3d910b6128e621e", size = 406159 }, + { url = "https://files.pythonhosted.org/packages/5a/07/53b2532ecd42ff925feb06b7bb16917f5f99f9c3470f0815c256789d818b/shiboken6-6.9.1-cp39-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:efcdfa8655d34aaf8d7a0c7724def3440bd46db02f5ad3b1785db5f6ccb0a8ff", size = 206756 }, + { url = "https://files.pythonhosted.org/packages/5e/b0/75b86ee3f7b044e6a87fbe7abefd1948ca4ae5fcde8321f4986a1d9eaa5e/shiboken6-6.9.1-cp39-abi3-manylinux_2_39_aarch64.whl", hash = "sha256:efcf75d48a29ae072d0bf54b3cd5a59ae91bb6b3ab7459e17c769355486c2e0b", size = 203233 }, + { url = "https://files.pythonhosted.org/packages/30/56/00af281275aab4c79e22e0ea65feede0a5c6da3b84e86b21a4a0071e0744/shiboken6-6.9.1-cp39-abi3-win_amd64.whl", hash = "sha256:209ccf02c135bd70321143dcbc5023ae0c056aa4850a845955dd2f9b2ff280a9", size = 1153587 }, + { url = "https://files.pythonhosted.org/packages/de/ce/6ccd382fbe1a96926c5514afa6f2c42da3a9a8482e61f8dfc6068a9ca64f/shiboken6-6.9.1-cp39-abi3-win_arm64.whl", hash = "sha256:2a39997ce275ced7853defc89d3a1f19a11c90991ac6eef3435a69bb0b7ff1de", size = 1831623 }, +] + [[package]] name = "six" version = "1.17.0" @@ -1328,11 +1328,11 @@ wheels = [ [[package]] name = "tomlkit" -version = "0.13.2" +version = "0.13.3" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b1/09/a439bec5888f00a54b8b9f05fa94d7f901d6735ef4e55dcec9bc37b5d8fa/tomlkit-0.13.2.tar.gz", hash = "sha256:fff5fe59a87295b278abd31bec92c15d9bc4a06885ab12bcea52c71119392e79", size = 192885 } +sdist = { url = "https://files.pythonhosted.org/packages/cc/18/0bbf3884e9eaa38819ebe46a7bd25dcd56b67434402b66a58c4b8e552575/tomlkit-0.13.3.tar.gz", hash = "sha256:430cf247ee57df2b94ee3fbe588e71d362a941ebb545dec29b53961d61add2a1", size = 185207 } wheels = [ - { url = "https://files.pythonhosted.org/packages/f9/b6/a447b5e4ec71e13871be01ba81f5dfc9d0af7e473da256ff46bc0e24026f/tomlkit-0.13.2-py3-none-any.whl", hash = "sha256:7a974427f6e119197f670fbbbeae7bef749a6c14e793db934baefc1b5f03efde", size = 37955 }, + { url = "https://files.pythonhosted.org/packages/bd/75/8539d011f6be8e29f339c42e633aae3cb73bffa95dd0f9adec09b9c58e85/tomlkit-0.13.3-py3-none-any.whl", hash = "sha256:c89c649d79ee40629a9fda55f8ace8c6a1b42deb912b2a8fd8d942ddadb606b0", size = 38901 }, ] [[package]] @@ -1349,23 +1349,23 @@ wheels = [ [[package]] name = "typing-extensions" -version = "4.13.2" +version = "4.14.0" source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967 } +sdist = { url = "https://files.pythonhosted.org/packages/d1/bc/51647cd02527e87d05cb083ccc402f93e441606ff1f01739a62c8ad09ba5/typing_extensions-4.14.0.tar.gz", hash = "sha256:8676b788e32f02ab42d9e7c61324048ae4c6d844a399eebace3d4979d75ceef4", size = 107423 } wheels = [ - { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806 }, + { url = "https://files.pythonhosted.org/packages/69/e0/552843e0d356fbb5256d21449fa957fa4eff3bbc135a74a691ee70c7c5da/typing_extensions-4.14.0-py3-none-any.whl", hash = "sha256:a1514509136dd0b477638fc68d6a91497af5076466ad0fa6c338e44e359944af", size = 43839 }, ] [[package]] name = "typing-inspection" -version = "0.4.0" +version = "0.4.1" source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "typing-extensions" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.4.0.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 } +sdist = { url = "https://files.pythonhosted.org/packages/f8/b1/0c11f5058406b3af7609f121aaa6b609744687f1d158b3c3a5bf4cc94238/typing_inspection-0.4.1.tar.gz", hash = "sha256:6ae134cc0203c33377d43188d4064e9b357dba58cff3185f22924610e70a9d28", size = 75726 } wheels = [ - { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.4.0-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 }, + { url = "https://files.pythonhosted.org/packages/17/69/cd203477f944c353c31bade965f880aa1061fd6bf05ded0726ca845b6ff7/typing_inspection-0.4.1-py3-none-any.whl", hash = "sha256:389055682238f53b04f7badcb49b989835495a96700ced5dab2d8feae4b26f51", size = 14552 }, ] [[package]]