Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package python-PyQt6 for openSUSE:Factory checked in at 2023-10-18 21:26:19 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-PyQt6 (Old) and /work/SRC/openSUSE:Factory/.python-PyQt6.new.31755 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-PyQt6" Wed Oct 18 21:26:19 2023 rev:18 rq:1118548 version:6.5.3 Changes: -------- --- /work/SRC/openSUSE:Factory/python-PyQt6/python-PyQt6.changes 2023-09-29 21:15:41.466332063 +0200 +++ /work/SRC/openSUSE:Factory/.python-PyQt6.new.31755/python-PyQt6.changes 2023-10-18 21:26:37.954706270 +0200 @@ -1,0 +2,11 @@ +Wed Oct 18 00:34:21 UTC 2023 - llyyr <llyyr.pub...@gmail.com> + +- Update to 6.5.3 + * Added support for Python 3.12 and the missing + QAbstractItemModel.multiData() method, as well as the missing + QModelRoleDataSpan class. +- Add patch pyqt6-fix-build-with-qt-6.6.0.patch to fix build with + Qt 6.6.0. +- Set CXX flag "-DQT_NO_INT128" to fix buil with Qt 6.6.0. + +------------------------------------------------------------------- Old: ---- PyQt6-6.5.2.tar.gz New: ---- PyQt6-6.5.3.tar.gz pyqt6-fix-build-with-qt-6.6.0.patch ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-PyQt6.spec ++++++ --- /var/tmp/diff_new_pack.vqc0xd/_old 2023-10-18 21:26:38.410722789 +0200 +++ /var/tmp/diff_new_pack.vqc0xd/_new 2023-10-18 21:26:38.410722789 +0200 @@ -21,7 +21,7 @@ %define pyqt_build_for_qt6 1 %{?sle15_python_module_pythons} Name: python-%{mname} -Version: 6.5.2 +Version: 6.5.3 Release: 0 Summary: Python bindings for Qt 6 License: GPL-3.0-only OR SUSE-GPL-2.0-with-FLOSS-exception OR NonFree @@ -32,11 +32,13 @@ Patch0: disable-rpaths.diff # PATCH-FIX-OPENSUSE - install binary dbus mainloop integration in arch dependent directory Patch1: 0001-Use-a-noarch-wrapper-for-dbus-mainloop-integration.patch -BuildRequires: %{python_module PyQt6-sip >= 13.4} +# PATCH-FIX-OPENSUSE - fix build with Qt 6.6.0 +Patch2: pyqt6-fix-build-with-qt-6.6.0.patch +BuildRequires: %{python_module PyQt6-sip >= 13.6} BuildRequires: %{python_module dbus-python-devel >= 0.8} BuildRequires: %{python_module devel} BuildRequires: %{python_module pyqt-builder >= 1.11} -BuildRequires: %{python_module sip-devel >= 6.5} +BuildRequires: %{python_module sip-devel >= 6.7.12} BuildRequires: dbus-1-devel BuildRequires: dos2unix BuildRequires: fdupes @@ -147,10 +149,13 @@ dos2unix examples/multimedia*/*/*.ui %build + +# -DQT_NO_INT128 is required to build with Qt 6.6.0. %{pyqt_build -v \ -s %{quote:--pep484-pyi \ --confirm-license \ - --qt-shared}} + --qt-shared \ + --qmake-setting 'QMAKE_CXXFLAGS_RELEASE=%{optflags} -DQT_NO_INT128'}} %install %pyqt_install ++++++ PyQt6-6.5.2.tar.gz -> PyQt6-6.5.3.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/ChangeLog new/PyQt6-6.5.3/ChangeLog --- old/PyQt6-6.5.2/ChangeLog 2023-07-22 17:08:24.134214200 +0200 +++ new/PyQt6-6.5.3/ChangeLog 2023-10-10 13:02:49.787200200 +0200 @@ -1,5 +1,62 @@ +2023-10-10 Phil Thompson <p...@riverbankcomputing.com> + + * NEWS, qpy/QtCore/qpycore_types.cpp: + Removed a compiler warning message. + [8b5b0c663207] [6.5.3] <6.5-maint> + +2023-10-08 Phil Thompson <p...@riverbankcomputing.com> + + * project.py: + Removed a debugging flag. + [686cadf4b1bc] <6.5-maint> + + * PyQt6.msp, project.py: + Changed the default values of the findData() and findText() methods + of QComboBox so that they make sensible docstrings. + [36c3449ca18e] <6.5-maint> + + * NEWS, project.py, qpy/QtCore/qpycore_types.cpp: + Properly fix the use of PyType_GetDict(). ABI v13.6 is now needed. + [a34537999cce] <6.5-maint> + +2023-10-07 Phil Thompson <p...@riverbankcomputing.com> + + * NEWS, qpy/QtCore/qpycore_types.cpp: + Fixed the memory leak related to sipPyTypeDict() and Python v3.12. + [f862a6f9f3bb] <6.5-maint> + +2023-09-10 Phil Thompson <p...@riverbankcomputing.com> + + * NEWS, PyQt6.msp: + Fixed a v6.5 regression where /PyInt/ was missng from qint8 and + quint8. + [9803964f9421] <6.5-maint> + +2023-09-01 Phil Thompson <p...@riverbankcomputing.com> + + * NEWS, qpy/QtDBus/qpydbus_post_init.cpp: + Fixed the convertion of QDBusVariant (and others) to QVariant. + [ae560099c875] <6.5-maint> + +2023-08-29 Phil Thompson <p...@riverbankcomputing.com> + + * NEWS, PyQt6.msp: + Added the /__len__/ annotation to QModelRoleDataSpan.length(). + [1fc886013a86] <6.5-maint> + +2023-08-27 Phil Thompson <p...@riverbankcomputing.com> + + * NEWS, PyQt6.msp, qpy/QtCore/qpycore_qlist.sip: + Added the missing QAbstractItemModel.multiData() method and + QModelRoleDataSpan class. + [f0ffbea6c75e] <6.5-maint> + 2023-07-22 Phil Thompson <p...@riverbankcomputing.com> + * .hgtags: + Added tag 6.5.2 for changeset 38c17a29338d + [156ab803c346] <6.5-maint> + * NEWS, extras/lupdate/python_source.py: Fixed an exception in pylupdate. [38c17a29338d] [6.5.2] <6.5-maint> diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/NEWS new/PyQt6-6.5.3/NEWS --- old/PyQt6-6.5.2/NEWS 2023-07-22 17:08:24.136437000 +0200 +++ new/PyQt6-6.5.3/NEWS 2023-10-10 13:02:49.789990200 +0200 @@ -1,3 +1,9 @@ +v6.5.3 10th October 2023 + - Added the missing QAbstractItemModel.multiData() method. + - Added the missing QModelRoleDataSpan class. + - PyQt6-sip v13.6 is now required for Python v3.12 support. + - Bug fixes. + v6.5.2 22nd July 2023 - Added the missing NativeGesture, Quit, EnterEditFocus and LeaveEditFocus members of QEventType. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/PKG-INFO new/PyQt6-6.5.3/PKG-INFO --- old/PyQt6-6.5.2/PKG-INFO 2023-07-22 17:08:32.899154400 +0200 +++ new/PyQt6-6.5.3/PKG-INFO 2023-10-10 13:03:01.353757100 +0200 @@ -1,13 +1,13 @@ Metadata-Version: 2.1 Name: PyQt6 -Version: 6.5.2 +Version: 6.5.3 Requires-Python: >=3.6.1 Summary: Python bindings for the Qt cross platform application toolkit Home-Page: https://www.riverbankcomputing.com/software/pyqt/ Author: Riverbank Computing Limited Author-Email: i...@riverbankcomputing.com License: GPL v3 -Requires-Dist: PyQt6-sip (>=13.4, <14) +Requires-Dist: PyQt6-sip (>=13.6, <14) PyQt6 - Comprehensive Python Bindings for Qt v6 =============================================== diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/project.py new/PyQt6-6.5.3/project.py --- old/PyQt6-6.5.2/project.py 2023-07-22 17:08:24.376157800 +0200 +++ new/PyQt6-6.5.3/project.py 2023-10-10 13:02:50.097205600 +0200 @@ -28,7 +28,7 @@ # The minimum sip module ABI version needed. -ABI_VERSION = '13.4' +ABI_VERSION = '13.6' class PyQt(PyQtProject): diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/pyproject.toml new/PyQt6-6.5.3/pyproject.toml --- old/PyQt6-6.5.2/pyproject.toml 2023-07-22 17:08:24.376478700 +0200 +++ new/PyQt6-6.5.3/pyproject.toml 2023-10-10 13:02:50.097662400 +0200 @@ -6,7 +6,7 @@ # Specify the PEP 566 metadata for the project. [tool.sip.metadata] name = "PyQt6" -version = "6.5.2" +version = "6.5.3" summary = "Python bindings for the Qt cross platform application toolkit" home-page = "https://www.riverbankcomputing.com/software/pyqt/" author = "Riverbank Computing Limited" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/qpy/QtCore/qpycore_types.cpp new/PyQt6-6.5.3/qpy/QtCore/qpycore_types.cpp --- old/PyQt6-6.5.2/qpy/QtCore/qpycore_types.cpp 2023-07-22 17:08:24.169333200 +0200 +++ new/PyQt6-6.5.3/qpy/QtCore/qpycore_types.cpp 2023-10-10 13:02:49.836214800 +0200 @@ -170,7 +170,7 @@ // Add the properties to the meta-object. QMapIterator<uint, PropertyData> it(pprops); - for (int p = 0; it.hasNext(); ++p) + while (it.hasNext()) { it.next(); @@ -359,10 +359,12 @@ QList<const qpycore_pyqtSignal *> &psigs, QMap<uint, PropertyData> &pprops) { + int rc = 0; Py_ssize_t pos = 0; PyObject *key, *value, *dict; - dict = sipPyTypeDict(pytype); + if ((dict = sipPyTypeDictRef(pytype)) == NULL) + return -1; while (PyDict_Next(dict, &pos, &key, &value)) { @@ -424,7 +426,10 @@ // It is a property. if (!ascii_key) - return -1; + { + rc = -1; + break; + } Py_INCREF(value); @@ -445,7 +450,10 @@ // It is a signal. if (!ascii_key) - return -1; + { + rc = -1; + break; + } qpycore_pyqtSignal *ps = (qpycore_pyqtSignal *)value; @@ -469,7 +477,9 @@ } } - return 0; + Py_DECREF(dict); + + return rc; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/qpy/QtDBus/qpydbus_post_init.cpp new/PyQt6-6.5.3/qpy/QtDBus/qpydbus_post_init.cpp --- old/PyQt6-6.5.2/qpy/QtDBus/qpydbus_post_init.cpp 2023-07-22 17:08:24.238863000 +0200 +++ new/PyQt6-6.5.3/qpy/QtDBus/qpydbus_post_init.cpp 2023-10-10 13:02:49.919556100 +0200 @@ -20,6 +20,10 @@ #include <Python.h> +#include <QDBusObjectPath> +#include <QDBusSignature> +#include <QDBusVariant> + #include "qpydbus_api.h" #include "qpydbus_chimera_helpers.h" @@ -29,6 +33,11 @@ // Perform any required initialisation. void qpydbus_post_init() { + // Make sure these are registered. + qMetaTypeId<QDBusObjectPath>(); + qMetaTypeId<QDBusSignature>(); + qMetaTypeId<QDBusVariant>(); + // Get the Chimera helper registration function. void (*register_from_qvariant_convertor)(FromQVariantConvertorFn); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/sip/QtCore/QtCoremod.sip new/PyQt6-6.5.3/sip/QtCore/QtCoremod.sip --- old/PyQt6-6.5.2/sip/QtCore/QtCoremod.sip 2023-07-22 17:08:31.887981400 +0200 +++ new/PyQt6-6.5.3/sip/QtCore/QtCoremod.sip 2023-10-10 13:02:59.953534400 +0200 @@ -75,8 +75,8 @@ const char *PYQT_VERSION_STR; %ModuleCode -static int PYQT_VERSION = 0x060502; -static const char *PYQT_VERSION_STR = "6.5.2"; +static int PYQT_VERSION = 0x060503; +static const char *PYQT_VERSION_STR = "6.5.3"; %End %Include qglobal.sip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/sip/QtCore/qabstractitemmodel.sip new/PyQt6-6.5.3/sip/QtCore/qabstractitemmodel.sip --- old/PyQt6-6.5.2/sip/QtCore/qabstractitemmodel.sip 2023-07-22 17:08:31.835343800 +0200 +++ new/PyQt6-6.5.3/sip/QtCore/qabstractitemmodel.sip 2023-10-10 13:02:59.903983800 +0200 @@ -259,6 +259,7 @@ typedef QFlags<QAbstractItemModel::CheckIndexOption> CheckIndexOptions; bool checkIndex(const QModelIndex &index, QAbstractItemModel::CheckIndexOptions options = QAbstractItemModel::CheckIndexOption::NoOption) const; virtual bool clearItemData(const QModelIndex &index); + virtual void multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const; }; class QAbstractTableModel : QAbstractItemModel @@ -315,3 +316,42 @@ void setData(const QVariant &data); void clearData(); }; + +class QModelRoleDataSpan +{ +%TypeHeaderCode +// The capsule destructor for a QModelRoleData array. +static void qpycore_gc_modelroledata(PyObject *mrd_obj); +%End + +%TypeCode +// The capsule destructor for a QModelRoleData array. +static void qpycore_gc_modelroledata(PyObject *mrd_obj) +{ + delete[] reinterpret_cast<QList<QModelRoleData>* >(PyCapsule_GetPointer(mrd_obj, NULL)); +} +%End + +public: + QModelRoleDataSpan(); + QModelRoleDataSpan(QModelRoleData &modelRoleData); + QModelRoleDataSpan(QList<QModelRoleData> modelRoleData); +%MethodCode + PyObject *a0cap = PyCapsule_New(a0, NULL, qpycore_gc_modelroledata); + + if (a0cap) + { + sipSetUserObject((sipSimpleWrapper *)sipSelf, a0cap); + + sipCpp = new QModelRoleDataSpan(*a0); + } +%End + + qsizetype size() const; + qsizetype length() const /__len__/; + QModelRoleData *data() const; + QModelRoleData *begin() const; + QModelRoleData *end() const; + QModelRoleData &operator[](qsizetype index) const; + QVariant *dataForRole(int role) const; +}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/sip/QtCore/qpycore_qlist.sip new/PyQt6-6.5.3/sip/QtCore/qpycore_qlist.sip --- old/PyQt6-6.5.2/sip/QtCore/qpycore_qlist.sip 2023-07-22 17:08:31.932235500 +0200 +++ new/PyQt6-6.5.3/sip/QtCore/qpycore_qlist.sip 2023-10-10 13:02:59.996066000 +0200 @@ -1490,3 +1490,115 @@ return sipGetState(sipTransferObj); %End }; + + +// This is an explicit QList<QModelRoleData> implementation that is identical +// to the template above except for the /NoRelease/ annotation. The only use +// of this is in a QModelDataRowSpan ctor where we handle the lifetime of the +// C++ instance returned. An alternative would be to implement a /NoRelease/ +// argument annotation in SIP. +%MappedType QList<QModelRoleData> + /NoRelease, TypeHintIn="Iterable[QModelRoleData]", + TypeHintOut="List[QModelRoleData]", TypeHintValue="[]"/ +{ +%TypeHeaderCode +#include <qlist.h> +#include <QModelRoleData> +%End + +%ConvertFromTypeCode + PyObject *l = PyList_New(sipCpp->size()); + + if (!l) + return 0; + + for (int i = 0; i < sipCpp->size(); ++i) + { + QModelRoleData *t = new QModelRoleData(sipCpp->at(i)); + PyObject *tobj = sipConvertFromNewType(t, sipType_QModelRoleData, + sipTransferObj); + + if (!tobj) + { + delete t; + Py_DECREF(l); + + return 0; + } + + PyList_SetItem(l, i, tobj); + } + + return l; +%End + +%ConvertToTypeCode + PyObject *iter = PyObject_GetIter(sipPy); + + if (!sipIsErr) + { + PyErr_Clear(); + Py_XDECREF(iter); + + return (iter && !PyBytes_Check(sipPy) && !PyUnicode_Check(sipPy)); + } + + if (!iter) + { + *sipIsErr = 1; + + return 0; + } + + QList<QModelRoleData> *ql = new QList<QModelRoleData>; + + for (Py_ssize_t i = 0; ; ++i) + { + PyErr_Clear(); + PyObject *itm = PyIter_Next(iter); + + if (!itm) + { + if (PyErr_Occurred()) + { + delete ql; + Py_DECREF(iter); + *sipIsErr = 1; + + return 0; + } + + break; + } + + int state; + QModelRoleData *t = reinterpret_cast<QModelRoleData *>( + sipForceConvertToType(itm, sipType_QModelRoleData, + sipTransferObj, SIP_NOT_NONE, &state, sipIsErr)); + + if (*sipIsErr) + { + PyErr_Format(PyExc_TypeError, + "index %zd has type '%s' but 'QModelRoleData' is expected", + i, sipPyTypeName(Py_TYPE(itm))); + + Py_DECREF(itm); + delete ql; + Py_DECREF(iter); + + return 0; + } + + ql->append(*t); + + sipReleaseType(t, sipType_QModelRoleData, state); + Py_DECREF(itm); + } + + Py_DECREF(iter); + + *sipCppPtr = ql; + + return sipGetState(sipTransferObj); +%End +}; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/sip/QtCore/qtypes.sip new/PyQt6-6.5.3/sip/QtCore/qtypes.sip --- old/PyQt6-6.5.2/sip/QtCore/qtypes.sip 2023-07-22 17:08:31.828155800 +0200 +++ new/PyQt6-6.5.3/sip/QtCore/qtypes.sip 2023-10-10 13:02:59.893588300 +0200 @@ -33,10 +33,10 @@ typedef unsigned long ulong; %End %If (Qt_6_5_0 -) -typedef signed char qint8; +typedef signed char qint8 /PyInt/; %End %If (Qt_6_5_0 -) -typedef unsigned char quint8; +typedef unsigned char quint8 /PyInt/; %End %If (Qt_6_5_0 -) typedef short qint16; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/PyQt6-6.5.2/sip/QtWidgets/qcombobox.sip new/PyQt6-6.5.3/sip/QtWidgets/qcombobox.sip --- old/PyQt6-6.5.2/sip/QtWidgets/qcombobox.sip 2023-07-22 17:08:31.731340600 +0200 +++ new/PyQt6-6.5.3/sip/QtWidgets/qcombobox.sip 2023-10-10 13:02:59.825426600 +0200 @@ -38,18 +38,8 @@ void setDuplicatesEnabled(bool enable); void setFrame(bool); bool hasFrame() const; -%If (Qt_6_2_0 -) - int findText(const QString &text, Qt::MatchFlags flags = static_cast<QFlags<Qt::MatchFlag>>(Qt::MatchExactly | Qt::MatchCaseSensitive)) const; -%End -%If (- Qt_6_2_0) int findText(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; -%End -%If (Qt_6_2_0 -) - int findData(const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = static_cast<QFlags<Qt::MatchFlag>>(Qt::MatchExactly | Qt::MatchCaseSensitive)) const; -%End -%If (- Qt_6_2_0) int findData(const QVariant &data, int role = Qt::UserRole, Qt::MatchFlags flags = Qt::MatchExactly|Qt::MatchCaseSensitive) const; -%End enum InsertPolicy { ++++++ pyqt6-fix-build-with-qt-6.6.0.patch ++++++ diff -ru PyQt6-6.5.2.orig/sip/QtSql/qsqlresult.sip PyQt6-6.5.2/sip/QtSql/qsqlresult.sip --- PyQt6-6.5.2.orig/sip/QtSql/qsqlresult.sip 2023-10-11 16:46:02.317332289 +0200 +++ PyQt6-6.5.2/sip/QtSql/qsqlresult.sip 2023-10-11 17:26:17.722706788 +0200 @@ -63,7 +63,7 @@ QSql::ParamType bindValueType(const QString &placeholder) const; QSql::ParamType bindValueType(int pos) const; int boundValueCount() const; - QList<QVariant> &boundValues() const; + QVariantList boundValues() const; QString executedQuery() const; QString boundValueName(int pos) const; void clear();