From d725f5cea2055f8a9084a489c1c8c0cbf5724d0d1c0cdb3726fbf10ad53f6481 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Sun, 10 Apr 2022 21:49:55 +0000 Subject: [PATCH 1/2] Accepting request 968074 from home:bnavigator:branches:devel:languages:python:numeric - Update to 2.0.1 * PR: Add missing imports in QtOpenGL by @renefritze in #307 * PR: Add missing QtGui utility function to QtCore.Qt for PySide bindings by @dalthviz in #313 * PR: Add mapping for missing enum values aliases on QtCore.Qt by @dalthviz in #314 * PR: Fix mappings of instance method and slot alias (PyQt6 and PySide6) by @kumattau in #308 * PR: Add QtCharts alias for backward compatibility with 1.x by @dalthviz in #315 * PR: Promote enum aliases by @MatthieuDartiailh in #319 * PR: Add missing tests for aliased methods by @dalthviz in #317 - Release 2.0.0 * PR: Add support for PySide6 by @jschueller in #225 * PR: Add QShortcut class to QtWidgets module by @kumattau in #254 * PR: Remove Qt4 support by @jschueller in #252 * PR: Drop Python 2 by @dalthviz in #251 * PR: Fix fallback API by @benoit-pierre in #256 * PR: Add additional Qt modules and more support and tests for PyQt6/PySide6 by @jschueller in #255 * PR: Reorganize QtCharts module import and add missing skip validation for QtNetworkAuth test with PyQt6 by @dalthviz in #260 * PR: [PyQt6] Add exec_/print_, and add QOpenGLWidget/QShortcut to QtWidgets by @kumattau in #259 * PR: Remove accidentally-duplicated lines of code in QtCore by @kumattau in #263 * PR: [PyQt6] Add missing tabStopWidth/setTabStopWidth same as PySide6 by @kumattau in #264 * PR: Use modern packaging instead of deprecated distutils for version parse by @CAM-Gerlach in #266 * PR: Unify and cleanup CI infra, improve robustness and test Python 3.9 and PyQt6 by @CAM-Gerlach in #262 * PR: Fix and improve Coveralls reporting by @CAM-Gerlach in #268 * PR: Avoid future deprecations and decrease general technical debt by @CAM-Gerlach in #273 * PR: Fix regression in FORCE_QT_API behavior from merging PySide6 support by @tlambert03 in #276 * PR: Add back legacy PYQT4 and PYSIDE package-level constants for compat by @CAM-Gerlach in #279 * PR: Add Contributing Guide based on other Spyder projects by @CAM-Gerlach in #277 * PR: Update README sponsors section by @dalthviz in #282 * PR: Unscoped enums access for PyQt6 and other missing PyQt6 compatibility changes by @dalthviz in #271 * PR: Upgrade packaging to avoid legacy/deprecated behavior and follow PEP 517 by @CAM-Gerlach in #272 * PR: Map exec_ to their non-deprecated alternatives by @kumattau in #287 * PR: Add QtTextToSpeech Module by @kumattau in #291 * PR: Import all classes in QtTest module. by @kumattau in #290 * PR: Define Qt/binding versions at top level, fix warnings if versions not found, and fix test dir on CIs by @CAM-Gerlach in #292 * PR: Update gitignore, gitattributes, license, authors and security policy by @CAM-Gerlach in #278 * PR: Add minimum version check for Qt6 >=6.2.0 by @CAM-Gerlach in #294 * PR: Add support for Python 3.10 on CIs and packaging by @CAM-Gerlach in #296 * PR: Make QLibraryInfo.location work for PyQt6 by @stonebig in #298 * PR: 'width' needed for PyQt6 by @stonebig in #299 * PR: Update README.md adding a line for QtPy usefulness when migrating between Qt bindings/versions by @dalthviz in #301 * PR: Fix QFileSystemModel for PyQt6 by @almarklein in #303 - Release 1.11.3 * PR: Catch PythonQtError when trying to do alias for QtDataVisualization and dev version correction by @dalthviz in #281 * PR: Add a warning for developers still running legacy Qt4-based APIs by @CAM-Gerlach in #283 * PR: Import Callable and MutableMapping in py3compat for Python 2 compat by @davvid in #285 * PR: Add warning for deprecated/EoL Qt5 & PyQt5/PySide2 versions to fix #284 by @CAM-Gerlach in #289 * PR: Update RELEASE.md for 1.x version by @dalthviz in #293 - Release 1.11.2 * Issue 248 - Missing QtDataVisualization (PR 249 by @dalthviz) OBS-URL: https://build.opensuse.org/request/show/968074 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-QtPy?expand=0&rev=33 --- QtPy-1.11.1.tar.gz | 3 -- QtPy-2.0.1.tar.gz | 3 ++ python-QtPy.changes | 84 +++++++++++++++++++++++++++++++++++++++++++++ python-QtPy.spec | 67 ++++++++++++++++++++++-------------- 4 files changed, 129 insertions(+), 28 deletions(-) delete mode 100644 QtPy-1.11.1.tar.gz create mode 100644 QtPy-2.0.1.tar.gz diff --git a/QtPy-1.11.1.tar.gz b/QtPy-1.11.1.tar.gz deleted file mode 100644 index 2e8379f..0000000 --- a/QtPy-1.11.1.tar.gz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:d471fcb9cf96315b564ad3b42ca830d0286d1049d6a44c578d3dc3836381bb91 -size 37068 diff --git a/QtPy-2.0.1.tar.gz b/QtPy-2.0.1.tar.gz new file mode 100644 index 0000000..f8885cf --- /dev/null +++ b/QtPy-2.0.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:adfd073ffbd2de81dc7aaa0b983499ef5c59c96adcfdcc9dea60d42ca885eb8f +size 43047 diff --git a/python-QtPy.changes b/python-QtPy.changes index 6d161b6..82e00f6 100644 --- a/python-QtPy.changes +++ b/python-QtPy.changes @@ -1,3 +1,87 @@ +------------------------------------------------------------------- +Sat Apr 9 20:48:40 UTC 2022 - Ben Greiner + +- Update to 2.0.1 + * PR: Add missing imports in QtOpenGL by @renefritze in #307 + * PR: Add missing QtGui utility function to QtCore.Qt for PySide + bindings by @dalthviz in #313 + * PR: Add mapping for missing enum values aliases on QtCore.Qt by + @dalthviz in #314 + * PR: Fix mappings of instance method and slot alias (PyQt6 and + PySide6) by @kumattau in #308 + * PR: Add QtCharts alias for backward compatibility with 1.x by + @dalthviz in #315 + * PR: Promote enum aliases by @MatthieuDartiailh in #319 + * PR: Add missing tests for aliased methods by @dalthviz in #317 +- Release 2.0.0 + * PR: Add support for PySide6 by @jschueller in #225 + * PR: Add QShortcut class to QtWidgets module by @kumattau in + #254 + * PR: Remove Qt4 support by @jschueller in #252 + * PR: Drop Python 2 by @dalthviz in #251 + * PR: Fix fallback API by @benoit-pierre in #256 + * PR: Add additional Qt modules and more support and tests for + PyQt6/PySide6 by @jschueller in #255 + * PR: Reorganize QtCharts module import and add missing skip + validation for QtNetworkAuth test with PyQt6 by @dalthviz in + #260 + * PR: [PyQt6] Add exec_/print_, and add QOpenGLWidget/QShortcut + to QtWidgets by @kumattau in #259 + * PR: Remove accidentally-duplicated lines of code in QtCore by + @kumattau in #263 + * PR: [PyQt6] Add missing tabStopWidth/setTabStopWidth same as + PySide6 by @kumattau in #264 + * PR: Use modern packaging instead of deprecated distutils for + version parse by @CAM-Gerlach in #266 + * PR: Unify and cleanup CI infra, improve robustness and test + Python 3.9 and PyQt6 by @CAM-Gerlach in #262 + * PR: Fix and improve Coveralls reporting by @CAM-Gerlach in #268 + * PR: Avoid future deprecations and decrease general technical + debt by @CAM-Gerlach in #273 + * PR: Fix regression in FORCE_QT_API behavior from merging + PySide6 support by @tlambert03 in #276 + * PR: Add back legacy PYQT4 and PYSIDE package-level constants + for compat by @CAM-Gerlach in #279 + * PR: Add Contributing Guide based on other Spyder projects by + @CAM-Gerlach in #277 + * PR: Update README sponsors section by @dalthviz in #282 + * PR: Unscoped enums access for PyQt6 and other missing PyQt6 + compatibility changes by @dalthviz in #271 + * PR: Upgrade packaging to avoid legacy/deprecated behavior and + follow PEP 517 by @CAM-Gerlach in #272 + * PR: Map exec_ to their non-deprecated alternatives by @kumattau + in #287 + * PR: Add QtTextToSpeech Module by @kumattau in #291 + * PR: Import all classes in QtTest module. by @kumattau in #290 + * PR: Define Qt/binding versions at top level, fix warnings if + versions not found, and fix test dir on CIs by @CAM-Gerlach in + #292 + * PR: Update gitignore, gitattributes, license, authors and + security policy by @CAM-Gerlach in #278 + * PR: Add minimum version check for Qt6 >=6.2.0 by @CAM-Gerlach + in #294 + * PR: Add support for Python 3.10 on CIs and packaging by + @CAM-Gerlach in #296 + * PR: Make QLibraryInfo.location work for PyQt6 by @stonebig in + #298 + * PR: 'width' needed for PyQt6 by @stonebig in #299 + * PR: Update README.md adding a line for QtPy usefulness when + migrating between Qt bindings/versions by @dalthviz in #301 + * PR: Fix QFileSystemModel for PyQt6 by @almarklein in #303 +- Release 1.11.3 + * PR: Catch PythonQtError when trying to do alias for + QtDataVisualization and dev version correction by @dalthviz in + #281 + * PR: Add a warning for developers still running legacy Qt4-based + APIs by @CAM-Gerlach in #283 + * PR: Import Callable and MutableMapping in py3compat for Python + 2 compat by @davvid in #285 + * PR: Add warning for deprecated/EoL Qt5 & PyQt5/PySide2 versions + to fix #284 by @CAM-Gerlach in #289 + * PR: Update RELEASE.md for 1.x version by @dalthviz in #293 +- Release 1.11.2 + * Issue 248 - Missing QtDataVisualization (PR 249 by @dalthviz) + ------------------------------------------------------------------- Tue Sep 14 11:06:30 UTC 2021 - Ben Greiner diff --git a/python-QtPy.spec b/python-QtPy.spec index 2c10969..e736fd3 100644 --- a/python-QtPy.spec +++ b/python-QtPy.spec @@ -1,7 +1,7 @@ # # spec file for package python-QtPy # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,38 +16,52 @@ # -%{?!python_module:%define python_module() python-%{**} python3-%{**}} -%bcond_without python2 +%bcond_without pyqt6 +# unfortunately we get a segfault in the PyQt5 test suite when pyside6 is installed (!?) +%bcond_with pyside6 + +%{?!python_module:%define python_module() python3-%{**}} +%define skip_python2 1 Name: python-QtPy -Version: 1.11.1 +Version: 2.0.1 Release: 0 Summary: Abstraction layer on top of Qt bindings License: MIT Group: Development/Languages/Python URL: https://github.com/spyder-ide/qtpy Source: https://files.pythonhosted.org/packages/source/Q/QtPy/QtPy-%{version}.tar.gz +BuildRequires: %{python_module packaging} BuildRequires: %{python_module setuptools} BuildRequires: fdupes BuildRequires: python-rpm-macros +Requires: python-packaging # Note: Don't add any Requires, Recommends, or Suggests here, # because we need to minimize the space occupied on the # Tumbleweed DVD. The application importing QtPy will have to # know what backend to recommend and what extras to require (e.g. # qtwebengine). Note that setup.py does not declare any requirements, -# either. +# in this regard either. BuildArch: noarch # SECTION test requirements -%if %{with python2} -BuildRequires: python2-mock -%endif -BuildRequires: %{python_module pytest} +BuildRequires: %{python_module pytest >= 6} +BuildRequires: %{python_module pytest-qt} BuildRequires: %{python_module qt3d-qt5} BuildRequires: %{python_module qt5} BuildRequires: %{python_module qtcharts-qt5} BuildRequires: %{python_module qtdatavis3d-qt5} BuildRequires: %{python_module qtwebengine-qt5} BuildRequires: python3-pyside2 -BuildRequires: xvfb-run +%if %{with pyqt6} +BuildRequires: %{python_module PyQt6-3D} +BuildRequires: %{python_module PyQt6-Charts} +BuildRequires: %{python_module PyQt6-DataVisualization} +BuildRequires: %{python_module PyQt6-WebEngine} +BuildRequires: %{python_module PyQt6} +BuildRequires: qt6-sql-sqlite +%endif +%if %{with pyside6} +BuildRequires: python3-pyside6 +%endif # /SECTION %python_subpackages @@ -65,15 +79,8 @@ modules from qtpy instead of PySide2 (or PyQt5) %setup -q -n QtPy-%{version} # wrong EOL encondig sed -i 's/\r$//' LICENSE.txt *.md -# remove mock dependency for Python 3 -sed -i '/^import mock/ c try:\ - from unittest import mock\ -except ImportError:\ - import mock' qtpy/tests/test_macos_checks.py -# qtcharts is present in our PyQt5 and Pyside2 +# qtcharts is present in our PyQt sed -i '/skipif.*not PYSIDE2/ d' qtpy/tests/test_qtcharts.py -# remove script calling pytest so that pytest does not discover it -rm qtpy/tests/runtests.py %build %python_build @@ -84,21 +91,31 @@ rm qtpy/tests/runtests.py %check export QT_HASH_SEED=0 -export PYTHONDONTWRITEBYTECODE=1 +export QT_QPA_PLATFORM="offscreen" mkdir empty pushd empty -%{python_expand # pytest-xvfb unfortunately fails here -export PYTHONPATH=%{buildroot}%{$python_sitelib} -xvfb-run --server-args="-screen 0 1920x1080x24" pytest-%{$python_bin_suffix} -rwEfs -v ../qtpy/tests/ -} +# no QtOpenGL for these platforms in our PyQt5 +donttest=$(python3 -c 'import platform; print(" or test_qtopengl" if platform.processor() in ["armv7l", "aarch64"] else "")') +# no QtSensors in our PyQt5 +donttest_pyqt5=" or test_qtsensors" +export QT_API=pyqt5 FORCE_QT_API=1 +%pytest -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest $donttest_pyqt5)" +%if %{with pyqt6} +export QT_API=pyqt6 FORCE_QT_API=1 +%pytest -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest)" +%endif export QT_API=pyside2 FORCE_QT_API=1 -xvfb-run --server-args="-screen 0 1920x1080x24" pytest-%{python3_bin_suffix} -rwEfs -v ../qtpy/tests/ +pytest-%{python3_bin_suffix} -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest)" +%if %{with pyside6} +export QT_API=pyside6 FORCE_QT_API=1 +pytest-%{python3_bin_suffix} -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest)" +%endif popd %files %{python_files} %doc AUTHORS.md CHANGELOG.md README.md %license LICENSE.txt %{python_sitelib}/qtpy -%{python_sitelib}/QtPy-%{version}-py*.egg-info +%{python_sitelib}/QtPy-%{version}*-info %changelog From 1e4da8b3c499f573765ebe283175c1a0f5ddee666b4a551c0852a8dbb6cef242 Mon Sep 17 00:00:00 2001 From: Matej Cepl Date: Mon, 11 Apr 2022 09:31:42 +0000 Subject: [PATCH 2/2] Accepting request 969140 from home:bnavigator:branches:devel:languages:python:numeric - Disable PyQt6-WebEngine tests for 32-bit platforms * QtWebEngine 6.3.0 disabled 32-bit support * Needs multibuild flavor for platform specific conditions OBS-URL: https://build.opensuse.org/request/show/969140 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python/python-QtPy?expand=0&rev=34 --- _multibuild | 3 ++ python-QtPy.changes | 7 +++++ python-QtPy.spec | 71 ++++++++++++++++++++++++++++++++++++--------- 3 files changed, 68 insertions(+), 13 deletions(-) create mode 100644 _multibuild diff --git a/_multibuild b/_multibuild new file mode 100644 index 0000000..fcc7b97 --- /dev/null +++ b/_multibuild @@ -0,0 +1,3 @@ + + test + diff --git a/python-QtPy.changes b/python-QtPy.changes index 82e00f6..9de2e27 100644 --- a/python-QtPy.changes +++ b/python-QtPy.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Mon Apr 11 08:03:56 UTC 2022 - Ben Greiner + +- Disable PyQt6-WebEngine tests for 32-bit platforms + * QtWebEngine 6.3.0 disabled 32-bit support + * Needs multibuild flavor for platform specific conditions + ------------------------------------------------------------------- Sat Apr 9 20:48:40 UTC 2022 - Ben Greiner diff --git a/python-QtPy.spec b/python-QtPy.spec index e736fd3..4216e5f 100644 --- a/python-QtPy.spec +++ b/python-QtPy.spec @@ -1,5 +1,5 @@ # -# spec file for package python-QtPy +# spec file # # Copyright (c) 2022 SUSE LLC # @@ -16,13 +16,28 @@ # +%global flavor @BUILD_FLAVOR@%{nil} +%if "%{flavor}" == "test" +%define psuffix -test +%bcond_without test +%else +%define psuffix %{nil} +%bcond_with test +BuildArch: noarch +%endif +%bcond_without pyqt5 %bcond_without pyqt6 -# unfortunately we get a segfault in the PyQt5 test suite when pyside6 is installed (!?) +%ifnarch %power64 s390x +%bcond_without pyside2 +%else +%bcond_with pyside2 +%endif +# unfortunately we get a segfault in the other backends when pyside6 is installed at the same time (!?) %bcond_with pyside6 %{?!python_module:%define python_module() python3-%{**}} %define skip_python2 1 -Name: python-QtPy +Name: python-QtPy%{psuffix} Version: 2.0.1 Release: 0 Summary: Abstraction layer on top of Qt bindings @@ -41,28 +56,37 @@ Requires: python-packaging # know what backend to recommend and what extras to require (e.g. # qtwebengine). Note that setup.py does not declare any requirements, # in this regard either. -BuildArch: noarch -# SECTION test requirements +%if %{with test} BuildRequires: %{python_module pytest >= 6} BuildRequires: %{python_module pytest-qt} +%if %{with pyqt5} BuildRequires: %{python_module qt3d-qt5} BuildRequires: %{python_module qt5} BuildRequires: %{python_module qtcharts-qt5} BuildRequires: %{python_module qtdatavis3d-qt5} +%ifnarch %{power64} s390x BuildRequires: %{python_module qtwebengine-qt5} -BuildRequires: python3-pyside2 +%endif +%endif %if %{with pyqt6} BuildRequires: %{python_module PyQt6-3D} BuildRequires: %{python_module PyQt6-Charts} BuildRequires: %{python_module PyQt6-DataVisualization} -BuildRequires: %{python_module PyQt6-WebEngine} BuildRequires: %{python_module PyQt6} BuildRequires: qt6-sql-sqlite +%ifnarch %{ix86} %{arm} %{power64} s390x +# QtWebEngine 6.3.0 ceased support for 32-bit +BuildRequires: %{python_module PyQt6-WebEngine} +%endif +%endif +%if %{with pyside2} +BuildRequires: python3-pyside2 %endif %if %{with pyside6} BuildRequires: python3-pyside6 +BuildRequires: qt6-sql-sqlite +%endif %endif -# /SECTION %python_subpackages %description @@ -86,36 +110,57 @@ sed -i '/skipif.*not PYSIDE2/ d' qtpy/tests/test_qtcharts.py %python_build %install +%if ! %{with test} %python_install %python_expand %fdupes %{buildroot}%{$python_sitelib} +%endif %check +%if %{with test} export QT_HASH_SEED=0 export QT_QPA_PLATFORM="offscreen" mkdir empty pushd empty -# no QtOpenGL for these platforms in our PyQt5 -donttest=$(python3 -c 'import platform; print(" or test_qtopengl" if platform.processor() in ["armv7l", "aarch64"] else "")') +%ifarch %{arm} aarch64 +# no QtOpenGL for these platforms +donttest=" or test_qtopengl" +%endif +%if %{with pyqt5} # no QtSensors in our PyQt5 donttest_pyqt5=" or test_qtsensors" +%ifarch %{power64} s390x +# No QtWebengine on ppc and s390x +donttest_pyqt5="${donttest_pyqt5} or test_qtwebengine or test_qt_api" +%endif export QT_API=pyqt5 FORCE_QT_API=1 %pytest -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest $donttest_pyqt5)" -%if %{with pyqt6} -export QT_API=pyqt6 FORCE_QT_API=1 -%pytest -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest)" %endif +%if %{with pyqt6} +%ifarch %{ix86} %{arm} %{power64} s390x +# QtWebEngine 6.3.0 ceased support for 32-bit +# No QtWebengine (PyQt5 or PyqQt6 on ppc and s390x +donttest_pyqt6=" or test_qtwebengine" +%endif +export QT_API=pyqt6 FORCE_QT_API=1 +%pytest -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest $donttest_pyqt6)" +%endif +%if %{with pyside2} export QT_API=pyside2 FORCE_QT_API=1 pytest-%{python3_bin_suffix} -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest)" +%endif %if %{with pyside6} export QT_API=pyside6 FORCE_QT_API=1 pytest-%{python3_bin_suffix} -rwEfs -v ../qtpy/tests/ -k "not (dummyprefix $donttest)" %endif popd +%endif +%if ! %{with test} %files %{python_files} %doc AUTHORS.md CHANGELOG.md README.md %license LICENSE.txt %{python_sitelib}/qtpy %{python_sitelib}/QtPy-%{version}*-info +%endif %changelog