From fadba5506a0b82cf331a106bcccff6478a3fd32d Mon Sep 17 00:00:00 2001 From: NoisyCoil Date: Sun, 23 Oct 2022 14:09:56 +0200 Subject: [PATCH] Upgraded desktop/{onionshare,tests} to PySide6 --- .gitignore | 1 + cli/tests/test_cli_common.py | 2 +- cli/tests/test_cli_settings.py | 2 +- desktop/onionshare/__init__.py | 8 +- desktop/onionshare/connection_tab.py | 2 +- desktop/onionshare/gui_common.py | 3 +- desktop/onionshare/main_window.py | 10 +- desktop/onionshare/moat_dialog.py | 2 +- desktop/onionshare/settings_parent_tab.py | 2 +- desktop/onionshare/settings_tab.py | 2 +- desktop/onionshare/tab/mode/__init__.py | 2 +- .../onionshare/tab/mode/chat_mode/__init__.py | 2 +- desktop/onionshare/tab/mode/file_selection.py | 4 +- desktop/onionshare/tab/mode/history.py | 2 +- .../tab/mode/mode_settings_widget.py | 2 +- .../tab/mode/receive_mode/__init__.py | 2 +- .../tab/mode/share_mode/__init__.py | 2 +- .../onionshare/tab/mode/share_mode/threads.py | 2 +- .../tab/mode/website_mode/__init__.py | 2 +- desktop/onionshare/tab/server_status.py | 4 +- desktop/onionshare/tab/tab.py | 6 +- desktop/onionshare/tab_widget.py | 12 +- desktop/onionshare/threads.py | 2 +- desktop/onionshare/tor_connection.py | 2 +- desktop/onionshare/tor_settings_tab.py | 4 +- desktop/onionshare/update_checker.py | 2 +- desktop/onionshare/widgets.py | 6 +- desktop/poetry.lock | 118 +++++++++++++----- desktop/pyproject.toml | 2 +- desktop/tests/conftest.py | 4 +- desktop/tests/gui_base_test.py | 2 +- desktop/tests/test_gui_chat.py | 2 +- desktop/tests/test_gui_receive.py | 2 +- desktop/tests/test_gui_share.py | 2 +- desktop/tests/test_gui_tabs.py | 2 +- desktop/tests/test_gui_website.py | 2 +- 36 files changed, 139 insertions(+), 89 deletions(-) diff --git a/.gitignore b/.gitignore index 00bd6ab4..11d627f9 100644 --- a/.gitignore +++ b/.gitignore @@ -58,5 +58,6 @@ venv # other .vscode +.python-version onionshare.dist-info desktop/onionshare/resources/tor diff --git a/cli/tests/test_cli_common.py b/cli/tests/test_cli_common.py index 9a64d762..cac1f3bf 100644 --- a/cli/tests/test_cli_common.py +++ b/cli/tests/test_cli_common.py @@ -151,7 +151,7 @@ class TestGetPlatform: class TestGetTorPaths: - @pytest.mark.skipif(sys.platform != "Darwin", reason="requires MacOS") + @pytest.mark.skipif(sys.platform != "darwin", reason="requires MacOS") def test_get_tor_paths_darwin( self, platform_darwin, common_obj, sys_frozen, sys_meipass ): diff --git a/cli/tests/test_cli_settings.py b/cli/tests/test_cli_settings.py index ead4630b..305e1dbb 100644 --- a/cli/tests/test_cli_settings.py +++ b/cli/tests/test_cli_settings.py @@ -120,7 +120,7 @@ class TestSettings: settings_obj.set("socks_port", "NON_INTEGER") assert settings_obj._settings["socks_port"] == 9050 - @pytest.mark.skipif(sys.platform != "Darwin", reason="requires Darwin") + @pytest.mark.skipif(sys.platform != "darwin", reason="requires Darwin") def test_filename_darwin(self, monkeypatch, platform_darwin): obj = settings.Settings(common.Common()) assert obj.filename == os.path.expanduser( diff --git a/desktop/onionshare/__init__.py b/desktop/onionshare/__init__.py index de68f6f4..a6ac14fb 100644 --- a/desktop/onionshare/__init__.py +++ b/desktop/onionshare/__init__.py @@ -26,10 +26,10 @@ import signal import json import psutil import getpass -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui -from PySide2.QtCore import Slot, Qt -from PySide2.QtGui import QPalette, QColor +from PySide6.QtCore import Slot, Qt +from PySide6.QtGui import QPalette, QColor from onionshare_cli.common import Common from onionshare_cli.settings import Settings @@ -267,4 +267,4 @@ def main(): qtapp.aboutToQuit.connect(shutdown) # All done - sys.exit(qtapp.exec_()) + sys.exit(qtapp.exec()) diff --git a/desktop/onionshare/connection_tab.py b/desktop/onionshare/connection_tab.py index 0ae2d092..452b2b76 100644 --- a/desktop/onionshare/connection_tab.py +++ b/desktop/onionshare/connection_tab.py @@ -20,7 +20,7 @@ along with this program. If not, see . import json import os -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.censorship import ( CensorshipCircumvention, diff --git a/desktop/onionshare/gui_common.py b/desktop/onionshare/gui_common.py index 5c658d38..38f567e2 100644 --- a/desktop/onionshare/gui_common.py +++ b/desktop/onionshare/gui_common.py @@ -21,7 +21,7 @@ along with this program. If not, see . import os import shutil from pkg_resources import resource_filename -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from . import strings from onionshare_cli.onion import ( @@ -602,7 +602,6 @@ class ToggleCheckbox(QtWidgets.QCheckBox): painter.setRenderHint(QtGui.QPainter.Antialiasing) painter.setPen(QtCore.Qt.NoPen) opt = QtWidgets.QStyleOptionButton() - opt.init(self) self.initStyleOption(opt) s = self.style() s.drawControl(QtWidgets.QStyle.CE_CheckBox, opt, painter, self) diff --git a/desktop/onionshare/main_window.py b/desktop/onionshare/main_window.py index 7cad2df1..5eabd103 100644 --- a/desktop/onionshare/main_window.py +++ b/desktop/onionshare/main_window.py @@ -20,7 +20,7 @@ along with this program. If not, see . import os import time -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from . import strings from .widgets import Alert @@ -119,7 +119,7 @@ class MainWindow(QtWidgets.QMainWindow): ) ) ) - sequence = QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_H) + sequence = QtGui.QKeySequence(QtCore.Qt.CTRL | QtCore.Qt.Key_H) self.settings_button.setShortcut(sequence) self.settings_button.setAccessibleName(strings._("gui_settings_window_title")) self.settings_button.clicked.connect(self.open_settings) @@ -191,7 +191,7 @@ class MainWindow(QtWidgets.QMainWindow): a.addButton(settings_button, QtWidgets.QMessageBox.AcceptRole) a.addButton(quit_button, QtWidgets.QMessageBox.RejectRole) a.setDefaultButton(settings_button) - a.exec_() + a.exec() if a.clickedButton() == settings_button: # Open settings @@ -266,7 +266,7 @@ class MainWindow(QtWidgets.QMainWindow): if self.tabs.are_tabs_active(): # Open the warning dialog self.common.log("MainWindow", "closeEvent, opening warning dialog") - self.close_dialog.exec_() + self.close_dialog.exec() # Close if self.close_dialog.clickedButton() == self.close_dialog.accept_button: @@ -314,7 +314,7 @@ class MainWindow(QtWidgets.QMainWindow): self.onion_cleanup_thread.finished.connect(alert.accept) self.onion_cleanup_thread.start() - alert.exec_() + alert.exec() if alert.clickedButton() == quit_early_button: self.common.log("MainWindow", "cleanup", "quitting early") if self.onion_cleanup_thread.isRunning(): diff --git a/desktop/onionshare/moat_dialog.py b/desktop/onionshare/moat_dialog.py index db4bdf29..6e33a047 100644 --- a/desktop/onionshare/moat_dialog.py +++ b/desktop/onionshare/moat_dialog.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui import requests import os import base64 diff --git a/desktop/onionshare/settings_parent_tab.py b/desktop/onionshare/settings_parent_tab.py index 2ade0e05..08815c1d 100644 --- a/desktop/onionshare/settings_parent_tab.py +++ b/desktop/onionshare/settings_parent_tab.py @@ -1,4 +1,4 @@ -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.mode_settings import ModeSettings diff --git a/desktop/onionshare/settings_tab.py b/desktop/onionshare/settings_tab.py index cf2261b6..6f812a51 100644 --- a/desktop/onionshare/settings_tab.py +++ b/desktop/onionshare/settings_tab.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui import platform import datetime from onionshare_cli.settings import Settings diff --git a/desktop/onionshare/tab/mode/__init__.py b/desktop/onionshare/tab/mode/__init__.py index a9fd2a12..ee1cbdd7 100644 --- a/desktop/onionshare/tab/mode/__init__.py +++ b/desktop/onionshare/tab/mode/__init__.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from onionshare_cli.common import AutoStopTimer diff --git a/desktop/onionshare/tab/mode/chat_mode/__init__.py b/desktop/onionshare/tab/mode/chat_mode/__init__.py index af2cab81..aae41dcc 100644 --- a/desktop/onionshare/tab/mode/chat_mode/__init__.py +++ b/desktop/onionshare/tab/mode/chat_mode/__init__.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.web import Web diff --git a/desktop/onionshare/tab/mode/file_selection.py b/desktop/onionshare/tab/mode/file_selection.py index 87d2e087..c03ecaa1 100644 --- a/desktop/onionshare/tab/mode/file_selection.py +++ b/desktop/onionshare/tab/mode/file_selection.py @@ -19,7 +19,7 @@ along with this program. If not, see . """ import os -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from ... import strings from ...widgets import Alert, AddFileDialog @@ -434,7 +434,7 @@ class FileSelection(QtWidgets.QVBoxLayout): Add button clicked. """ file_dialog = AddFileDialog(self.common, caption=strings._("gui_choose_items")) - if file_dialog.exec_() == QtWidgets.QDialog.Accepted: + if file_dialog.exec() == QtWidgets.QDialog.Accepted: self.common.log("FileSelection", "add", file_dialog.selectedFiles()) for filename in file_dialog.selectedFiles(): self.file_list.add_file(filename) diff --git a/desktop/onionshare/tab/mode/history.py b/desktop/onionshare/tab/mode/history.py index d24e53c1..3afdfc15 100644 --- a/desktop/onionshare/tab/mode/history.py +++ b/desktop/onionshare/tab/mode/history.py @@ -22,7 +22,7 @@ import time import subprocess import os from datetime import datetime -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from ... import strings from ...widgets import Alert diff --git a/desktop/onionshare/tab/mode/mode_settings_widget.py b/desktop/onionshare/tab/mode/mode_settings_widget.py index 7545c19e..9a8cd441 100644 --- a/desktop/onionshare/tab/mode/mode_settings_widget.py +++ b/desktop/onionshare/tab/mode/mode_settings_widget.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from ... import strings diff --git a/desktop/onionshare/tab/mode/receive_mode/__init__.py b/desktop/onionshare/tab/mode/receive_mode/__init__.py index 55640c33..f7f3f538 100644 --- a/desktop/onionshare/tab/mode/receive_mode/__init__.py +++ b/desktop/onionshare/tab/mode/receive_mode/__init__.py @@ -19,7 +19,7 @@ along with this program. If not, see . """ import os -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.web import Web diff --git a/desktop/onionshare/tab/mode/share_mode/__init__.py b/desktop/onionshare/tab/mode/share_mode/__init__.py index 2617176d..0142e5a2 100644 --- a/desktop/onionshare/tab/mode/share_mode/__init__.py +++ b/desktop/onionshare/tab/mode/share_mode/__init__.py @@ -19,7 +19,7 @@ along with this program. If not, see . """ import os -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.common import Common from onionshare_cli.web import Web diff --git a/desktop/onionshare/tab/mode/share_mode/threads.py b/desktop/onionshare/tab/mode/share_mode/threads.py index 6b1d96d6..77a5cb6c 100644 --- a/desktop/onionshare/tab/mode/share_mode/threads.py +++ b/desktop/onionshare/tab/mode/share_mode/threads.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore +from PySide6 import QtCore class CompressThread(QtCore.QThread): diff --git a/desktop/onionshare/tab/mode/website_mode/__init__.py b/desktop/onionshare/tab/mode/website_mode/__init__.py index a732c390..8f310d9f 100644 --- a/desktop/onionshare/tab/mode/website_mode/__init__.py +++ b/desktop/onionshare/tab/mode/website_mode/__init__.py @@ -20,7 +20,7 @@ along with this program. If not, see . import os -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.common import Common from onionshare_cli.web import Web diff --git a/desktop/onionshare/tab/server_status.py b/desktop/onionshare/tab/server_status.py index d355b43b..185033c4 100644 --- a/desktop/onionshare/tab/server_status.py +++ b/desktop/onionshare/tab/server_status.py @@ -18,8 +18,8 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ import textwrap -from PySide2 import QtCore, QtWidgets, QtGui -from PySide2.QtCore import Qt +from PySide6 import QtCore, QtWidgets, QtGui +from PySide6.QtCore import Qt from .. import strings from ..widgets import Alert diff --git a/desktop/onionshare/tab/tab.py b/desktop/onionshare/tab/tab.py index 5e2d4af8..50cc0965 100644 --- a/desktop/onionshare/tab/tab.py +++ b/desktop/onionshare/tab/tab.py @@ -19,7 +19,7 @@ along with this program. If not, see . """ import queue -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.onionshare import OnionShare from onionshare_cli.web import Web @@ -45,7 +45,7 @@ class NewTabButton(QtWidgets.QPushButton): self.setFixedSize(280, 280) # Keyboard shortcut, using the first letter of the mode - sequence = QtGui.QKeySequence(QtCore.Qt.CTRL + shortcut) + sequence = QtGui.QKeySequence(QtCore.Qt.CTRL | shortcut) self.setShortcut(sequence) self.setAccessibleName(title) @@ -666,7 +666,7 @@ class Tab(QtWidgets.QWidget): # Open the warning dialog self.common.log("Tab", "close_tab, opening warning dialog") self.close_dialog.setText(dialog_text) - self.close_dialog.exec_() + self.close_dialog.exec() # Close if self.close_dialog.clickedButton() == self.close_dialog.accept_button: diff --git a/desktop/onionshare/tab_widget.py b/desktop/onionshare/tab_widget.py index 8ef88433..749dd790 100644 --- a/desktop/onionshare/tab_widget.py +++ b/desktop/onionshare/tab_widget.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui from onionshare_cli.mode_settings import ModeSettings @@ -55,7 +55,7 @@ class TabWidget(QtWidgets.QTabWidget): # Define the new tab button self.new_tab_button = QtWidgets.QPushButton("+", parent=self) - self.new_tab_button.setShortcut(QtCore.Qt.CTRL + QtCore.Qt.Key_T) + self.new_tab_button.setShortcut(QtCore.Qt.CTRL | QtCore.Qt.Key_T) self.new_tab_button.setFlat(True) self.new_tab_button.setFixedSize(40, 30) self.new_tab_button.clicked.connect(self.new_tab_clicked) @@ -196,8 +196,8 @@ class TabWidget(QtWidgets.QTabWidget): index = self.addTab(tab, strings._("gui_new_tab")) self.setCurrentIndex(index) - sequence = QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_X) - close_shortcut = QtWidgets.QShortcut(sequence, tab) + sequence = QtGui.QKeySequence(QtCore.Qt.CTRL | QtCore.Qt.Key_X) + close_shortcut = QtGui.QShortcut(sequence, tab) close_shortcut.activated.connect(lambda: self.close_tab(index)) tab.init(mode_settings) @@ -249,8 +249,8 @@ class TabWidget(QtWidgets.QTabWidget): from_autoconnect=from_autoconnect, ) settings_tab.close_this_tab.connect(self.close_settings_tab) - sequence = QtGui.QKeySequence(QtCore.Qt.CTRL + QtCore.Qt.Key_X) - close_shortcut = QtWidgets.QShortcut(sequence, settings_tab) + sequence = QtGui.QKeySequence(QtCore.Qt.CTRL | QtCore.Qt.Key_X) + close_shortcut = QtGui.QShortcut(sequence, settings_tab) close_shortcut.activated.connect(self.close_settings_tab) self.tor_settings_tab = settings_tab.tor_settings_tab self.tor_settings_tab.tor_is_connected.connect(self.tor_is_connected) diff --git a/desktop/onionshare/threads.py b/desktop/onionshare/threads.py index 7f445fc1..db0c6145 100644 --- a/desktop/onionshare/threads.py +++ b/desktop/onionshare/threads.py @@ -21,7 +21,7 @@ along with this program. If not, see . import time import json import os -from PySide2 import QtCore +from PySide6 import QtCore from onionshare_cli.onion import ( TorErrorInvalidSetting, diff --git a/desktop/onionshare/tor_connection.py b/desktop/onionshare/tor_connection.py index 839757fd..f87967ef 100644 --- a/desktop/onionshare/tor_connection.py +++ b/desktop/onionshare/tor_connection.py @@ -19,7 +19,7 @@ along with this program. If not, see . """ import time -from PySide2 import QtCore, QtWidgets +from PySide6 import QtCore, QtWidgets from onionshare_cli.onion import ( BundledTorCanceled, diff --git a/desktop/onionshare/tor_settings_tab.py b/desktop/onionshare/tor_settings_tab.py index 0e72c3b8..1b097773 100644 --- a/desktop/onionshare/tor_settings_tab.py +++ b/desktop/onionshare/tor_settings_tab.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui import sys import platform import os @@ -579,7 +579,7 @@ class TorSettingsTab(QtWidgets.QWidget): moat_dialog = MoatDialog(self.common, self.meek) moat_dialog.got_bridges.connect(self.bridge_moat_got_bridges) - moat_dialog.exec_() + moat_dialog.exec() def bridge_moat_got_bridges(self, bridges): """ diff --git a/desktop/onionshare/update_checker.py b/desktop/onionshare/update_checker.py index 71095356..6d0662a1 100644 --- a/desktop/onionshare/update_checker.py +++ b/desktop/onionshare/update_checker.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore +from PySide6 import QtCore import datetime import re import socks diff --git a/desktop/onionshare/widgets.py b/desktop/onionshare/widgets.py index 64a07703..e96f3dd9 100644 --- a/desktop/onionshare/widgets.py +++ b/desktop/onionshare/widgets.py @@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License along with this program. If not, see . """ -from PySide2 import QtCore, QtWidgets, QtGui +from PySide6 import QtCore, QtWidgets, QtGui import qrcode from . import strings @@ -52,7 +52,7 @@ class Alert(QtWidgets.QMessageBox): self.setStandardButtons(buttons) if autostart: - self.exec_() + self.exec() class AddFileDialog(QtWidgets.QFileDialog): @@ -153,4 +153,4 @@ class QRCodeDialog(QtWidgets.QDialog): layout.addWidget(self.qr_label_title) layout.addWidget(self.qr_label) - self.exec_() + self.exec() diff --git a/desktop/poetry.lock b/desktop/poetry.lock index cec8bb98..ac398344 100644 --- a/desktop/poetry.lock +++ b/desktop/poetry.lock @@ -10,7 +10,7 @@ python-versions = ">=3.5" dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy (>=0.900,!=0.940)", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "sphinx", "sphinx-notfound-page", "zope.interface"] docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "zope.interface"] -tests_no_zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] +tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy (>=0.900,!=0.940)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins"] [[package]] name = "bidict" @@ -71,7 +71,7 @@ optional = false python-versions = ">=3.6.0" [package.extras] -unicode_backport = ["unicodedata2"] +unicode-backport = ["unicodedata2"] [[package]] name = "click" @@ -97,7 +97,7 @@ python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" name = "cx-Freeze" version = "6.11.1" description = "Create standalone executables from Python scripts" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -118,7 +118,7 @@ test = ["nose (==1.3.7)", "pygments (>=2.11.2)", "pytest (>=7.0.1)", "pytest-cov name = "cx-Logging" version = "3.0" description = "Python and C interfaces for logging" -category = "main" +category = "dev" optional = false python-versions = "*" @@ -284,7 +284,7 @@ i18n = ["Babel (>=2.7)"] name = "lief" version = "0.12.2" description = "Library to instrument executable formats" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -338,7 +338,7 @@ url = "../cli" name = "packaging" version = "21.3" description = "Core utilities for Python packages" -category = "main" +category = "dev" optional = false python-versions = ">=3.6" @@ -349,7 +349,7 @@ pyparsing = ">=2.0.2,<3.0.5 || >3.0.5" name = "patchelf" version = "0.15.0.0" description = "A small utility to modify the dynamic linker and RPATH of ELF executables." -category = "main" +category = "dev" optional = false python-versions = "*" @@ -437,7 +437,7 @@ tests = ["hypothesis (>=3.27.0)", "pytest (>=3.2.1,!=3.3.0)"] name = "pyparsing" version = "3.0.9" description = "pyparsing module - Classes and methods to define and execute parsing grammars" -category = "main" +category = "dev" optional = false python-versions = ">=3.6.8" @@ -445,15 +445,40 @@ python-versions = ">=3.6.8" diagrams = ["jinja2", "railroad-diagrams"] [[package]] -name = "PySide2" -version = "5.15.2.1" +name = "pyside6" +version = "6.4.0" description = "Python bindings for the Qt cross-platform application and UI framework" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.11" +python-versions = "<3.11,>=3.6" [package.dependencies] -shiboken2 = "5.15.2.1" +PySide6-Addons = "6.4.0" +PySide6-Essentials = "6.4.0" +shiboken6 = "6.4.0" + +[[package]] +name = "pyside6-addons" +version = "6.4.0" +description = "Python bindings for the Qt cross-platform application and UI framework (Addons)" +category = "main" +optional = false +python-versions = "<3.11,>=3.6" + +[package.dependencies] +PySide6-Essentials = "6.4.0" +shiboken6 = "6.4.0" + +[[package]] +name = "pyside6-essentials" +version = "6.4.0" +description = "Python bindings for the Qt cross-platform application and UI framework (Essentials)" +category = "main" +optional = false +python-versions = "<3.11,>=3.6" + +[package.dependencies] +shiboken6 = "6.4.0" [[package]] name = "PySocks" @@ -519,7 +544,7 @@ optional = false python-versions = ">=3.6" [package.extras] -asyncio_client = ["aiohttp (>=3.4)"] +asyncio-client = ["aiohttp (>=3.4)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] [[package]] @@ -535,7 +560,7 @@ bidict = ">=0.21.0" python-engineio = ">=4.3.0" [package.extras] -asyncio_client = ["aiohttp (>=3.4)"] +asyncio-client = ["aiohttp (>=3.4)"] client = ["requests (>=2.21.0)", "websocket-client (>=0.54.0)"] [[package]] @@ -573,7 +598,7 @@ urllib3 = ">=1.21.1,<1.27" [package.extras] socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use_chardet_on_py3 = ["chardet (>=3.0.2,<6)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] [[package]] name = "setuptools" @@ -589,12 +614,12 @@ testing = ["build[virtualenv]", "filelock (>=3.4.0)", "flake8-2020", "jaraco.env testing-integration = ["build[virtualenv]", "filelock (>=3.4.0)", "jaraco.envs (>=2.2)", "jaraco.path (>=3.2.0)", "pytest", "pytest-enabler", "pytest-xdist", "tomli", "virtualenv (>=13.0.0)", "wheel"] [[package]] -name = "shiboken2" -version = "5.15.2.1" -description = "Python / C++ bindings helper module" +name = "shiboken6" +version = "6.4.0" +description = "Python/C++ bindings helper module" category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, <3.11" +python-versions = "<3.11,>=3.6" [[package]] name = "six" @@ -714,7 +739,7 @@ testing = ["coverage (>=5.0.3)", "zope.event", "zope.testing"] [metadata] lock-version = "1.1" python-versions = ">=3.7,<3.11" -content-hash = "d286430543c9781f7f12dbcc71dc52f7737c06b32be277436de7d79d35b77626" +content-hash = "7a9668ef487d9cdc4760a9b6cd28cd99dc76b06069186db4f14f9b6f1c4f57d6" [metadata.files] attrs = [ @@ -726,14 +751,23 @@ bidict = [ {file = "bidict-0.22.0.tar.gz", hash = "sha256:5c826b3e15e97cc6e615de295756847c282a79b79c5430d3bfc909b1ac9f5bd8"}, ] black = [ + {file = "black-22.10.0-1fixedarch-cp310-cp310-macosx_11_0_x86_64.whl", hash = "sha256:5cc42ca67989e9c3cf859e84c2bf014f6633db63d1cbdf8fdb666dcd9e77e3fa"}, + {file = "black-22.10.0-1fixedarch-cp311-cp311-macosx_11_0_x86_64.whl", hash = "sha256:5d8f74030e67087b219b032aa33a919fae8806d49c867846bfacde57f43972ef"}, + {file = "black-22.10.0-1fixedarch-cp37-cp37m-macosx_10_16_x86_64.whl", hash = "sha256:197df8509263b0b8614e1df1756b1dd41be6738eed2ba9e9769f3880c2b9d7b6"}, + {file = "black-22.10.0-1fixedarch-cp38-cp38-macosx_10_16_x86_64.whl", hash = "sha256:2644b5d63633702bc2c5f3754b1b475378fbbfb481f62319388235d0cd104c2d"}, + {file = "black-22.10.0-1fixedarch-cp39-cp39-macosx_11_0_x86_64.whl", hash = "sha256:e41a86c6c650bcecc6633ee3180d80a025db041a8e2398dcc059b3afa8382cd4"}, + {file = "black-22.10.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:2039230db3c6c639bd84efe3292ec7b06e9214a2992cd9beb293d639c6402edb"}, {file = "black-22.10.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:14ff67aec0a47c424bc99b71005202045dc09270da44a27848d534600ac64fc7"}, {file = "black-22.10.0-cp310-cp310-win_amd64.whl", hash = "sha256:819dc789f4498ecc91438a7de64427c73b45035e2e3680c92e18795a839ebb66"}, + {file = "black-22.10.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5b9b29da4f564ba8787c119f37d174f2b69cdfdf9015b7d8c5c16121ddc054ae"}, {file = "black-22.10.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b8b49776299fece66bffaafe357d929ca9451450f5466e997a7285ab0fe28e3b"}, {file = "black-22.10.0-cp311-cp311-win_amd64.whl", hash = "sha256:21199526696b8f09c3997e2b4db8d0b108d801a348414264d2eb8eb2532e540d"}, {file = "black-22.10.0-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1e464456d24e23d11fced2bc8c47ef66d471f845c7b7a42f3bd77bf3d1789650"}, {file = "black-22.10.0-cp37-cp37m-win_amd64.whl", hash = "sha256:9311e99228ae10023300ecac05be5a296f60d2fd10fff31cf5c1fa4ca4b1988d"}, + {file = "black-22.10.0-cp38-cp38-macosx_11_0_arm64.whl", hash = "sha256:fba8a281e570adafb79f7755ac8721b6cf1bbf691186a287e990c7929c7692ff"}, {file = "black-22.10.0-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:915ace4ff03fdfff953962fa672d44be269deb2eaf88499a0f8805221bc68c87"}, {file = "black-22.10.0-cp38-cp38-win_amd64.whl", hash = "sha256:444ebfb4e441254e87bad00c661fe32df9969b2bf224373a448d8aca2132b395"}, + {file = "black-22.10.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:974308c58d057a651d182208a484ce80a26dac0caef2895836a92dd6ebd725e0"}, {file = "black-22.10.0-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:72ef3925f30e12a184889aac03d77d031056860ccae8a1e519f6cbb742736383"}, {file = "black-22.10.0-cp39-cp39-win_amd64.whl", hash = "sha256:432247333090c8c5366e69627ccb363bc58514ae3e63f7fc75c54b1ea80fa7de"}, {file = "black-22.10.0-py3-none-any.whl", hash = "sha256:c957b2b4ea88587b46cf49d1dc17681c1e672864fd7af32fc1e9664d572b3458"}, @@ -1149,13 +1183,29 @@ pyparsing = [ {file = "pyparsing-3.0.9-py3-none-any.whl", hash = "sha256:5026bae9a10eeaefb61dab2f09052b9f4307d44aee4eda64b309723d8d206bbc"}, {file = "pyparsing-3.0.9.tar.gz", hash = "sha256:2b020ecf7d21b687f219b71ecad3631f644a47f01403fa1d1036b0c6416d70fb"}, ] -PySide2 = [ - {file = "PySide2-5.15.2.1-5.15.2-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:b5e1d92f26b0bbaefff67727ccbb2e1b577f2c0164b349b3d6e80febb4c5bde2"}, - {file = "PySide2-5.15.2.1-5.15.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:235240b6ec8206d9fdf0232472c6ef3241783d480425e5b54796f06e39ed23da"}, - {file = "PySide2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-abi3-macosx_10_13_intel.whl", hash = "sha256:a9e2e6bbcb5d2ebb421e46e72244a0f4fe0943b2288115f80a863aacc1de1f06"}, - {file = "PySide2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-abi3-manylinux1_x86_64.whl", hash = "sha256:23886c6391ebd916e835fa1b5ae66938048504fd3a2934ae3189a96cd5ac0b46"}, - {file = "PySide2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-none-win32.whl", hash = "sha256:439509e53cfe05abbf9a99422a2cbad086408b0f9bf5e6f642ff1b13b1f8b055"}, - {file = "PySide2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-none-win_amd64.whl", hash = "sha256:af6b263fe63ba6dea7eaebae80aa7b291491fe66f4f0057c0aafe780cc83da9d"}, +pyside6 = [ + {file = "PySide6-6.4.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:eeed99066628c44113c21ba5eccd6c229d8f7ee65834a7fc45c64b0e636c606d"}, + {file = "PySide6-6.4.0-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:d7824b1f0c346e8db03870fa8dc5e13b18bc746a9dfabbc69c85529e85903408"}, + {file = "PySide6-6.4.0-cp36-abi3-win_amd64.whl", hash = "sha256:5df15003f0b12ed5c4c4f321ffa381784a2425441b2bd6c671d824bb03efdf2a"}, + {file = "PySide6-6.4.0-pp39-pypy39_pp73-macosx_10_9_universal2.whl", hash = "sha256:e8702ff398b7fe395a3b9f0020b8d2910ab4fcea50f259f93e936409fd367c4b"}, + {file = "PySide6-6.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:1b388e3fc87ebcad7ecaad751c5560625425efea4e56d553a4caa07032865c86"}, + {file = "PySide6-6.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:f5220d57db6890546adf81669129da6bb46546a01bf618ec58fa1e7a69d0b52c"}, +] +pyside6-addons = [ + {file = "PySide6_Addons-6.4.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:aceb568a684b88114c8928247019a9ffc3e133c4fe7722c7ce62224db338b335"}, + {file = "PySide6_Addons-6.4.0-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:236b0dbaefc03114fc1deeee0041808d64a76650b643cf9ee9d8587e3ba9059a"}, + {file = "PySide6_Addons-6.4.0-cp36-abi3-win_amd64.whl", hash = "sha256:f060df71d64bc6d88651fc51b081de26de6a1c9308f14b021943056d70e20552"}, + {file = "PySide6_Addons-6.4.0-pp39-pypy39_pp73-macosx_10_9_universal2.whl", hash = "sha256:804f2a73560dffb390f91a1fbd6f33440b1f96ce8d74e19cc893952e2e8c8966"}, + {file = "PySide6_Addons-6.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:59b3507db48b67707971b163aa8832beab902688288c64ffbfb2be6c487f5ec4"}, + {file = "PySide6_Addons-6.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:e9c108184094c54f1c7cd456ed5294a9da696d036b7079c07b2ee4a52aa0980c"}, +] +pyside6-essentials = [ + {file = "PySide6_Essentials-6.4.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:6e11d3a7fe013bb5b259066755983378d4ae2f582e5935fd5950c3dcfa0c3ec6"}, + {file = "PySide6_Essentials-6.4.0-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:526434fb2ca94e54d07a7605716e4fb2e1b642440bce32c80a39e847e1710e65"}, + {file = "PySide6_Essentials-6.4.0-cp36-abi3-win_amd64.whl", hash = "sha256:576704ff198a4aa4748bc99ac1e3fcd2425d7651f44214e93cd99be37cf4d305"}, + {file = "PySide6_Essentials-6.4.0-pp39-pypy39_pp73-macosx_10_9_universal2.whl", hash = "sha256:ff744c614e5fb8e536c632ab51811a5e27641ef546364b7bdd2d0320b4115d83"}, + {file = "PySide6_Essentials-6.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:f7aa59dbf3aa1349f7559f5aa99f2e6e4845a3fc5af0ee602b4e5f1f666cf47f"}, + {file = "PySide6_Essentials-6.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:3b82f238c015f13840eb0e61167a3f776ce62fa4704ba2f329658a35c46daacb"}, ] PySocks = [ {file = "PySocks-1.7.1-py27-none-any.whl", hash = "sha256:08e69f092cc6dbe92a0fdd16eeb9b9ffbc13cadfe5ca4c7bd92ffb078b293299"}, @@ -1193,13 +1243,13 @@ setuptools = [ {file = "setuptools-60.10.0-py3-none-any.whl", hash = "sha256:782ef48d58982ddb49920c11a0c5c9c0b02e7d7d1c2ad0aa44e1a1e133051c96"}, {file = "setuptools-60.10.0.tar.gz", hash = "sha256:6599055eeb23bfef457d5605d33a4d68804266e6cb430b0fb12417c5efeae36c"}, ] -shiboken2 = [ - {file = "shiboken2-5.15.2.1-5.15.2-cp27-cp27m-macosx_10_13_intel.whl", hash = "sha256:f890f5611ab8f48b88cfecb716da2ac55aef99e2923198cefcf781842888ea65"}, - {file = "shiboken2-5.15.2.1-5.15.2-cp27-cp27mu-manylinux1_x86_64.whl", hash = "sha256:87079c07587859a525b9800d60b1be971338ce9b371d6ead81f15ee5a46d448b"}, - {file = "shiboken2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-abi3-macosx_10_13_intel.whl", hash = "sha256:ffd3d0ec3d508e592d7ee3885d27fee1f279a49989f734eb130f46d9501273a9"}, - {file = "shiboken2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-abi3-manylinux1_x86_64.whl", hash = "sha256:63debfcc531b6a2b4985aa9b71433d2ad3bac542acffc729cc0ecaa3854390c0"}, - {file = "shiboken2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-none-win32.whl", hash = "sha256:eb0da44b6fa60c6bd317b8f219e500595e94e0322b33ec5b4e9f406bedaee555"}, - {file = "shiboken2-5.15.2.1-5.15.2-cp35.cp36.cp37.cp38.cp39.cp310-none-win_amd64.whl", hash = "sha256:a0d0fdeb12b72c8af349b9642ccc67afd783dca449309f45e78cda50272fd6b7"}, +shiboken6 = [ + {file = "shiboken6-6.4.0-cp36-abi3-macosx_10_9_universal2.whl", hash = "sha256:76ba24af98eb15cbdfb483142696c5ae22537d2df84c06b44eb1ab66280b29b4"}, + {file = "shiboken6-6.4.0-cp36-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:67b4731c55f5d74a72bede9a84691d64664cf7e1e76b606f58b39c8a61ea563d"}, + {file = "shiboken6-6.4.0-cp36-abi3-win_amd64.whl", hash = "sha256:a572a5782c65c1f77ba1da92955e25f0af56c27832cf405eae246aee0e4c1575"}, + {file = "shiboken6-6.4.0-pp39-pypy39_pp73-macosx_10_9_universal2.whl", hash = "sha256:cfd5f6c64793ecae2617f9bdbe726376583f56db1ab62ebaef43442e5695425a"}, + {file = "shiboken6-6.4.0-pp39-pypy39_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:679870d97665b21fca018b05023c7b90b895e886adba754d8cc5d06d571a2139"}, + {file = "shiboken6-6.4.0-pp39-pypy39_pp73-win_amd64.whl", hash = "sha256:30bbd06fc6564a57552792e3fc9e7c85c0881d0036c5f0f0daee3054e3d727b9"}, ] six = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, diff --git a/desktop/pyproject.toml b/desktop/pyproject.toml index bb4ae5f6..166926ec 100644 --- a/desktop/pyproject.toml +++ b/desktop/pyproject.toml @@ -8,9 +8,9 @@ license = "GPLv3+" [tool.poetry.dependencies] python = ">=3.7,<3.11" onionshare_cli = {path = "../cli", develop = true} -PySide2 = "5.15.2.1" qrcode = "*" werkzeug = "~2.0.3" +pyside6 = "^6.4.0" [tool.poetry.dev-dependencies] click = "*" diff --git a/desktop/tests/conftest.py b/desktop/tests/conftest.py index 9e867985..73517e62 100644 --- a/desktop/tests/conftest.py +++ b/desktop/tests/conftest.py @@ -2,7 +2,7 @@ import sys import os from datetime import datetime, timedelta -from PySide2 import QtTest +from PySide6 import QtTest # Force tests to look for resources in the source code tree @@ -19,7 +19,7 @@ def qWait(t, qtapp): qtapp.processEvents() -# Monkeypatch qWait, because PySide2 doesn't have it +# Monkeypatch qWait, although PySide6 has it # https://stackoverflow.com/questions/17960159/qwait-analogue-in-pyside QtTest.QTest.qWait = qWait diff --git a/desktop/tests/gui_base_test.py b/desktop/tests/gui_base_test.py index fdfdc15f..9180348d 100644 --- a/desktop/tests/gui_base_test.py +++ b/desktop/tests/gui_base_test.py @@ -7,7 +7,7 @@ import secrets import platform import sys -from PySide2 import QtCore, QtTest, QtWidgets +from PySide6 import QtCore, QtTest, QtWidgets from onionshare_cli.common import Common diff --git a/desktop/tests/test_gui_chat.py b/desktop/tests/test_gui_chat.py index ee6c0787..1b5e4e6d 100644 --- a/desktop/tests/test_gui_chat.py +++ b/desktop/tests/test_gui_chat.py @@ -1,6 +1,6 @@ import requests -from PySide2 import QtTest +from PySide6 import QtTest from .gui_base_test import GuiBaseTest diff --git a/desktop/tests/test_gui_receive.py b/desktop/tests/test_gui_receive.py index 3921c6a2..11f2d609 100644 --- a/desktop/tests/test_gui_receive.py +++ b/desktop/tests/test_gui_receive.py @@ -6,7 +6,7 @@ import shutil import sys from datetime import datetime, timedelta -from PySide2 import QtCore, QtTest +from PySide6 import QtCore, QtTest from .gui_base_test import GuiBaseTest diff --git a/desktop/tests/test_gui_share.py b/desktop/tests/test_gui_share.py index ba175fa9..02d50e4b 100644 --- a/desktop/tests/test_gui_share.py +++ b/desktop/tests/test_gui_share.py @@ -3,7 +3,7 @@ import requests import tempfile import zipfile -from PySide2 import QtCore, QtTest +from PySide6 import QtCore, QtTest from .gui_base_test import GuiBaseTest diff --git a/desktop/tests/test_gui_tabs.py b/desktop/tests/test_gui_tabs.py index 09f38bb4..b0e24666 100644 --- a/desktop/tests/test_gui_tabs.py +++ b/desktop/tests/test_gui_tabs.py @@ -1,6 +1,6 @@ import os -from PySide2 import QtCore, QtTest, QtWidgets +from PySide6 import QtCore, QtTest, QtWidgets from .gui_base_test import GuiBaseTest diff --git a/desktop/tests/test_gui_website.py b/desktop/tests/test_gui_website.py index a46e21a9..80093553 100644 --- a/desktop/tests/test_gui_website.py +++ b/desktop/tests/test_gui_website.py @@ -1,6 +1,6 @@ import requests -from PySide2 import QtTest +from PySide6 import QtTest from .gui_base_test import GuiBaseTest