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 2025-06-18 22:28:28 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/python-PyQt6 (Old) and /work/SRC/openSUSE:Factory/.python-PyQt6.new.19631 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "python-PyQt6" Wed Jun 18 22:28:28 2025 rev:31 rq:1284331 version:6.9.1 Changes: -------- --- /work/SRC/openSUSE:Factory/python-PyQt6/python-PyQt6.changes 2025-04-28 16:16:24.069317512 +0200 +++ /work/SRC/openSUSE:Factory/.python-PyQt6.new.19631/python-PyQt6.changes 2025-06-18 22:28:30.495084689 +0200 @@ -1,0 +2,16 @@ +Mon Jun 9 16:50:12 UTC 2025 - Ben Greiner <c...@bnavigator.de> + +- Update to 6.9.1 + * The licensing information now conforms to PEP 639. + * Added the missing setNativeArguments() and nativeArguments() to + QProcess (Windows only). + * Enums that have a base type smaller than int are now properly + specified and handled. + * Fixed a regression that broke building against versions of Qt + older than v6.5. + * Fixed pyuic6 to handle QIcons created from QIcon.ThemeIcon. +- Release note for 6.9.0 + * This adds support for Qt v6.9. +- Drop PyQt6-Qt6.9.0.patch + +------------------------------------------------------------------- Old: ---- PyQt6-Qt6.9.0.patch pyqt6-6.8.1.tar.gz New: ---- pyqt6-6.9.1.tar.gz ----------(Old B)---------- Old: * This adds support for Qt v6.9. - Drop PyQt6-Qt6.9.0.patch ----------(Old E)---------- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ python-PyQt6.spec ++++++ --- /var/tmp/diff_new_pack.HFap4n/_old 2025-06-18 22:28:31.543128020 +0200 +++ /var/tmp/diff_new_pack.HFap4n/_new 2025-06-18 22:28:31.543128020 +0200 @@ -40,7 +40,7 @@ %{?sle15_python_module_pythons} Name: python-%{mname}%{?pkg_suffix} -Version: 6.8.1 +Version: 6.9.1 Release: 0 Summary: Python bindings for Qt 6 License: GPL-3.0-only OR SUSE-GPL-2.0-with-FLOSS-exception OR NonFree @@ -51,15 +51,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 -# PATCH-FIX-UPSTREAM PyQt6-Qt6.9.0.patch -- this is basically 6.9.0.dev2504021615 without the version bump -Patch2: PyQt6-Qt6.9.0.patch # PATCH-FIX-UPSTREAM fix-build-without-qtcore.patch -- Allow building only the Qt6Pdf bindings Patch3: fix-build-without-qtcore.patch BuildRequires: %{python_module PyQt6-sip >= 13.8} BuildRequires: %{python_module dbus-python-devel >= 0.8} BuildRequires: %{python_module devel >= 3.9} BuildRequires: %{python_module pyqt-builder >= 1.17} -BuildRequires: %{python_module sip-devel >= 6.9} +BuildRequires: %{python_module sip-devel >= 6.12} BuildRequires: dbus-1-devel BuildRequires: dos2unix BuildRequires: fdupes @@ -238,7 +236,7 @@ rm -Rf %{buildroot}%{$python_sitelib}/dbus \ %{buildroot}%{$python_sitearch}/PyQt6/uic \ %{buildroot}%{$python_sitearch}/PyQt6/lupdate \ - %{buildroot}%{$python_sitearch}/PyQt6-%{version}.dist-info + %{buildroot}%{$python_sitearch}/[Pp]y[Qq]t6-%{version}.dist-info rm %{buildroot}%{$python_sitearch}/PyQt6/__init__.py \ %{buildroot}%{$python_sitearch}/PyQt6/dbus_mainloop.abi3.so \ %{buildroot}%{$python_sitearch}/PyQt6/py.typed \ @@ -271,7 +269,7 @@ %if %{without qt6pdf} %doc README.md NEWS ChangeLog %{python_sitearch}/PyQt6/ -%{python_sitearch}/PyQt6-%{version}.dist-info/ +%{python_sitearch}/[Pp]y[Qq]t6-%{version}.dist-info/ %dir %{python_sitelib}/dbus %dir %{python_sitelib}/dbus/mainloop %{python_sitelib}/dbus/mainloop/pyqt6.py ++++++ pyqt6-6.8.1.tar.gz -> pyqt6-6.9.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/ChangeLog new/pyqt6-6.9.1/ChangeLog --- old/pyqt6-6.8.1/ChangeLog 2025-02-03 16:22:08.462368200 +0100 +++ new/pyqt6-6.9.1/ChangeLog 2025-06-03 17:55:52.321282600 +0200 @@ -1,3 +1,104 @@ +2025-06-03 Phil Thompson <p...@riverbankcomputing.com> + + * NEWS: + Updated the NEWS file. + [e63845987630] [6.9.1] <6.9-maint> + +2025-05-24 Phil Thompson <p...@riverbankcomputing.com> + + * pyproject.toml: + Uses PEP 639 licensing. + [86e15de01545] <6.9-maint> + + * PyQt6.msp, pyproject.toml: + Uses the SIP v6.12 suport for C++11 enum base types to fix issues on + big-endian systems. + [3db546b02d04] <6.9-maint> + +2025-04-25 Phil Thompson <p...@riverbankcomputing.com> + + * PyQt6.msp: + Fixed building against versions of Qt older than v6.5 + (QChar::Script). + [2ed70184e602] <6.9-maint> + +2025-04-24 Phil Thompson <p...@riverbankcomputing.com> + + * PyQt6.msp: + Clarified the comment about the need for the re-implementation of + __hash__() in QBluetoothUuid (ie. it is not a SIP bug). + [db1f2a9ae3a0] <6.9-maint> + +2025-04-11 Phil Thompson <p...@riverbankcomputing.com> + + * extras/uic/icon_cache.py: + Fixed pyuic6 to handle QIcons created from QIcon.ThemeIcon. + [f4416235ca4e] <6.9-maint> + +2025-04-08 Phil Thompson <p...@riverbankcomputing.com> + + * PyQt6.msp: + Added the missing (Windows only) setNativeArguments() and + nativeArguments() to QProcess. + [674acd983d63] <6.9-maint> + +2025-04-03 Phil Thompson <p...@riverbankcomputing.com> + + * .hgtags: + Added tag 6.9.0 for changeset 5e6322462b6b + [400570e1b248] + + * NEWS: + Updated the NEWS file. + [5e6322462b6b] [6.9.0] + +2025-04-02 Phil Thompson <p...@riverbankcomputing.com> + + * project.py: + Backout the hack required to build QtStateMachine on Qt v6.9.0rc. + [d84b0d490ff2] + +2025-03-27 Phil Thompson <p...@riverbankcomputing.com> + + * PyQt6.msp, qpy/QtCore/qpycore_std_chrono_duration.sip: + Implemented std::chrono::milliseconds as a mapped type. + [e31c76dbc604] + +2025-03-21 Phil Thompson <p...@riverbankcomputing.com> + + * qpy/QtCore/qpycore_std_chrono_duration.sip: + Implemented std::chrono::seconds as a mapped type for + PyQt6-NetworkAuth. + [23f0ec8141eb] + +2025-03-17 Phil Thompson <p...@riverbankcomputing.com> + + * PyQt6.msp, project.py, qpy/QtCore/qpycore_enums_flags_metatype.cpp: + Updated for Qt v6.9.0rc. + [b9a66b2dbde4] + + * Merged the 6.8-maint branch. + [4cc56d430f47] + +2025-02-24 Phil Thompson <p...@riverbankcomputing.com> + + * PyQt6.msp: + Fixed a crash when garbage collecting a QModelRoleDataSpan created + from a list of QModelRoleData instances. + [c6efaaff87c5] <6.8-maint> + +2025-02-07 Phil Thompson <p...@riverbankcomputing.com> + + * extras/uic/uiparser.py: + Fixed a pyuic6 bug handling fully scoped alignment flags. + [7480cca87b72] <6.8-maint> + +2025-02-03 Phil Thompson <p...@riverbankcomputing.com> + + * .hgtags: + Added tag 6.8.1 for changeset c774d4388743 + [ed39f83755bb] <6.8-maint> + 2025-02-01 Phil Thompson <p...@riverbankcomputing.com> * PyQt6.msp: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/NEWS new/pyqt6-6.9.1/NEWS --- old/pyqt6-6.8.1/NEWS 2025-02-03 16:22:08.463811000 +0100 +++ new/pyqt6-6.9.1/NEWS 2025-06-03 17:55:52.322833800 +0200 @@ -1,3 +1,17 @@ +v6.9.1 3rd June 2025 + - The licensing information now conforms to PEP 639. + - Added the missing setNativeArguments() and nativeArguments() to QProcess + (Windows only). + - Enums that have a base type smaller than int are now properly specified and + handled. + - Fixed a regression that broke building against versions of Qt older than + v6.5. + - Fixed pyuic6 to handle QIcons created from QIcon.ThemeIcon. + +v6.9.0 3rd April 2025 + - Added support for Qt v6.9. + - Bug fixes. + v6.8.1 27th January 2025 - Added the QtStateMachine module. - Bug fixes. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/PKG-INFO new/pyqt6-6.9.1/PKG-INFO --- old/pyqt6-6.8.1/PKG-INFO 2025-02-03 16:22:10.601570600 +0100 +++ new/pyqt6-6.9.1/PKG-INFO 2025-06-03 17:55:54.513049600 +0200 @@ -1,12 +1,13 @@ -Metadata-Version: 2.1 +Metadata-Version: 2.4 Name: PyQt6 -Version: 6.8.1 +Version: 6.9.1 Requires-Python: >=3.9 Summary: Python bindings for the Qt cross platform application toolkit Description-Content-Type: text/markdown Project-Url: homepage, https://www.riverbankcomputing.com/software/pyqt/ Requires-Dist: PyQt6-sip (>=13.8, <14) -License: GPL v3 +License-Expression: GPL-3.0-only +License-File: LICENSE Author-Email: Riverbank Computing Limited <i...@riverbankcomputing.com> # PyQt6 - Comprehensive Python Bindings for Qt v6 diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/project.py new/pyqt6-6.9.1/project.py --- old/pyqt6-6.8.1/project.py 2025-02-03 16:22:08.600111500 +0100 +++ new/pyqt6-6.9.1/project.py 2025-06-03 17:55:52.456821200 +0200 @@ -834,7 +834,8 @@ def __init__(self, project): """ Initialise the bindings. """ - super().__init__(project, 'QtStateMachine', qmake_QT=['statemachine'], + super().__init__(project, 'QtStateMachine', + qmake_QT=['statemachine'], test_headers=['qstate.h'], test_statement='new QState()') diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/pyproject.toml new/pyqt6-6.9.1/pyproject.toml --- old/pyqt6-6.8.1/pyproject.toml 2025-02-03 16:22:08.600242600 +0100 +++ new/pyqt6-6.9.1/pyproject.toml 2025-06-03 17:55:52.456951900 +0200 @@ -1,17 +1,18 @@ # Specify the build system for the project. [build-system] -requires = ["sip >=6.9, <7", "PyQt-builder >=1.17, <2"] +requires = ["sip >=6.12, <7", "PyQt-builder >=1.17, <2"] build-backend = "sipbuild.api" [project] name = "PyQt6" -version = "6.8.1" +version = "6.9.1" description = "Python bindings for the Qt cross platform application toolkit" readme = "README.md" urls.homepage = "https://www.riverbankcomputing.com/software/pyqt/" dependencies = [] requires-python = ">=3.9" -license = {text = "GPL v3"} +license = "GPL-3.0-only" +license-files = ["LICENSE"] [[project.authors]] name = "Riverbank Computing Limited" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/qpy/QtCore/qpycore_enums_flags_metatype.cpp new/pyqt6-6.9.1/qpy/QtCore/qpycore_enums_flags_metatype.cpp --- old/pyqt6-6.8.1/qpy/QtCore/qpycore_enums_flags_metatype.cpp 2025-02-03 16:22:08.510631600 +0100 +++ new/pyqt6-6.9.1/qpy/QtCore/qpycore_enums_flags_metatype.cpp 2025-06-03 17:55:52.368193400 +0200 @@ -45,7 +45,11 @@ { mti->alignment = alignof(unsigned); mti->size = sizeof(unsigned); +#if QT_VERSION >= 0x060900 + mti->flags = QtPrivate::QMetaTypeForType<unsigned>::flags() | QMetaType::IsEnumeration | QMetaType::IsUnsignedEnumeration; +#else mti->flags = QtPrivate::QMetaTypeForType<unsigned>::Flags | QMetaType::IsEnumeration | QMetaType::IsUnsignedEnumeration; +#endif mti->defaultCtr = QtPrivate::QMetaTypeForType<unsigned>::getDefaultCtr(); mti->copyCtr = QtPrivate::QMetaTypeForType<unsigned>::getCopyCtr(); mti->moveCtr = QtPrivate::QMetaTypeForType<unsigned>::getMoveCtr(); @@ -61,7 +65,11 @@ { mti->alignment = alignof(int); mti->size = sizeof(int); +#if QT_VERSION >= 0x060900 + mti->flags = QtPrivate::QMetaTypeForType<int>::flags() | QMetaType::IsEnumeration; +#else mti->flags = QtPrivate::QMetaTypeForType<int>::Flags | QMetaType::IsEnumeration; +#endif mti->defaultCtr = QtPrivate::QMetaTypeForType<int>::getDefaultCtr(); mti->copyCtr = QtPrivate::QMetaTypeForType<int>::getCopyCtr(); mti->moveCtr = QtPrivate::QMetaTypeForType<int>::getMoveCtr(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtBluetooth/qbluetoothuuid.sip new/pyqt6-6.9.1/sip/QtBluetooth/qbluetoothuuid.sip --- old/pyqt6-6.8.1/sip/QtBluetooth/qbluetoothuuid.sip 2025-02-03 16:22:09.721215500 +0100 +++ new/pyqt6-6.9.1/sip/QtBluetooth/qbluetoothuuid.sip 2025-06-03 17:55:53.598730600 +0200 @@ -336,9 +336,10 @@ static QString characteristicToString(QBluetoothUuid::CharacteristicType uuid); static QString descriptorToString(QBluetoothUuid::DescriptorType uuid); %If (Qt_6_7_0 -) + // This is reimplemented because the == and != operators prevent the + // super-class's implementation from being inherited. Py_hash_t __hash__() const; %MethodCode - // The tp_hash slot (from QUuid) should be inherited. Is this a SIP bug? sipRes = qHash(*sipCpp); %End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/QtCoremod.sip new/pyqt6-6.9.1/sip/QtCore/QtCoremod.sip --- old/pyqt6-6.8.1/sip/QtCore/QtCoremod.sip 2025-02-03 16:22:09.958583400 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/QtCoremod.sip 2025-06-03 17:55:53.857116700 +0200 @@ -22,7 +22,7 @@ %Module(name=PyQt6.QtCore, call_super_init=True, default_VirtualErrorHandler=PyQt6, keyword_arguments="Optional", use_limited_api=True, py_ssize_t_clean=True) -%Timeline {Qt_6_0_0 Qt_6_1_0 Qt_6_2_0 Qt_6_3_0 Qt_6_4_0 Qt_6_5_0 Qt_6_6_0 Qt_6_7_0 Qt_6_8_0} +%Timeline {Qt_6_0_0 Qt_6_1_0 Qt_6_2_0 Qt_6_3_0 Qt_6_4_0 Qt_6_5_0 Qt_6_6_0 Qt_6_7_0 Qt_6_8_0 Qt_6_9_0} %Platforms {Android iOS Linux macOS WebAssembly Windows} @@ -76,8 +76,8 @@ const char *PYQT_VERSION_STR; %ModuleCode -static int PYQT_VERSION = 0x060801; -static const char *PYQT_VERSION_STR = "6.8.1"; +static int PYQT_VERSION = 0x060901; +static const char *PYQT_VERSION_STR = "6.9.1"; %End %Include qglobal.sip @@ -126,6 +126,7 @@ %Include qiodevicebase.sip %Include qitemselectionmodel.sip %Include qjsondocument.sip +%Include qjsonparseerror.sip %Include qjsonvalue.sip %Include qlibrary.sip %Include qlibraryinfo.sip @@ -200,6 +201,7 @@ %Include qxmlstream.sip %Include qyieldcpu.sip %Include qanystringview.sip +%Include qpycore_std_chrono_duration.sip %Include qflags.sip %Include qstring.sip %Include qbytearraylist.sip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qabstractitemmodel.sip new/pyqt6-6.9.1/sip/QtCore/qabstractitemmodel.sip --- old/pyqt6-6.8.1/sip/QtCore/qabstractitemmodel.sip 2025-02-03 16:22:09.936914400 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qabstractitemmodel.sip 2025-06-03 17:55:53.833854200 +0200 @@ -344,7 +344,7 @@ // 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)); + delete reinterpret_cast<QList<QModelRoleData>* >(PyCapsule_GetPointer(mrd_obj, NULL)); } %End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qcborcommon.sip new/pyqt6-6.9.1/sip/QtCore/qcborcommon.sip --- old/pyqt6-6.8.1/sip/QtCore/qcborcommon.sip 2025-02-03 16:22:09.971588000 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qcborcommon.sip 2025-06-03 17:55:53.871214600 +0200 @@ -28,7 +28,7 @@ // Cast-XML has a bug which means that it places this definition in qmetatype.h // (where it is first declared). -enum class QCborSimpleType { +enum class QCborSimpleType : quint8 { False /PyName=False_/, True /PyName=True_/, Null, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qchar.sip new/pyqt6-6.9.1/sip/QtCore/qchar.sip --- old/pyqt6-6.8.1/sip/QtCore/qchar.sip 2025-02-03 16:22:09.961596500 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qchar.sip 2025-06-03 17:55:53.860371800 +0200 @@ -211,13 +211,48 @@ Script_DivesAkuru, Script_KhitanSmallScript, Script_Yezidi, +%If (Qt_6_3_0 -) Script_CyproMinoan, +%End +%If (Qt_6_3_0 -) + Script_NagMundari, +%End +%If (Qt_6_3_0 -) Script_OldUyghur, +%End +%If (Qt_6_3_0 -) Script_Tangsa, +%End +%If (Qt_6_3_0 -) Script_Toto, +%End +%If (Qt_6_3_0 -) Script_Vithkuqi, +%End +%If (Qt_6_5_0 -) Script_Kawi, - Script_NagMundari, +%End +%If (Qt_6_9_0 -) + Script_Garay, +%End +%If (Qt_6_9_0 -) + Script_GurungKhema, +%End +%If (Qt_6_9_0 -) + Script_KiratRai, +%End +%If (Qt_6_9_0 -) + Script_OlOnal, +%End +%If (Qt_6_9_0 -) + Script_Sunuwar, +%End +%If (Qt_6_9_0 -) + Script_Todhri, +%End +%If (Qt_6_9_0 -) + Script_TuluTigalari, +%End }; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qcommandlineoption.sip new/pyqt6-6.9.1/sip/QtCore/qcommandlineoption.sip --- old/pyqt6-6.8.1/sip/QtCore/qcommandlineoption.sip 2025-02-03 16:22:09.989929400 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qcommandlineoption.sip 2025-06-03 17:55:53.890730600 +0200 @@ -47,6 +47,9 @@ { HiddenFromHelp, ShortOptionStyle, +%If (Qt_6_9_0 -) + IgnoreOptionsAfter, +%End }; typedef QFlags<QCommandLineOption::Flag> Flags; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qcommandlineparser.sip new/pyqt6-6.9.1/sip/QtCore/qcommandlineparser.sip --- old/pyqt6-6.8.1/sip/QtCore/qcommandlineparser.sip 2025-02-03 16:22:09.995036800 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qcommandlineparser.sip 2025-06-03 17:55:53.896286700 +0200 @@ -69,6 +69,18 @@ }; void setOptionsAfterPositionalArgumentsMode(QCommandLineParser::OptionsAfterPositionalArgumentsMode mode); +%If (Qt_6_9_0 -) + + enum class MessageType + { + Information, + Error, + }; + +%End +%If (Qt_6_9_0 -) + static void showMessageAndExit(QCommandLineParser::MessageType type, const QString &message, int exitCode = 0); +%End private: QCommandLineParser(const QCommandLineParser &); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qconcatenatetablesproxymodel.sip new/pyqt6-6.9.1/sip/QtCore/qconcatenatetablesproxymodel.sip --- old/pyqt6-6.8.1/sip/QtCore/qconcatenatetablesproxymodel.sip 2025-02-03 16:22:09.994344000 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qconcatenatetablesproxymodel.sip 2025-06-03 17:55:53.895512800 +0200 @@ -87,4 +87,7 @@ virtual bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent); virtual QSize span(const QModelIndex &index) const; QList<QAbstractItemModel *> sourceModels() const; +%If (Qt_6_9_0 -) + virtual QHash<int, QByteArray> roleNames() const; +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qcoreevent.sip new/pyqt6-6.9.1/sip/QtCore/qcoreevent.sip --- old/pyqt6-6.8.1/sip/QtCore/qcoreevent.sip 2025-02-03 16:22:09.954377400 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qcoreevent.sip 2025-06-03 17:55:53.852472300 +0200 @@ -217,6 +217,9 @@ %If (Qt_6_7_0 -) ParentWindowChange, %End +%If (Qt_6_9_0 -) + SafeAreaMarginsChange, +%End User, MaxUser, }; @@ -263,6 +266,9 @@ %End %End +%If (Qt_6_9_0 -) + bool matches(const QBasicTimer &timer) const; +%End }; class QChildEvent : public QEvent /NoDefaultCtors/ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qdatastream.sip new/pyqt6-6.9.1/sip/QtCore/qdatastream.sip --- old/pyqt6-6.8.1/sip/QtCore/qdatastream.sip 2025-02-03 16:22:09.957884300 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qdatastream.sip 2025-06-03 17:55:53.856367300 +0200 @@ -86,6 +86,9 @@ %If (Qt_6_8_0 -) Qt_6_8, %End +%If (Qt_6_9_0 -) + Qt_6_9, +%End }; enum ByteOrder diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qfile.sip new/pyqt6-6.9.1/sip/QtCore/qfile.sip --- old/pyqt6-6.8.1/sip/QtCore/qfile.sip 2025-02-03 16:22:10.000608200 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qfile.sip 2025-06-03 17:55:53.902248000 +0200 @@ -28,7 +28,12 @@ public: QFile(); +%If (Qt_6_9_0 -) + explicit QFile(const QString &name); +%End +%If (- Qt_6_9_0) QFile(const QString &name); +%End explicit QFile(QObject *parent /TransferThis/); QFile(const QString &name, QObject *parent /TransferThis/); virtual ~QFile(); @@ -63,4 +68,7 @@ static bool setPermissions(const QString &filename, QFileDevice::Permissions permissionSpec); bool moveToTrash(); static bool moveToTrash(const QString &fileName, QString *pathInTrash /Out/ = 0); +%If (Qt_6_9_0 -) + static bool supportsMoveToTrash(); +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qiodevice.sip new/pyqt6-6.9.1/sip/QtCore/qiodevice.sip --- old/pyqt6-6.8.1/sip/QtCore/qiodevice.sip 2025-02-03 16:22:09.971150000 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qiodevice.sip 2025-06-03 17:55:53.870738700 +0200 @@ -127,6 +127,9 @@ Py_END_ALLOW_THREADS %End +%If (Qt_6_9_0 -) + bool readLineInto(QByteArray *result, qint64 maxSize = 0) /ReleaseGIL/; +%End QByteArray readAll() /ReleaseGIL/; virtual bool canReadLine() const; void startTransaction(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qjsondocument.sip new/pyqt6-6.9.1/sip/QtCore/qjsondocument.sip --- old/pyqt6-6.8.1/sip/QtCore/qjsondocument.sip 2025-02-03 16:22:09.968941500 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qjsondocument.sip 2025-06-03 17:55:53.868305200 +0200 @@ -20,6 +20,8 @@ // WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. +%If (- Qt_6_9_0) + struct QJsonParseError { %TypeHeaderCode @@ -50,6 +52,8 @@ QJsonParseError::ParseError error; }; +%End + class QJsonDocument { %TypeHeaderCode diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qjsonparseerror.sip new/pyqt6-6.9.1/sip/QtCore/qjsonparseerror.sip --- old/pyqt6-6.8.1/sip/QtCore/qjsonparseerror.sip 1970-01-01 01:00:00.000000000 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qjsonparseerror.sip 2025-06-03 17:55:53.902536600 +0200 @@ -0,0 +1,55 @@ +// qjsonparseerror.sip generated by MetaSIP +// +// This file is part of the QtCore Python extension module. +// +// Copyright (c) 2025 Riverbank Computing Limited <i...@riverbankcomputing.com> +// +// This file is part of PyQt6. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// i...@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +%If (Qt_6_9_0 -) + +struct QJsonParseError +{ +%TypeHeaderCode +#include <qjsonparseerror.h> +%End + + enum ParseError + { + NoError, + UnterminatedObject, + MissingNameSeparator, + UnterminatedArray, + MissingValueSeparator, + IllegalValue, + TerminationByNumber, + IllegalNumber, + IllegalEscapeSequence, + IllegalUTF8String, + UnterminatedString, + MissingObject, + DeepNesting, + DocumentTooLarge, + GarbageAtEnd, + }; + + QString errorString() const; + int offset; + QJsonParseError::ParseError error; +}; + +%End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qjsonvalue.sip new/pyqt6-6.9.1/sip/QtCore/qjsonvalue.sip --- old/pyqt6-6.8.1/sip/QtCore/qjsonvalue.sip 2025-02-03 16:22:09.982108600 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qjsonvalue.sip 2025-06-03 17:55:53.882384500 +0200 @@ -81,6 +81,16 @@ %MethodCode sipRes = qHash(*sipCpp); %End + +%If (Qt_6_9_0 -) + typedef QJsonDocument::JsonFormat JsonFormat; +%End +%If (Qt_6_9_0 -) + static QJsonValue fromJson(QByteArrayView json, QJsonParseError *error /Out/ = 0); +%End +%If (Qt_6_9_0 -) + QByteArray toJson(QJsonValue::JsonFormat format = QJsonDocument::Indented) const; +%End }; QDataStream &operator<<(QDataStream &, const QJsonValue & /Constrained/) /ReleaseGIL/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qlocale.sip new/pyqt6-6.9.1/sip/QtCore/qlocale.sip --- old/pyqt6-6.8.1/sip/QtCore/qlocale.sip 2025-02-03 16:22:09.952786400 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qlocale.sip 2025-06-03 17:55:53.850721100 +0200 @@ -27,7 +27,7 @@ %End public: - enum Language + enum Language : ushort { C, Abkhazian, @@ -428,9 +428,15 @@ %If (Qt_6_8_0 -) Kuvi, %End +%If (Qt_6_9_0 -) + KaraKalpak, +%End +%If (Qt_6_9_0 -) + SwampyCree, +%End }; - enum Country + enum Country : ushort { AnyCountry, %If (Qt_6_2_0 -) @@ -742,7 +748,7 @@ %If (Qt_6_7_0 -) - enum class TagSeparator + enum class TagSeparator : char { Dash, Underscore, @@ -881,7 +887,7 @@ QString pmText() const; Qt::LayoutDirection textDirection() const; - enum Script + enum Script : ushort { AnyScript, ArabicScript, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qmetaobject.sip new/pyqt6-6.9.1/sip/QtCore/qmetaobject.sip --- old/pyqt6-6.8.1/sip/QtCore/qmetaobject.sip 2025-02-03 16:22:09.983637000 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qmetaobject.sip 2025-06-03 17:55:53.884086000 +0200 @@ -164,15 +164,28 @@ int value(int index) const; const char *scope() const; int keyToValue(const char *key, bool *ok = 0) const; +%If (Qt_6_9_0 -) + const char *valueToKey(quint64 value) const; +%End +%If (- Qt_6_9_0) const char *valueToKey(int value) const; +%End int keysToValue(const char *keys, bool *ok = 0) const; +%If (Qt_6_9_0 -) + QByteArray valueToKeys(quint64 value) const; +%End +%If (- Qt_6_9_0) QByteArray valueToKeys(int value) const; +%End bool isValid() const; bool isScoped() const; const char *enumName() const; %If (Qt_6_6_0 -) QMetaType metaType() const; %End +%If (Qt_6_9_0 -) + bool is64Bit() const; +%End }; class QMetaProperty diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qnamespace.sip new/pyqt6-6.9.1/sip/QtCore/qnamespace.sip --- old/pyqt6-6.8.1/sip/QtCore/qnamespace.sip 2025-02-03 16:22:09.966514300 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qnamespace.sip 2025-06-03 17:55:53.865497400 +0200 @@ -220,6 +220,12 @@ BypassWindowManagerHint, CoverWindow, MaximizeUsingFullscreenGeometryHint, +%If (Qt_6_9_0 -) + ExpandedClientAreaHint, +%End +%If (Qt_6_9_0 -) + NoTitleBarBackgroundHint, +%End }; typedef QFlags<Qt::WindowType> WindowFlags; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qprocess.sip new/pyqt6-6.9.1/sip/QtCore/qprocess.sip --- old/pyqt6-6.8.1/sip/QtCore/qprocess.sip 2025-02-03 16:22:09.998025700 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qprocess.sip 2025-06-03 17:55:53.899467000 +0200 @@ -186,6 +186,12 @@ void setProgram(const QString &program); QStringList arguments() const; void setArguments(const QStringList &arguments); +%If (Windows) + void setNativeArguments(const QString &arguments); +%End +%If (Windows) + QString nativeArguments() const; +%End virtual bool open(QIODeviceBase::OpenMode mode = QIODeviceBase::ReadWrite) /ReleaseGIL/; enum InputChannelMode @@ -216,6 +222,9 @@ %If (Qt_6_7_0 -) ResetIds, %End +%If (Qt_6_9_0 -) + DisableCoreDumps, +%End }; %End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qpycore_std_chrono_duration.sip new/pyqt6-6.9.1/sip/QtCore/qpycore_std_chrono_duration.sip --- old/pyqt6-6.8.1/sip/QtCore/qpycore_std_chrono_duration.sip 1970-01-01 01:00:00.000000000 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qpycore_std_chrono_duration.sip 2025-06-03 17:55:53.826380000 +0200 @@ -0,0 +1,79 @@ +// This is the SIP interface definition for the std::chrono::duration based +// mapped types. +// +// Copyright (c) 2025 Riverbank Computing Limited <i...@riverbankcomputing.com> +// +// This file is part of PyQt6. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// i...@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +%If (Qt_6_8_0 -) + +%MappedType std::chrono::milliseconds /TypeHint="int"/ +{ +%TypeHeaderCode +#include <chrono> +%End + +%ConvertFromTypeCode + return PyLong_FromLong(sipCpp->count()); +%End + +%ConvertToTypeCode + if (!sipIsErr) + { + PyErr_Clear(); + sipLong_AsLong(sipPy); + + return !PyErr_Occurred(); + } + + *sipCppPtr = new std::chrono::milliseconds(sipLong_AsLong(sipPy)); + + return sipGetState(sipTransferObj); +%End +}; + +%End + + +%If (Qt_6_9_0 -) + +%MappedType std::chrono::seconds /TypeHint="int"/ +{ +%TypeHeaderCode +#include <chrono> +%End + +%ConvertFromTypeCode + return PyLong_FromLong(sipCpp->count()); +%End + +%ConvertToTypeCode + if (!sipIsErr) + { + PyErr_Clear(); + sipLong_AsLong(sipPy); + + return !PyErr_Occurred(); + } + + *sipCppPtr = new std::chrono::seconds(sipLong_AsLong(sipPy)); + + return sipGetState(sipTransferObj); +%End +}; + +%End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qsortfilterproxymodel.sip new/pyqt6-6.9.1/sip/QtCore/qsortfilterproxymodel.sip --- old/pyqt6-6.8.1/sip/QtCore/qsortfilterproxymodel.sip 2025-02-03 16:22:09.968030500 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qsortfilterproxymodel.sip 2025-06-03 17:55:53.867189600 +0200 @@ -95,7 +95,12 @@ void setRecursiveFilteringEnabled(bool recursive); protected: +%If (Qt_6_9_0 -) + void beginFilterChange(); +%End void invalidateFilter(); + void invalidateRowsFilter(); + void invalidateColumnsFilter(); signals: void dynamicSortFilterChanged(bool dynamicSortFilter); @@ -110,10 +115,6 @@ bool autoAcceptChildRows() const; void setAutoAcceptChildRows(bool accept); -protected: - void invalidateRowsFilter(); - void invalidateColumnsFilter(); - signals: void autoAcceptChildRowsChanged(bool autoAcceptChildRows); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qstringconverter_base.sip new/pyqt6-6.9.1/sip/QtCore/qstringconverter_base.sip --- old/pyqt6-6.8.1/sip/QtCore/qstringconverter_base.sip 2025-02-03 16:22:09.995869200 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qstringconverter_base.sip 2025-06-03 17:55:53.897182500 +0200 @@ -42,6 +42,9 @@ typedef QFlags<QStringConverterBase::Flag> Flags; protected: +%If (Qt_6_9_0 -) + QStringConverterBase(); +%End ~QStringConverterBase(); }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qthread.sip new/pyqt6-6.9.1/sip/QtCore/qthread.sip --- old/pyqt6-6.8.1/sip/QtCore/qthread.sip 2025-02-03 16:22:09.961955000 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qthread.sip 2025-06-03 17:55:53.860796000 +0200 @@ -88,4 +88,20 @@ %If (Qt_6_8_0 -) bool isCurrentThread() const; %End +%If (Qt_6_9_0 -) + + enum class QualityOfService + { + Auto, + High, + Eco, + }; + +%End +%If (Qt_6_9_0 -) + void setServiceLevel(QThread::QualityOfService serviceLevel); +%End +%If (Qt_6_9_0 -) + QThread::QualityOfService serviceLevel() const; +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/qthreadpool.sip new/pyqt6-6.9.1/sip/QtCore/qthreadpool.sip --- old/pyqt6-6.8.1/sip/QtCore/qthreadpool.sip 2025-02-03 16:22:09.946946400 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/qthreadpool.sip 2025-06-03 17:55:53.844698700 +0200 @@ -177,4 +177,10 @@ %End %End +%If (Qt_6_9_0 -) + void setServiceLevel(QThread::QualityOfService serviceLevel); +%End +%If (Qt_6_9_0 -) + QThread::QualityOfService serviceLevel() const; +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtCore/quuid.sip new/pyqt6-6.9.1/sip/QtCore/quuid.sip --- old/pyqt6-6.8.1/sip/QtCore/quuid.sip 2025-02-03 16:22:10.005590700 +0100 +++ new/pyqt6-6.9.1/sip/QtCore/quuid.sip 2025-06-03 17:55:53.907751600 +0200 @@ -45,6 +45,9 @@ Name, Random, Sha1, +%If (Qt_6_9_0 -) + UnixEpoch, +%End }; enum StringFormat @@ -106,14 +109,17 @@ %If (- Qt_6_8_0) static QUuid createUuidV3(const QUuid &ns, const QByteArray &baseData); %End + static QUuid createUuidV3(const QUuid &ns, const QString &baseData); %If (Qt_6_8_0 -) static QUuid createUuidV5(QUuid ns, QByteArrayView baseData); %End %If (- Qt_6_8_0) static QUuid createUuidV5(const QUuid &ns, const QByteArray &baseData); %End - static QUuid createUuidV3(const QUuid &ns, const QString &baseData); static QUuid createUuidV5(const QUuid &ns, const QString &baseData); +%If (Qt_6_9_0 -) + static QUuid createUuidV7(); +%End QUuid::Variant variant() const; QUuid::Version version() const; QByteArray toByteArray(QUuid::StringFormat mode = QUuid::WithBraces) const; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/QtGuimod.sip new/pyqt6-6.9.1/sip/QtGui/QtGuimod.sip --- old/pyqt6-6.8.1/sip/QtGui/QtGuimod.sip 2025-02-03 16:22:09.816816800 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/QtGuimod.sip 2025-06-03 17:55:53.703135000 +0200 @@ -66,6 +66,7 @@ %Include qfontdatabase.sip %Include qfontinfo.sip %Include qfontmetrics.sip +%Include qfontvariableaxis.sip %Include qgenericmatrix.sip %Include qglyphrun.sip %Include qguiapplication.sip @@ -91,6 +92,7 @@ %Include qpaintengine.sip %Include qpainter.sip %Include qpainterpath.sip +%Include qpainterstateguard.sip %Include qpalette.sip %Include qpdfoutputintent.sip %Include qpdfwriter.sip diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qbrush.sip new/pyqt6-6.9.1/sip/QtGui/qbrush.sip --- old/pyqt6-6.8.1/sip/QtGui/qbrush.sip 2025-02-03 16:22:09.825863600 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qbrush.sip 2025-06-03 17:55:53.713065100 +0200 @@ -420,3 +420,28 @@ void setCenter(qreal x, qreal y); void setAngle(qreal angle); }; + +%If (Qt_6_9_0 -) +bool operator!=(const QBrush &lhs, const Qt::BrushStyle &rhs); +%End +%If (Qt_6_9_0 -) +bool operator!=(const QBrush &lhs, const Qt::GlobalColor &rhs); +%End +%If (Qt_6_9_0 -) +bool operator!=(const QBrush &lhs, const QColor &rhs); +%End +%If (Qt_6_9_0 -) +bool operator!=(const QColor &lhs, const QBrush &rhs); +%End +%If (Qt_6_9_0 -) +bool operator==(const QBrush &lhs, const Qt::BrushStyle &rhs); +%End +%If (Qt_6_9_0 -) +bool operator==(const QBrush &lhs, const Qt::GlobalColor &rhs); +%End +%If (Qt_6_9_0 -) +bool operator==(const QBrush &lhs, const QColor &rhs); +%End +%If (Qt_6_9_0 -) +bool operator==(const QColor &lhs, const QBrush &rhs); +%End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qcolorspace.sip new/pyqt6-6.9.1/sip/QtGui/qcolorspace.sip --- old/pyqt6-6.8.1/sip/QtGui/qcolorspace.sip 2025-02-03 16:22:09.784187800 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qcolorspace.sip 2025-06-03 17:55:53.668483300 +0200 @@ -117,6 +117,9 @@ QColorSpace(QPointF whitePoint, QColorSpace::TransferFunction transferFunction, float gamma = 0.F); %End QColorSpace(const QColorSpace &colorSpace); +%If (Qt_6_9_0 -) + QColorSpace(const QColorSpace::PrimaryPoints &primaryPoints, QColorSpace::TransferFunction transferFunction, float gamma = 0.F); +%End ~QColorSpace(); void swap(QColorSpace &colorSpace /Constrained/); QColorSpace::Primaries primaries() const; @@ -163,6 +166,25 @@ %If (Qt_6_8_0 -) bool isValidTarget() const; %End +%If (Qt_6_9_0 -) + + struct PrimaryPoints + { +%TypeHeaderCode +#include <qcolorspace.h> +%End + + static QColorSpace::PrimaryPoints fromPrimaries(QColorSpace::Primaries primaries); + bool isValid() const; + }; + +%End +%If (Qt_6_9_0 -) + void setPrimaryPoints(const QColorSpace::PrimaryPoints &primaryPoints); +%End +%If (Qt_6_9_0 -) + QColorSpace::PrimaryPoints primaryPoints() const; +%End }; bool operator==(const QColorSpace &colorSpace1, const QColorSpace &colorSpace2); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qfontdatabase.sip new/pyqt6-6.9.1/sip/QtGui/qfontdatabase.sip --- old/pyqt6-6.8.1/sip/QtGui/qfontdatabase.sip 2025-02-03 16:22:09.783621500 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qfontdatabase.sip 2025-06-03 17:55:53.667811200 +0200 @@ -113,6 +113,18 @@ %If (Qt_6_8_0 -) static QStringList applicationFallbackFontFamilies(QChar::Script script); %End +%If (Qt_6_9_0 -) + static void addApplicationEmojiFontFamily(const QString &familyName); +%End +%If (Qt_6_9_0 -) + static bool removeApplicationEmojiFontFamily(const QString &familyName); +%End +%If (Qt_6_9_0 -) + static void setApplicationEmojiFontFamilies(const QStringList &familyNames); +%End +%If (Qt_6_9_0 -) + static QStringList applicationEmojiFontFamilies(); +%End private: QFontDatabase(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qfontinfo.sip new/pyqt6-6.9.1/sip/QtGui/qfontinfo.sip --- old/pyqt6-6.8.1/sip/QtGui/qfontinfo.sip 2025-02-03 16:22:09.785881500 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qfontinfo.sip 2025-06-03 17:55:53.670450000 +0200 @@ -43,4 +43,7 @@ bool exactMatch() const; QString styleName() const; void swap(QFontInfo &other /Constrained/); +%If (Qt_6_9_0 -) + QList<QFontVariableAxis> variableAxes() const; +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qfontvariableaxis.sip new/pyqt6-6.9.1/sip/QtGui/qfontvariableaxis.sip --- old/pyqt6-6.8.1/sip/QtGui/qfontvariableaxis.sip 1970-01-01 01:00:00.000000000 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qfontvariableaxis.sip 2025-06-03 17:55:53.710546700 +0200 @@ -0,0 +1,48 @@ +// qfontvariableaxis.sip generated by MetaSIP +// +// This file is part of the QtGui Python extension module. +// +// Copyright (c) 2025 Riverbank Computing Limited <i...@riverbankcomputing.com> +// +// This file is part of PyQt6. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// i...@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +%If (Qt_6_9_0 -) + +class QFontVariableAxis +{ +%TypeHeaderCode +#include <qfontvariableaxis.h> +%End + +public: + QFontVariableAxis(); + QFontVariableAxis(const QFontVariableAxis &axis); + ~QFontVariableAxis(); + void swap(QFontVariableAxis &other /Constrained/); + QFont::Tag tag() const; + void setTag(QFont::Tag tag); + QString name() const; + void setName(const QString &name); + qreal minimumValue() const; + void setMinimumValue(qreal minimumValue); + qreal maximumValue() const; + void setMaximumValue(qreal maximumValue); + qreal defaultValue() const; + void setDefaultValue(qreal defaultValue); +}; + +%End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qimage.sip new/pyqt6-6.9.1/sip/QtGui/qimage.sip --- old/pyqt6-6.8.1/sip/QtGui/qimage.sip 2025-02-03 16:22:09.788226100 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qimage.sip 2025-06-03 17:55:53.672907000 +0200 @@ -342,6 +342,12 @@ %If (Qt_6_8_0 -) QImage colorTransformed(const QColorTransform &transform, QImage::Format format, Qt::ImageConversionFlags flags = Qt::AutoColor); %End +%If (Qt_6_9_0 -) + QImage flipped(Qt::Orientations orient = Qt::Vertical) const; +%End +%If (Qt_6_9_0 -) + void flip(Qt::Orientations orient = Qt::Vertical); +%End }; QDataStream &operator<<(QDataStream &, const QImage &) /ReleaseGIL/; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qinputdevice.sip new/pyqt6-6.9.1/sip/QtGui/qinputdevice.sip --- old/pyqt6-6.8.1/sip/QtGui/qinputdevice.sip 2025-02-03 16:22:09.786975400 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qinputdevice.sip 2025-06-03 17:55:53.671660000 +0200 @@ -81,6 +81,9 @@ signals: void availableVirtualGeometryChanged(QRect area); +%If (Qt_6_9_0 -) + void capabilitiesChanged(QInputDevice::Capabilities capabilities); +%End public: %If (Qt_6_3_0 -) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qpainterstateguard.sip new/pyqt6-6.9.1/sip/QtGui/qpainterstateguard.sip --- old/pyqt6-6.8.1/sip/QtGui/qpainterstateguard.sip 1970-01-01 01:00:00.000000000 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qpainterstateguard.sip 2025-06-03 17:55:53.674895300 +0200 @@ -0,0 +1,48 @@ +// qpainterstateguard.sip generated by MetaSIP +// +// This file is part of the QtGui Python extension module. +// +// Copyright (c) 2025 Riverbank Computing Limited <i...@riverbankcomputing.com> +// +// This file is part of PyQt6. +// +// This file may be used under the terms of the GNU General Public License +// version 3.0 as published by the Free Software Foundation and appearing in +// the file LICENSE included in the packaging of this file. Please review the +// following information to ensure the GNU General Public License version 3.0 +// requirements will be met: http://www.gnu.org/copyleft/gpl.html. +// +// If you do not wish to use this file under the terms of the GPL version 3.0 +// then you may purchase a commercial license. For more information contact +// i...@riverbankcomputing.com. +// +// This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE +// WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. + + +%If (Qt_6_9_0 -) + +class QPainterStateGuard +{ +%TypeHeaderCode +#include <qpainterstateguard.h> +%End + +public: + enum class InitialState + { + Save, + NoSave, + }; + + QPainterStateGuard(QPainter *painter, QPainterStateGuard::InitialState state = QPainterStateGuard::InitialState::Save); + ~QPainterStateGuard(); + void swap(QPainterStateGuard &other /Constrained/); + void save(); + void restore(); + +private: + QPainterStateGuard(const QPainterStateGuard &); +}; + +%End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qpdfwriter.sip new/pyqt6-6.9.1/sip/QtGui/qpdfwriter.sip --- old/pyqt6-6.8.1/sip/QtGui/qpdfwriter.sip 2025-02-03 16:22:09.800499200 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qpdfwriter.sip 2025-06-03 17:55:53.685680600 +0200 @@ -77,4 +77,10 @@ %If (Qt_6_8_0 -) void setOutputIntent(const QPdfOutputIntent &intent); %End +%If (Qt_6_9_0 -) + QString author() const; +%End +%If (Qt_6_9_0 -) + void setAuthor(const QString &author); +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qpen.sip new/pyqt6-6.9.1/sip/QtGui/qpen.sip --- old/pyqt6-6.8.1/sip/QtGui/qpen.sip 2025-02-03 16:22:09.781445700 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qpen.sip 2025-06-03 17:55:53.665501800 +0200 @@ -101,3 +101,21 @@ QDataStream &operator<<(QDataStream &, const QPen &) /ReleaseGIL/; QDataStream &operator>>(QDataStream &, QPen & /Constrained/) /ReleaseGIL/; +%If (Qt_6_9_0 -) +bool operator!=(const QPen &lhs, const Qt::PenStyle &rhs); +%End +%If (Qt_6_9_0 -) +bool operator!=(const QPen &lhs, const QColor &rhs); +%End +%If (Qt_6_9_0 -) +bool operator!=(const QColor &lhs, const QPen &rhs); +%End +%If (Qt_6_9_0 -) +bool operator==(const QPen &lhs, const Qt::PenStyle &rhs); +%End +%If (Qt_6_9_0 -) +bool operator==(const QPen &lhs, const QColor &rhs); +%End +%If (Qt_6_9_0 -) +bool operator==(const QColor &lhs, const QPen &rhs); +%End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qtextoption.sip new/pyqt6-6.9.1/sip/QtGui/qtextoption.sip --- old/pyqt6-6.8.1/sip/QtGui/qtextoption.sip 2025-02-03 16:22:09.815868400 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qtextoption.sip 2025-06-03 17:55:53.702066200 +0200 @@ -55,6 +55,12 @@ AddSpaceForLineAndParagraphSeparators, SuppressColors, ShowDocumentTerminator, +%If (Qt_6_9_0 -) + ShowDefaultIgnorables, +%End +%If (Qt_6_9_0 -) + DisableEmojiParsing, +%End }; typedef QFlags<QTextOption::Flag> Flags; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtGui/qwindow.sip new/pyqt6-6.9.1/sip/QtGui/qwindow.sip --- old/pyqt6-6.8.1/sip/QtGui/qwindow.sip 2025-02-03 16:22:09.786590300 +0100 +++ new/pyqt6-6.9.1/sip/QtGui/qwindow.sip 2025-06-03 17:55:53.671224000 +0200 @@ -221,4 +221,12 @@ %If (PyQt_Vulkan) QVulkanInstance *vulkanInstance() const; %End +%If (Qt_6_9_0 -) + QMargins safeAreaMargins() const; +%End + +signals: +%If (Qt_6_9_0 -) + void safeAreaMarginsChanged(QMargins arg); +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtNetwork/qhttp2configuration.sip new/pyqt6-6.9.1/sip/QtNetwork/qhttp2configuration.sip --- old/pyqt6-6.8.1/sip/QtNetwork/qhttp2configuration.sip 2025-02-03 16:22:09.737575800 +0100 +++ new/pyqt6-6.9.1/sip/QtNetwork/qhttp2configuration.sip 2025-06-03 17:55:53.616755700 +0200 @@ -41,6 +41,12 @@ bool setMaxFrameSize(unsigned int size); unsigned int maxFrameSize() const; void swap(QHttp2Configuration &other /Constrained/); +%If (Qt_6_9_0 -) + void setMaxConcurrentStreams(unsigned int value); +%End +%If (Qt_6_9_0 -) + unsigned int maxConcurrentStreams() const; +%End }; bool operator==(const QHttp2Configuration &lhs, const QHttp2Configuration &rhs); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtNetwork/qnetworkrequestfactory.sip new/pyqt6-6.9.1/sip/QtNetwork/qnetworkrequestfactory.sip --- old/pyqt6-6.8.1/sip/QtNetwork/qnetworkrequestfactory.sip 2025-02-03 16:22:09.732181300 +0100 +++ new/pyqt6-6.9.1/sip/QtNetwork/qnetworkrequestfactory.sip 2025-06-03 17:55:53.610881300 +0200 @@ -58,16 +58,8 @@ QString password() const; void setPassword(const QString &password); void clearPassword(); - void setTransferTimeout(qint64 timeout); -%MethodCode - sipCpp->setTransferTimeout(std::chrono::milliseconds(a0)); -%End - - qint64 transferTimeout() const; -%MethodCode - sipRes = sipCpp->transferTimeout().count(); -%End - + void setTransferTimeout(std::chrono::milliseconds timeout); + std::chrono::milliseconds transferTimeout() const; QUrlQuery queryParameters() const; void setQueryParameters(const QUrlQuery &query); void clearQueryParameters(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtQuick/qquickitem.sip new/pyqt6-6.9.1/sip/QtQuick/qquickitem.sip --- old/pyqt6-6.8.1/sip/QtQuick/qquickitem.sip 2025-02-03 16:22:09.842442500 +0100 +++ new/pyqt6-6.9.1/sip/QtQuick/qquickitem.sip 2025-06-03 17:55:53.731642000 +0200 @@ -57,6 +57,12 @@ ItemAntialiasingHasChanged, ItemDevicePixelRatioHasChanged, ItemEnabledHasChanged, +%If (Qt_6_9_0 -) + ItemScaleHasChanged, +%End +%If (Qt_6_9_0 -) + ItemTransformHasChanged, +%End }; struct ItemChangeData diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtQuickWidgets/qquickwidget.sip new/pyqt6-6.9.1/sip/QtQuickWidgets/qquickwidget.sip --- old/pyqt6-6.8.1/sip/QtQuickWidgets/qquickwidget.sip 2025-02-03 16:22:09.848888600 +0100 +++ new/pyqt6-6.9.1/sip/QtQuickWidgets/qquickwidget.sip 2025-06-03 17:55:53.738595500 +0200 @@ -34,6 +34,9 @@ explicit QQuickWidget(QWidget *parent /TransferThis/ = 0); QQuickWidget(QQmlEngine *engine, QWidget *parent /TransferThis/); QQuickWidget(const QUrl &source, QWidget *parent /TransferThis/ = 0); +%If (Qt_6_9_0 -) + QQuickWidget(QAnyStringView uri, QAnyStringView typeName, QWidget *parent /TransferThis/ = 0); +%End virtual ~QQuickWidget(); QUrl source() const; QQmlEngine *engine() const; @@ -91,12 +94,16 @@ virtual void dragLeaveEvent(QDragLeaveEvent *); virtual void dropEvent(QDropEvent *); virtual void paintEvent(QPaintEvent *event); + virtual bool focusNextPrevChild(bool next); public: QImage grabFramebuffer() const; void setClearColor(const QColor &color); QQuickWindow *quickWindow() const; - -protected: - virtual bool focusNextPrevChild(bool next); +%If (Qt_6_9_0 -) + void setInitialProperties(const QVariantMap &initialProperties); +%End +%If (Qt_6_9_0 -) + void loadFromModule(QAnyStringView uri, QAnyStringView typeName); +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtSerialPort/qserialport.sip new/pyqt6-6.9.1/sip/QtSerialPort/qserialport.sip --- old/pyqt6-6.8.1/sip/QtSerialPort/qserialport.sip 2025-02-03 16:22:09.830642500 +0100 +++ new/pyqt6-6.9.1/sip/QtSerialPort/qserialport.sip 2025-06-03 17:55:53.718472700 +0200 @@ -277,6 +277,19 @@ signals: void breakEnabledChanged(bool set); void errorOccurred(QSerialPort::SerialPortError error); + +public: +%If (Qt_6_9_0 -) + bool settingsRestoredOnClose() const; +%End +%If (Qt_6_9_0 -) + void setSettingsRestoredOnClose(bool restore); +%End + +signals: +%If (Qt_6_9_0 -) + void settingsRestoredOnCloseChanged(bool restore); +%End }; %End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtSql/qsqldriver.sip new/pyqt6-6.9.1/sip/QtSql/qsqldriver.sip --- old/pyqt6-6.8.1/sip/QtSql/qsqldriver.sip 2025-02-03 16:22:09.904885500 +0100 +++ new/pyqt6-6.9.1/sip/QtSql/qsqldriver.sip 2025-06-03 17:55:53.798743000 +0200 @@ -156,4 +156,7 @@ QSqlDriver::DbmsType dbmsType() const; virtual int maximumIdentifierLength(QSqlDriver::IdentifierType type) const; +%If (Qt_6_9_0 -) + QString connectionName() const; +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtSql/qsqlquerymodel.sip new/pyqt6-6.9.1/sip/QtSql/qsqlquerymodel.sip --- old/pyqt6-6.8.1/sip/QtSql/qsqlquerymodel.sip 2025-02-03 16:22:09.906944300 +0100 +++ new/pyqt6-6.9.1/sip/QtSql/qsqlquerymodel.sip 2025-06-03 17:55:53.801051900 +0200 @@ -72,4 +72,7 @@ public: virtual QHash<int, QByteArray> roleNames() const; +%If (Qt_6_9_0 -) + void refresh(); +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtSvg/qtsvgglobal.sip new/pyqt6-6.9.1/sip/QtSvg/qtsvgglobal.sip --- old/pyqt6-6.8.1/sip/QtSvg/qtsvgglobal.sip 2025-02-03 16:22:09.762099700 +0100 +++ new/pyqt6-6.9.1/sip/QtSvg/qtsvgglobal.sip 2025-06-03 17:55:53.644101900 +0200 @@ -35,6 +35,15 @@ %If (Qt_6_8_0 -) AssumeTrustedSource, %End +%If (Qt_6_9_0 -) + DisableSMILAnimations, +%End +%If (Qt_6_9_0 -) + DisableCSSAnimations, +%End +%If (Qt_6_9_0 -) + DisableAnimations, +%End }; typedef QFlags<QtSvg::Option> Options; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtWidgets/qabstractitemview.sip new/pyqt6-6.9.1/sip/QtWidgets/qabstractitemview.sip --- old/pyqt6-6.8.1/sip/QtWidgets/qabstractitemview.sip 2025-02-03 16:22:09.860775700 +0100 +++ new/pyqt6-6.9.1/sip/QtWidgets/qabstractitemview.sip 2025-06-03 17:55:53.751618000 +0200 @@ -279,4 +279,12 @@ protected: virtual void initViewItemOption(QStyleOptionViewItem *option) const; + +public: +%If (Qt_6_9_0 -) + int updateThreshold() const; +%End +%If (Qt_6_9_0 -) + void setUpdateThreshold(int threshold); +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtWidgets/qcombobox.sip new/pyqt6-6.9.1/sip/QtWidgets/qcombobox.sip --- old/pyqt6-6.8.1/sip/QtWidgets/qcombobox.sip 2025-02-03 16:22:09.902630600 +0100 +++ new/pyqt6-6.9.1/sip/QtWidgets/qcombobox.sip 2025-06-03 17:55:53.796239400 +0200 @@ -151,4 +151,19 @@ public: void setPlaceholderText(const QString &placeholderText); QString placeholderText() const; +%If (Qt_6_9_0 -) + + enum class LabelDrawingMode + { + UseStyle, + UseDelegate, + }; + +%End +%If (Qt_6_9_0 -) + QComboBox::LabelDrawingMode labelDrawingMode() const; +%End +%If (Qt_6_9_0 -) + void setLabelDrawingMode(QComboBox::LabelDrawingMode labelDrawing); +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtWidgets/qdockwidget.sip new/pyqt6-6.9.1/sip/QtWidgets/qdockwidget.sip --- old/pyqt6-6.8.1/sip/QtWidgets/qdockwidget.sip 2025-02-03 16:22:09.896705200 +0100 +++ new/pyqt6-6.9.1/sip/QtWidgets/qdockwidget.sip 2025-06-03 17:55:53.790258400 +0200 @@ -67,4 +67,12 @@ virtual void closeEvent(QCloseEvent *event); virtual void paintEvent(QPaintEvent *event); virtual bool event(QEvent *event); + +public: +%If (Qt_6_9_0 -) + void setDockLocation(Qt::DockWidgetArea area); +%End +%If (Qt_6_9_0 -) + Qt::DockWidgetArea dockLocation() const; +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtWidgets/qstackedlayout.sip new/pyqt6-6.9.1/sip/QtWidgets/qstackedlayout.sip --- old/pyqt6-6.8.1/sip/QtWidgets/qstackedlayout.sip 2025-02-03 16:22:09.884046600 +0100 +++ new/pyqt6-6.9.1/sip/QtWidgets/qstackedlayout.sip 2025-06-03 17:55:53.776560800 +0200 @@ -99,6 +99,9 @@ signals: void widgetRemoved(int index); void currentChanged(int index); +%If (Qt_6_9_0 -) + void widgetAdded(int index); +%End public slots: void setCurrentIndex(int index); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtWidgets/qstackedwidget.sip new/pyqt6-6.9.1/sip/QtWidgets/qstackedwidget.sip --- old/pyqt6-6.8.1/sip/QtWidgets/qstackedwidget.sip 2025-02-03 16:22:09.895055300 +0100 +++ new/pyqt6-6.9.1/sip/QtWidgets/qstackedwidget.sip 2025-06-03 17:55:53.788504400 +0200 @@ -44,6 +44,9 @@ signals: void currentChanged(int); +%If (Qt_6_9_0 -) + void widgetAdded(int index); +%End void widgetRemoved(int index); protected: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtWidgets/qstyleoption.sip new/pyqt6-6.9.1/sip/QtWidgets/qstyleoption.sip --- old/pyqt6-6.8.1/sip/QtWidgets/qstyleoption.sip 2025-02-03 16:22:09.873474600 +0100 +++ new/pyqt6-6.9.1/sip/QtWidgets/qstyleoption.sip 2025-06-03 17:55:53.765087600 +0200 @@ -464,6 +464,9 @@ { None, HasFrame, +%If (Qt_6_9_0 -) + MinimumSizeHint, +%End }; typedef QFlags<QStyleOptionTab::TabFeature> TabFeatures; @@ -619,6 +622,12 @@ HasCheckIndicator, HasDisplay, HasDecoration, +%If (Qt_6_9_0 -) + IsDecoratedRootColumn, +%End +%If (Qt_6_9_0 -) + IsDecorationForRootColumn, +%End }; typedef QFlags<QStyleOptionViewItem::ViewItemFeature> ViewItemFeatures; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtWidgets/qwidget.sip new/pyqt6-6.9.1/sip/QtWidgets/qwidget.sip --- old/pyqt6-6.8.1/sip/QtWidgets/qwidget.sip 2025-02-03 16:22:09.875983500 +0100 +++ new/pyqt6-6.9.1/sip/QtWidgets/qwidget.sip 2025-06-03 17:55:53.767748600 +0200 @@ -515,4 +515,10 @@ void setWindowFlag(Qt::WindowType, bool on = true); QScreen *screen() const; void setScreen(QScreen *); +%If (Qt_6_9_0 -) + QString accessibleIdentifier() const; +%End +%If (Qt_6_9_0 -) + void setAccessibleIdentifier(const QString &identifier); +%End }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/sip/QtXml/qdom.sip new/pyqt6-6.9.1/sip/QtXml/qdom.sip --- old/pyqt6-6.8.1/sip/QtXml/qdom.sip 2025-02-03 16:22:09.764196200 +0100 +++ new/pyqt6-6.9.1/sip/QtXml/qdom.sip 2025-06-03 17:55:53.646440700 +0200 @@ -158,8 +158,12 @@ QDomNodeList(); QDomNodeList(const QDomNodeList &); ~QDomNodeList(); +%If (- Qt_6_9_0) bool operator==(const QDomNodeList &) const; +%End +%If (- Qt_6_9_0) bool operator!=(const QDomNodeList &) const; +%End QDomNode item(int index) const; QDomNode at(int index) const; int length() const; @@ -526,3 +530,9 @@ }; QTextStream &operator<<(QTextStream &, const QDomNode &) /ReleaseGIL/; +%If (Qt_6_9_0 -) +bool operator!=(const QDomNodeList &lhs, const QDomNodeList &rhs); +%End +%If (Qt_6_9_0 -) +bool operator==(const QDomNodeList &lhs, const QDomNodeList &rhs); +%End diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/uic/icon_cache.py new/pyqt6-6.9.1/uic/icon_cache.py --- old/pyqt6-6.8.1/uic/icon_cache.py 2025-02-03 16:22:08.586459400 +0100 +++ new/pyqt6-6.9.1/uic/icon_cache.py 2025-06-03 17:55:52.443743000 +0200 @@ -47,9 +47,19 @@ # Handle a themed icon. theme = iconset.attrib.get('theme') if theme is not None: + # Qt v6.7 supports QIcon::ThemeIcon. + if theme.startswith('QIcon::ThemeIcon'): + obj = self._qtgui_module + + for name in theme.split('::'): + obj = getattr(obj, name) + + theme = obj + else: + theme = self._object_factory.asString(theme) + return self._object_factory.createQtObject('QIcon.fromTheme', - 'icon', ctor_args=(self._object_factory.asString(theme), ), - is_attribute=False) + 'icon', ctor_args=(theme, ), is_attribute=False) # Handle an empty iconset property. if iconset.text is None: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/pyqt6-6.8.1/uic/uiparser.py new/pyqt6-6.9.1/uic/uiparser.py --- old/pyqt6-6.8.1/uic/uiparser.py 2025-02-03 16:22:08.579204600 +0100 +++ new/pyqt6-6.9.1/uic/uiparser.py 2025-06-03 17:55:52.437371000 +0200 @@ -1,4 +1,4 @@ -# Copyright (c) 2023 Riverbank Computing Limited. +# Copyright (c) 2025 Riverbank Computing Limited. # Copyright (c) 2006 Thorsten Marek. # All right reserved. # @@ -58,7 +58,7 @@ align_flags = None for qt_align in alignment.split('|'): - _, qt_align = qt_align.split('::') + *_, qt_align = qt_align.split('::') align = getattr(QtCore.Qt.AlignmentFlag, qt_align) if align_flags is None: