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 @@
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" -"- Datenbank
\n" -"- Zotero Integration
\n" -"- KI Integration
\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' + '- Datenbank
\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]]