commit e888aa1f1138b0f2663be30ceaa55501700b42bfde93b28bf5b3faec98c98c31 Author: Adrian Schröter Date: Fri May 3 19:56:42 2024 +0200 Sync from SUSE:SLFO:Main python-QtPy revision 3a6ef3742df8daf72106f79ef807759a diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..9b03811 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,23 @@ +## Default LFS +*.7z filter=lfs diff=lfs merge=lfs -text +*.bsp filter=lfs diff=lfs merge=lfs -text +*.bz2 filter=lfs diff=lfs merge=lfs -text +*.gem filter=lfs diff=lfs merge=lfs -text +*.gz filter=lfs diff=lfs merge=lfs -text +*.jar filter=lfs diff=lfs merge=lfs -text +*.lz filter=lfs diff=lfs merge=lfs -text +*.lzma filter=lfs diff=lfs merge=lfs -text +*.obscpio filter=lfs diff=lfs merge=lfs -text +*.oxt filter=lfs diff=lfs merge=lfs -text +*.pdf filter=lfs diff=lfs merge=lfs -text +*.png filter=lfs diff=lfs merge=lfs -text +*.rpm filter=lfs diff=lfs merge=lfs -text +*.tbz filter=lfs diff=lfs merge=lfs -text +*.tbz2 filter=lfs diff=lfs merge=lfs -text +*.tgz filter=lfs diff=lfs merge=lfs -text +*.ttf filter=lfs diff=lfs merge=lfs -text +*.txz filter=lfs diff=lfs merge=lfs -text +*.whl filter=lfs diff=lfs merge=lfs -text +*.xz filter=lfs diff=lfs merge=lfs -text +*.zip filter=lfs diff=lfs merge=lfs -text +*.zst filter=lfs diff=lfs merge=lfs -text diff --git a/QtPy-2.4.1.tar.gz b/QtPy-2.4.1.tar.gz new file mode 100644 index 0000000..6457372 --- /dev/null +++ b/QtPy-2.4.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:a5a15ffd519550a1361bdc56ffc07fda56a6af7292f17c7b395d4083af632987 +size 65492 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 new file mode 100644 index 0000000..cabe073 --- /dev/null +++ b/python-QtPy.changes @@ -0,0 +1,544 @@ +------------------------------------------------------------------- +Tue Nov 21 13:39:59 UTC 2023 - Dirk Müller + +- add qt6.6-deprecations.patch to avoid deprecation warnings + with qt 6.6 + +------------------------------------------------------------------- +Tue Nov 21 07:34:39 UTC 2023 - ecsos + +- Update to 2.4.1 + * [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #456 + * PR: Fix bug when importing from PySide6.QtWebEngineCore/QtWebEngineWidgets + (QWebEngineScrip vs QWebEngineScript) by @damonlynch in #455 + * [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #459 + +------------------------------------------------------------------- +Sun Sep 24 18:51:40 UTC 2023 - Ben Greiner + +- Update to 2.4.0 + * Add missing issue closed for v2.3.1 changelog entry by + @dalthviz in #419 + * Symmetrize path and location of QLibraryInfo by @StSav012 in + #420 + * Improve import modularity between QtGui, QtWidgets and + QtOpenGL* related modules by @DaelonSuzuka in #387 + * Make CI jobs much faster & less flaky w/Mamba, 1-pass solve & + other tweaks by @CAM-Gerlach in #425 + * Symmetrize QDateTime.toPython and toPyDateTime, etc. by + @StSav012 in #421 + * Use static calls of exec_ elsewhere where needed, and test them + by @StSav012 in #422 + * Enable more tests on CI by @Czaki in #434 + * Add wrapers to fix argument name in QFileDialog get*methods by + @Czaki in #433 + * Rename utils.py to _utils.py to make it private by @StSav012 in + #431 + * Make exec() for PySide2 by @StSav012 in #438 + * Replace custom implementation with loadUiType from PySide6 by + @JaRoSchm in #440 + * Update bindings upper bound version to 6.5 and ignore + DeprecationWarning (CI) by @dalthviz in #443 + * Make QMenu.addAction and QToolBar.addAction compatible with Qt6 + arguments' order by @StSav012 in #437 + * Restore Qt.ItemFlags access as Qt.ItemFlag alias (PyQt6) by + @dalthviz in #444 + * Add mappings for deprecated QDropEvent pos and posF methods by + @dalthviz in #445 + * Restore QtWidgets.QFileDialog.Options access as + QtWidgets.QFileDialog.Option alias (PyQt6) by @dalthviz in #448 + * Add QEnum macro for PyQt bindings by @phil65 in #424 + * Improve enum to flags aliasing for PyQt6 and PySide6 > 6.3 and + QFileDialog static methods kwarg compatibility by @dalthviz in + #449 + * Update README with information on Pyright/Pylance integration + and add CLI subcommand to help generate the related config by + @wkrasnicki in #450 + * Test using PyQt extra packages by @dalthviz in #446 +- Release 2.3.1 + * Use raise from None when raising QtBindingsNotFoundError in + init by @CAM-Gerlach in #391 + * Fix LibraryLocation -> LibraryPath renaming due to deprecation + with Qt6 by @StSav012 in #393 + * Make warning usage consistant and refine messages by + @CAM-Gerlach in #398 + * Don't make QTextStreamManipulator.exec_ on PyQt5/6 by @StSav012 + in #404 + * Remove patch that may be limited to PySide-5.11a1 only by + @StSav012 in #407 + * Add mappings for QMouseEvent methods by @StSav012 in #408 + * Improve compatibility for QtWidgets and QtGui modules between + Qt5 and Qt6 bindings by @StSav012 in #410 + * Make QtBindingsNotFoundError also inherit from ImportError by + @cbrnr in #413 + * Add compatibility mappings between bindings for all children of + QSinglePointEvent by @StSav012 in #417 + +------------------------------------------------------------------- +Sat Jun 10 09:43:32 UTC 2023 - ecsos + +- Add %{?sle15_python_module_pythons} + +------------------------------------------------------------------- +Sun Nov 20 19:55:23 UTC 2022 - Ben Greiner + +- Update to 2.3.0 + * PR 382 - PR: Add QtPdf and QtPdfWidgets, by @jschueller (381) + * PR 380 - PR: Enable more qt6 tests, by @jschueller + * PR 379 - PR: Raise error when no bindings are found at + __init__, by @dalthviz (367) + * PR 378 - PR: Try PySide6 on conda, by @jschueller + * PR 376 - PR: Expand the CI test matrix with Qt/bindings 6.4 and + fix tests with PyQt 5.9, by @CAM-Gerlach (375) + * PR 374 - Don't re-assign Qt.MouseButton.MiddleButton on + PySide6, by @astrofrog (373) + * PR 372 - PR: Add Qsci to the imports, by @dgoeries (134) +- Release 2.2.1 + * PR 368 - PR: Add missing self for QtBindingsNotFoundError + definition, by @dalthviz + * PR 366 - PR: Aliased QUndoCommand, provided + QLineEdit.getTextMargins() and QFontMetricsF.width(), by + @random-developer (365) + * PR 363 - PR: Fix typo in Qt flags in Readme, by @Czaki + * PR 362 - PR: Fix various minor typos found with Codespell, by + @luzpaz + * PR 361 - PR: toPython helpers for QDate and QTime, by + @bob-schumaker + * PR 360 - CI: Ensure conda-forge channel usage when testing with + conda, by @dalthviz + +------------------------------------------------------------------- +Thu Aug 18 13:23:53 UTC 2022 - Ben Greiner + +- Update to 2.2.0 + * Add workaround for mode argument in QTextCursor.movePosition + (PySide6) by @rear1019 in #346 + * Add missing imports and modules by @DaelonSuzuka in #344 + * Restore WEBENGINE constant in QtWebEngineWidgets by @ccordoba12 + in #350 + * Add note to readme about use with Pyright by @CAM-Gerlach in + #353 + * Add wrapper around sip/shiboken isdeleted/isvalid (compat.py) + by @zjp in #354 + * Fix PyQt6 typing import for Qt by @tlambert03 in #358 + * Add initial Methods, helpers and QtPy namespace specifics + section to the README by @dalthviz in #357 +- Revert last change: Removing Python2 from build requirements of + libqt5-qtwebengine and crippling the testsuite of a package not + even in ring1 are orthogonal to each other. +- Enable PySide6 tests: Segfaults are gone. + +------------------------------------------------------------------- +Mon Aug 8 12:12:04 UTC 2022 - Stephan Kulow + +- Disable Qt5 bindings as they require python2 (for chromium within + qtwebengine) and we want to get rid of it in ring1 + +------------------------------------------------------------------- +Fri Jun 3 19:09:24 UTC 2022 - Ben Greiner + +- Update to 2.1.0 + * PR: Restrict broken Pytest versions to those not affected by + the Pytest 7.0.0 import-mode=importlib behavior regression by + @CAM-Gerlach in #324 + * PR: Monkey patch pyside2uic UIParser.readResources for Python + 3.9 compatibility by @n-elie in #325 + * PR: Add missing QWebEngineScript support for PyQt5/6 and + PySide2/6 by @EasyIsrael in #326 + * PR: Add missing Qt.MidButton on PyQt6 by @dalthviz in #328 + * PR: Drop support for Python 3.6 by @dalthviz in #329 + * PR: Fix typo in constant name by @eyllanesc in #330 + * PR: Use QFileDialog.Option to be compatiable with Qt6 by + @frmdstryr in #331 + * PR: Skip import of QOpenGLTime* on architectures where not + available by @juliangilbey in #333 + * PR: Remove QHeaderView patch related files by @dalthviz in #334 + * PR: Fix uic skipped tests and PyQt 6.3.0 segfaulting tests by + @dalthviz in #335 + * PR: Add command line support for Mypy by @CAM-Gerlach in #337 + * PR: Add workaround for mode argument in + QTextCursor.movePosition (Pyside2) by @rear1019 in #341 + * PR: Fix bug with environ handling by @larsoner in #340 + * PR: Change bindings try order to be PyQt5, PySide2, PyQt6, + PySide6 by @dalthviz in #343 + +------------------------------------------------------------------- +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 + +- 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 + +- Update to 1.11.1 + * Wrap pysideuic and pyside2uic imports since they could be + unavailable + * qtpy/tests/test_uic.py: skip if pyside2uic not installed +- Release 1.11.0 + * Add QtWebEngineWidgets.QWebEngineProfile for PyQt5 and PySide2 + * Rename QtDatavisualization to use uppercase v + * Add support for QStyleOptionFrameV3 from PyQt4 + * Add QtWinExtras module + * Add support for QtSerialPort add-on + * Add support for the QtPositioning module + * Add loadUiType implementation for PySide2 +- Drop patch merged upstream gh#spyder-ide/QtPy#228 + * 0001-Add-QtDatavisualization-alias-to-QtDataVisualization.patch + +------------------------------------------------------------------- +Tue Aug 17 14:37:49 UTC 2021 - Ben Greiner + +- Update to 1.10.0 + * PR 241 - PR: Update setup.py classifiers, by @dalthviz + * PR 230 - PR: Fix imported modules logic if 'FORCE_QT_API' is + empty, by @hiaselhans + * PR 224 - PR: Support python 3.9 custom_widgets iteration, by + @irrcombat (206) + * PR 215 - PR: Slight typo fix, by @altendky + * PR 214 - PR: Handle QtCore.SignalInstance/pyqtBoundSignal, by + @altendky + * PR 208 - PR: Move CI to Github Actions, by @goanpeca + * PR 204 - PR: Add Python 3.9 compatibility for collections.abc + module, by @tirkarthi + * PR 199 - PR: Add support to PyQt4-sip 4.19.13, by @milanmatic +- Update description +- Clarify the requirements policy +- Test Pyside2 and Qtcharts +- Remove extra mock requirement + +------------------------------------------------------------------- +Tue Aug 17 09:07:26 UTC 2021 - Fabian Vogt + +- Minimize Recommends and Suggests, dep chain is too big + (WebEngine, Qt3D) for the TW DVD + +------------------------------------------------------------------- +Thu Jan 21 09:30:26 UTC 2021 - Antonio Larrosa + +- Add patch so the renaming of QtDataVisualization doesn't cause + a problem on applications using the old name + (gh#spyder-ide/qtpy#228): + * 0001-Add-QtDatavisualization-alias-to-QtDataVisualization.patch + +------------------------------------------------------------------- +Thu Jan 14 09:12:53 UTC 2021 - Antonio Larrosa + +- Add also BuildRequires for qt3d-qt5 and qtdatavis3d-qt5 so + those tests are not skipped. +- qtcharts-qt5 is not added because the python-qt5 package is + always pulled in automatically and QtPy uses it by default + while QtCharts is only available with PySide2. +- Replace the Requires with Recommends since not even PyQt is + really required (PySide2 can also be used with QtPy, and is now + added as a Suggested package). +- Rename QtDatavisualization.py to QtDataVisualization.py + (uppercase v) to fix the test which was skipped because the + imported module didn't exist and to keep the name consistent + with both PyQt and PySide2 (gh#spyder-ide/qtpy#228) + +------------------------------------------------------------------- +Wed Jan 13 15:55:35 UTC 2021 - Antonio Larrosa + +- BuildRequires (and Require) the webengine bindings so it uses + them (which is the default) instead of using qtwebkit (which + was used only as a fallback). + +------------------------------------------------------------------- +Fri Aug 28 15:09:01 UTC 2020 - Benjamin Greiner + +- SIP is only used for PyQt4 which we don't use + +------------------------------------------------------------------- +Mon Jul 29 07:57:44 UTC 2019 - pgajdos@suse.com + +- version update to 1.9.0 + * Add the FORCE_QT_API environment variable to keep using the Qt + bindings selected with the QT_API variable and avoid switching + to the currently imported bindings. This allows to have + applications that import PySide and PyQt bindings at the same + time (which is possible if both bindings are compiled for the + same Qt version). + * Errors in the Qt3D modules with PySide2 5.12.4+ and Python 2 + * Binding Selection Logic + * PR: Don't load Qt3D modules for buggy versions of PySide2 + * PR: Add FORCE_QT_API environment variable + +------------------------------------------------------------------- +Mon Jul 22 16:56:02 UTC 2019 - Todd R + +- Update to 1.8.0 + * Add support for several Qt 3D modules. + +------------------------------------------------------------------- +Thu May 23 10:34:57 UTC 2019 - pgajdos@suse.com + +- version update to 1.7.1 + * Skip testing PyQt4 and PySide in Python 3.5 + * Trivial maintenance tweaks + * Avoid deprecated "from collections import MutableMapping" + +------------------------------------------------------------------- +Tue Mar 19 14:33:21 UTC 2019 - Tomáš Chvátal + +- Update to 1.7.0: + * Add support for QtCharts. + +------------------------------------------------------------------- +Wed Mar 6 10:25:51 UTC 2019 - Tomáš Chvátal + +- Update to 1.6.0: + * Add support for QtQuickWidgets + * Issue 178 - Error when import QtCore.version in PySide2 + +------------------------------------------------------------------- +Tue Dec 4 12:53:28 UTC 2018 - Matej Cepl + +- Remove superfluous devel dependency for noarch package + +------------------------------------------------------------------- +Thu Nov 8 17:02:01 UTC 2018 - Todd R + +- Update to Version 1.5.2 + * Fix tests + * Add support for PySide2.QtOpenGL +- Update to Version 1.5.1 + * Make PythonQtError inherit from RuntimeError to be easily + catchable +- Update to Version 1.5 + + New features + * Add support for QtLocation, QtMultimediaWidgets, QtQml, + QtQuick, QtWebChannel, QtWebSockets and QtXmlPatterns. + * Raise an error when trying to use the wrong combination of + macOS and Qt versions. + + Issues Closed + * Issue 155 - Add warnings for Qt 5.9 in macOS 10.9 and + Qt 5.11 and macOS 10.11 (PR 168) + * Issue 153 - Shim PyQt5 ToPyDateTime for compatibility with + PySide2 (PR 169) + * Issue 123 - Wrap QWebChannel module (PR 157) + + Pull Requests Merged + * PR 169 - Shim PyQt5 QDateTime.toPyDateTime to + QDateTime.toPython for compatibility with PySide2 (153) + * PR 168 - Raise error when trying to use the wrong + combination of macOS and Qt versions (155) + * PR 167 - Migrate to CircleCI 2.0 + * PR 163 - Add QtLocation + * PR 162 - Update readme to remove funding appeal, harmonize + with other readmes and minor fixes + * PR 161 - Fix pyside2 wheels install + * PR 157 - Add more Qt modules (123) + +------------------------------------------------------------------- +Thu May 31 15:38:45 UTC 2018 - toddrme2178@gmail.com + +- Update to version 1.4.2 + + Issues Closed + * Issue 150 - PySide2-5.11 alpha2 compatibility (PR 151) + * Issue 144 - ValueError: API 'QString' has already been set to version 1 at line 141 in init.py file. (PR 152) + + Pull Requests Merged + * PR 152 - PR: Catch ValueError when trying to set sip API (144) + * PR 151 - PR: Add a preventive change for PySide-5.11a2 (150) + * PR 149 - PR: Use Qt official wheels to run tests for PySide2 + * PR 148 - PR: Remove internal conda recipe + +------------------------------------------------------------------- +Sat Apr 28 19:47:37 UTC 2018 - toddrme2178@gmail.com + +- Update to Version 1.4.1 + + New features + * Show a warning when QT_API is changed automatically by qtpy. + + Issues Closed + * Raise a warning if QT_API value is changed automatically + * On OSX qtpy applications are forcing discrete graphics + + Pull Requests Merged + * Add better compatibility with PySide2 + * Add a warning if API is changed automatically + * Avoid using PyQt5.Qt, which imports unneeded stuff and forces + discrete GPU on OSX +- Update to Version 1.4 (2018-03-11) + + New features + * Add support for QtHelp + * Add support for QtSql + * Use already imported bindings + + Issues Closed + * If one binding has already been imported, + then qtpy should just use it + * Add Wrapper for QtSql + * Methods missing from QStandardPaths when QT_API=pyqt4 + * Add Wrapper for QtHelp + + Pull Requests Merged + * Pin PyQt5 to 5.9.2 in CircleCI because 5.10 is generating segfaults + * If a Qt binding is already imported, then use it. + * Add QtSql wrapper (incl. test) + * Changes to QDesktop split + * Add QtHelp Wrapper + +------------------------------------------------------------------- +Mon Aug 28 16:05:01 UTC 2017 - toddrme2178@gmail.com + +- Update to Version 1.3.1 + + Bugs fixed + * Spurious cache files in PyPI tarball + * Importing qtpy should not raise exceptions + * No cache files included in the release tarball + * Remove Quantified Code badge because the service doesn't exist anymore + * Warn if QHeaderView deprecated methods are used +- Update to Version 1.3 + + New features + * Add support for PySide2 + * Add support for QtMultimedia + * Add support for PyQt 4.6 + + Bugs fixed + * Typo in readme title + * Update Readme for 1.3 release + * Add tests for untested modules + * Missing: QtOpenGL Module + * QDesktopServices split into QDesktopServices and QStandardPaths + * qInstallMessageHandler <-> qInstallMsgHandler + * Feature Request: PySide2 support + * Fix typo in Readme. + * Add compatibility for the rename of qInstallMsgHandler to qInstallMessageHandler + * Update Readme to reflect that we actually use the PySide2 layout + * Update Readme to mention that we now support PySide2. + * Add tests for Qtdesigner, QtNetwork, QtPrintSupport, QtSvg and QtTest. + * Follow QStandardPaths location in Qt5 for PyQt4/PySide + * Add a coveragerc file + * Add support for PyQt 4.6 + * Add a new QtOpenGL module + * Add PySide2 support + +------------------------------------------------------------------- +Fri Apr 28 01:58:21 UTC 2017 - toddrme2178@gmail.com + +- Implement single-spec version. + +------------------------------------------------------------------- +Thu Feb 16 09:13:41 UTC 2017 - joerg.lorenzen@ki.tng.de + +- Update to version 1.2.1 + - Bugs fixed: + Pull requests + + PR 98 - PR: Don't use Travis to test macOS because it slows + down the entire spyder-ide organization + + PR 97 - PR: Update Appveyor badge in Readme because of moving + to an org account + + PR 94 - PR: Include test suite in sdist + +- Version 1.2 + - New features: + + Add support for QtMultimedia + + Use relative imports so its vendored more easily + - Bugs fixed: + Issues + + Issue 83 - Include core doc files in PyPi releases + + Issue 78 - Request for a new bugfix release + + Issue 75 - Missing copyright headers + + Issue 67 - uic.loadUiType is missing + + Issue 64 - QHeaderView.setSectionResizeMode + + Issue 49 - QtMultimedia support + Pull requests + + PR 93 - Restore uic full namespace for PyQt5 and PyQt4 + + PR 92 - Add missing copyright header in _patch/qheaderview.py + + PR 91 - Use star imports in QtSvg again instead of direct + ones (reverts PR #55) + + PR 88 - PR: Add manifest + + PR 74 - Move QStringListModel to QtCore + + PR 71 - PR: Use relative imports so its vendored more easily + + PR 65 - Introduce renamed methods of QHeaderView in PyQt4 and + PySide + + PR 59 - Don't install qtpy as a conda package in CircleCI + + PR 58 - Remove reference to how qtpy is pronounced in README + + PR 55 - PR: Add explicit imports to QtSvg module + + PR 50 - Add support for QtMultimedia +- Removed source file LICENSE.txt, fixed upstream. + +------------------------------------------------------------------- +Thu Oct 13 18:58:01 UTC 2016 - toddrme2178@gmail.com + +- Initial version diff --git a/python-QtPy.spec b/python-QtPy.spec new file mode 100644 index 0000000..49f5b76 --- /dev/null +++ b/python-QtPy.spec @@ -0,0 +1,210 @@ +# +# spec file +# +# Copyright (c) 2023 SUSE LLC +# +# All modifications and additions to the file contributed by third parties +# remain the property of their copyright owners, unless otherwise agreed +# upon. The license for this file, and modifications and additions to the +# file, is the same license as for the pristine package itself (unless the +# license for the pristine package is not an Open Source License, in which +# case the license is the MIT License). An "Open Source License" is a +# license that conforms to the Open Source Definition (Version 1.9) +# published by the Open Source Initiative. + +# Please submit bugfixes or comments via https://bugs.opensuse.org/ +# + + +%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 +%ifnarch %power64 s390x +%bcond_without pyside2 +%bcond_without pyside6 +%else +%bcond_with pyside2 +%bcond_with pyside6 +%endif + +%{?sle15_python_module_pythons} +Name: python-QtPy%{psuffix} +Version: 2.4.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 +# from https://github.com/spyder-ide/qtpy/pull/466 +Patch1: qt6.6-deprecations.patch +BuildRequires: %{python_module base >= 3.7} +BuildRequires: %{python_module packaging} +BuildRequires: %{python_module pip} +BuildRequires: %{python_module setuptools} +BuildRequires: %{python_module wheel} +BuildRequires: fdupes +BuildRequires: python-rpm-macros +Requires: python-packaging +Requires(post): update-alternatives +Requires(postun):update-alternatives +# Note: Don't add any Requires, Recommends, or Suggests for a +# specific backend 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, in this regard either. +%if %{with test} +BuildRequires: %{python_module QtPy-test = %{version}} +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} +%endif +%endif +%if %{with pyqt6} +BuildRequires: %{python_module PyQt6-3D} +BuildRequires: %{python_module PyQt6-Charts} +BuildRequires: %{python_module PyQt6-DataVisualization} +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 +%python_subpackages + +%description +QtPy is a small abstraction layer that lets you +write applications using a single API call to either PyQt or PySide. + +It provides support for PyQt5, PyQt6, PySide6, PySide2 using the Qt5 +layout (where the QtGui module has been split into QtGui and QtWidgets). +Basically, you can write your code as if you were using PyQt or PySide +directly, but import Qt modules from qtpy instead of PyQt5, PySide2, +PyQt6 or PySide6. + +%package test +Summary: The qtpy.tests module +Requires: %{name} = %{version} + +%description test +QtPy is a small abstraction layer that lets you +write applications using a single API call to either PyQt or PySide. + +This subpackage separately provides the qtpy.tests module +in order to avoid stupid rpmlint errors. + +%prep +%autosetup -p1 -n QtPy-%{version} +# wrong EOL encondig +sed -i 's/\r$//' LICENSE.txt *.md +# qtcharts is present in our PyQt +sed -i '/skipif.*not PYSIDE2/ d' qtpy/tests/test_qtcharts.py +sed -i '/addopts/ {s/--cov=.*//; s/--color=yes//}' pytest.ini + +%build +%if ! %{with test} +%pyproject_wheel +%endif + +%install +%if ! %{with test} +%pyproject_install +%python_clone -a %{buildroot}%{_bindir}/qtpy +%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 +# expects an unset FORCE_QT_API +donttest_qt_api="test_qt_api_environ" +# too wide in our setup (and upstream doesn't care: https://github.com/spyder-ide/qtpy/issues/371) +donttest=" or test_qfontmetrics_width" +%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 -k "not ($donttest_qt_api $donttest $donttest_pyqt5)" +%endif +%if %{with pyqt6} +%ifarch %{ix86} %{arm} %{power64} s390x +# QtWebEngine 6.3.0 ceased support for 32-bit +# No QtWebengine on ppc and s390x +donttest_pyqt6=" or test_qtwebengine" +%endif +export QT_API=pyqt6 FORCE_QT_API=1 +%pytest -rwEfs -v ../qtpy -k "not ($donttest_qt_api $donttest $donttest_pyqt6)" +%endif +%if %{with pyside2} +export QT_API=pyside2 FORCE_QT_API=1 +pytest-%{python3_bin_suffix} -rwEfs -v ../qtpy -k "not ($donttest_qt_api $donttest)" +%endif +%if %{with pyside6} +# no pyside6-uic +donttest_pyside6=" or test_load_ui_type" +export QT_API=pyside6 FORCE_QT_API=1 +pytest-%{python3_bin_suffix} -rwEfs -v ../qtpy -k "not ($donttest_qt_api $donttest $donttest_pyside6)" +%endif +# Default backend +unset QT_API +unset FORCE_QT_API +%pytest -rwEfs -vvv ../qtpy -k "not (dummyprefix $donttest $donttest_pyqt5)" +popd +%endif + +%post +%python_install_alternative qtpy + +%postun +%python_uninstall_alternative qtpy + +%if ! %{with test} +%files %{python_files} +%doc AUTHORS.md CHANGELOG.md README.md +%license LICENSE.txt +%{python_sitelib}/qtpy +%exclude %{python_sitelib}/qtpy/tests +%{python_sitelib}/QtPy-%{version}.dist-info +%python_alternative %{_bindir}/qtpy + +%files %{python_files test} +%license LICENSE.txt +%{python_sitelib}/qtpy/tests +%endif + +%changelog diff --git a/qt6.6-deprecations.patch b/qt6.6-deprecations.patch new file mode 100644 index 0000000..c29c8be --- /dev/null +++ b/qt6.6-deprecations.patch @@ -0,0 +1,79 @@ +From ae51371ebb87f8f4038b0ab3ed5a5402be7610d4 Mon Sep 17 00:00:00 2001 +From: StSav012 +Date: Fri, 27 Oct 2023 14:37:26 +0300 +Subject: [PATCH] Restore `QSqlDatabase.exec` deprecated in 6.6 + +--- + qtpy/QtSql.py | 49 ++++++++++++++++++++++++++++++++++++------------- + 1 file changed, 36 insertions(+), 13 deletions(-) + +diff --git a/qtpy/QtSql.py b/qtpy/QtSql.py +index 76a63760..d8e0f2d9 100644 +--- a/qtpy/QtSql.py ++++ b/qtpy/QtSql.py +@@ -6,29 +6,52 @@ + # ----------------------------------------------------------------------------- + + """Provides QtSql classes and functions.""" ++from functools import partialmethod + +-from . import PYQT5, PYQT6, PYSIDE2, PYSIDE6 ++from packaging.version import parse ++ ++from . import PYQT5, PYQT6, PYSIDE2, PYSIDE6, QT_VERSION + + if PYQT5: + from PyQt5.QtSql import * + elif PYQT6: + from PyQt6.QtSql import * + +- QSqlDatabase.exec_ = lambda self, *args, **kwargs: self.exec( +- *args, +- **kwargs, +- ) +- QSqlQuery.exec_ = lambda self, *args, **kwargs: self.exec(*args, **kwargs) +- QSqlResult.exec_ = lambda self, *args, **kwargs: self.exec(*args, **kwargs) ++ if parse(QT_VERSION) >= parse("6.6"): ++ # `QSqlDatabase.exec` is deprecated since 6.6 ++ ++ def database_exec(db, query): ++ q = QSqlQuery(db) ++ q.exec(query) ++ return q ++ ++ QSqlDatabase.exec = partialmethod(database_exec) ++ del database_exec ++ ++ QSqlDatabase.exec_ = partialmethod(QSqlDatabase.exec) ++ QSqlQuery.exec_ = partialmethod(QSqlQuery.exec) ++ QSqlResult.exec_ = partialmethod(QSqlResult.exec) + elif PYSIDE6: + from PySide6.QtSql import * + ++ if parse(QT_VERSION) >= parse("6.6"): ++ # `QSqlDatabase.exec` is deprecated since 6.6 ++ ++ def database_exec(db, query): ++ q = QSqlQuery(db) ++ q.exec(query) ++ return q ++ ++ QSqlDatabase.exec = partialmethod(database_exec) ++ del database_exec ++ + # Map DeprecationWarning methods +- QSqlDatabase.exec_ = lambda self, *args, **kwargs: self.exec( +- *args, +- **kwargs, +- ) +- QSqlQuery.exec_ = lambda self, *args, **kwargs: self.exec(*args, **kwargs) +- QSqlResult.exec_ = lambda self, *args, **kwargs: self.exec(*args, **kwargs) ++ QSqlDatabase.exec_ = partialmethod(QSqlDatabase.exec) ++ QSqlQuery.exec_ = partialmethod(QSqlQuery.exec) ++ QSqlResult.exec_ = partialmethod(QSqlResult.exec) + elif PYSIDE2: + from PySide2.QtSql import * ++ ++del PYQT5, PYQT6, PYSIDE2, PYSIDE6, QT_VERSION ++del parse ++del partialmethod