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:

Reply via email to