Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package python-PyQt6-sip for 
openSUSE:Factory checked in at 2026-05-04 21:17:12
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/python-PyQt6-sip (Old)
 and      /work/SRC/openSUSE:Factory/.python-PyQt6-sip.new.30200 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "python-PyQt6-sip"

Mon May  4 21:17:12 2026 rev:18 rq:1350694 version:13.11.1

Changes:
--------
--- /work/SRC/openSUSE:Factory/python-PyQt6-sip/python-PyQt6-sip.changes        
2025-06-11 18:34:46.531740999 +0200
+++ 
/work/SRC/openSUSE:Factory/.python-PyQt6-sip.new.30200/python-PyQt6-sip.changes 
    2026-05-04 21:17:22.356218428 +0200
@@ -1,0 +2,7 @@
+Thu Apr 30 11:56:44 UTC 2026 - Antonio Larrosa <[email protected]>
+
+- Update to 13.11.1
+  * Added support for Python v3.14.
+  * Python v3.10 or later is required.
+
+-------------------------------------------------------------------

Old:
----
  pyqt6_sip-13.10.2.tar.gz

New:
----
  pyqt6_sip-13.11.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ python-PyQt6-sip.spec ++++++
--- /var/tmp/diff_new_pack.CGMOaq/_old  2026-05-04 21:17:22.892240378 +0200
+++ /var/tmp/diff_new_pack.CGMOaq/_new  2026-05-04 21:17:22.892240378 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package python-PyQt6-sip
 #
-# Copyright (c) 2025 SUSE LLC
+# Copyright (c) 2026 SUSE LLC and contributors
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -19,7 +19,7 @@
 %{?sle15_python_module_pythons}
 # Check PyPI for version: https://pypi.org/project/PyQt6-sip/
 Name:           python-PyQt6-sip
-Version:        13.10.2
+Version:        13.11.1
 Release:        0
 Summary:        The sip module support for PyQt6
 License:        BSD-2-Clause

++++++ pyqt6_sip-13.10.2.tar.gz -> pyqt6_sip-13.11.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyqt6_sip-13.10.2/PKG-INFO 
new/pyqt6_sip-13.11.1/PKG-INFO
--- old/pyqt6_sip-13.10.2/PKG-INFO      2025-05-23 13:58:18.004042400 +0200
+++ new/pyqt6_sip-13.11.1/PKG-INFO      2026-03-09 13:13:52.524743600 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: PyQt6_sip
-Version: 13.10.2
+Version: 13.11.1
 Summary: The sip module support for PyQt6
 Home-page: https://github.com/Python-SIP/sip
 Author: Phil Thompson
@@ -9,7 +9,7 @@
 Platform: X11
 Platform: macOS
 Platform: Windows
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 License-File: LICENSE
 Dynamic: license
 Dynamic: license-file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyqt6_sip-13.10.2/PyQt6_sip.egg-info/PKG-INFO 
new/pyqt6_sip-13.11.1/PyQt6_sip.egg-info/PKG-INFO
--- old/pyqt6_sip-13.10.2/PyQt6_sip.egg-info/PKG-INFO   2025-05-23 
13:58:12.000000000 +0200
+++ new/pyqt6_sip-13.11.1/PyQt6_sip.egg-info/PKG-INFO   2026-03-09 
13:13:51.000000000 +0100
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: PyQt6_sip
-Version: 13.10.2
+Version: 13.11.1
 Summary: The sip module support for PyQt6
 Home-page: https://github.com/Python-SIP/sip
 Author: Phil Thompson
@@ -9,7 +9,7 @@
 Platform: X11
 Platform: macOS
 Platform: Windows
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 License-File: LICENSE
 Dynamic: license
 Dynamic: license-file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyqt6_sip-13.10.2/pyproject.toml 
new/pyqt6_sip-13.11.1/pyproject.toml
--- old/pyqt6_sip-13.10.2/pyproject.toml        2025-05-23 13:58:12.000000000 
+0200
+++ new/pyqt6_sip-13.11.1/pyproject.toml        2026-03-09 13:13:51.000000000 
+0100
@@ -1,2 +1,3 @@
 [build-system]
 requires = ["setuptools >=75.8.1"]
+build-backend = "setuptools.build_meta"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyqt6_sip-13.10.2/setup.py 
new/pyqt6_sip-13.11.1/setup.py
--- old/pyqt6_sip-13.10.2/setup.py      2025-05-23 13:58:12.000000000 +0200
+++ new/pyqt6_sip-13.11.1/setup.py      2026-03-09 13:13:51.000000000 +0100
@@ -16,8 +16,8 @@
 # Do the setup.
 setup(
         name='PyQt6_sip',
-        version='13.10.2',
+        version='13.11.1',
         license='BSD-2-Clause',
-        python_requires='>=3.9',
+        python_requires='>=3.10',
         ext_modules=[module]
      )
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyqt6_sip-13.10.2/sip.h new/pyqt6_sip-13.11.1/sip.h
--- old/pyqt6_sip-13.10.2/sip.h 2025-05-23 13:58:12.000000000 +0200
+++ new/pyqt6_sip-13.11.1/sip.h 2026-03-09 13:13:51.000000000 +0100
@@ -14,11 +14,14 @@
 #include <Python.h>
 
 /* Sanity check on the Python version. */
-#if PY_VERSION_HEX < 0x03090000
-#error "This version of PyQt6.sip requires Python v3.9 or later"
+#if PY_VERSION_HEX < 0x030a0000
+#error "This version of PyQt6.sip requires Python v3.10 or later"
 #endif
 
 
+#include <stdbool.h>
+
+
 #ifdef __cplusplus
 #include <exception>
 
@@ -35,13 +38,17 @@
 
 /* The version of the ABI. */
 #define SIP_ABI_MAJOR_VERSION       13
-#define SIP_ABI_MINOR_VERSION       10
-#define SIP_MODULE_PATCH_VERSION    2
+#define SIP_ABI_MINOR_VERSION       11
+#define SIP_MODULE_PATCH_VERSION    1
 
 
 /*
  * The change history of the ABI.
  *
+ * v13.11
+ *  - Added support for Python v3.14.
+ *  - Python v3.10 or later is required.
+ *
  * v13.10
  *  - Added SIP_ABI_VERSION as a module attribute.
  *
@@ -85,8 +92,8 @@
 
 
 /* The version of the code generator. */
-#define SIP_VERSION                 0x60b01
-#define SIP_VERSION_STR             "6.11.1"
+#define SIP_VERSION                 0x60f02
+#define SIP_VERSION_STR             "6.15.2"
 
 /* These are all dependent on the user-specified name of the sip module. */
 #define _SIP_MODULE_FQ_NAME         "PyQt6.sip"
@@ -151,21 +158,11 @@
 #define SIP_TRACE_METHODS   0x0020
 
 
-/*
- * Hide some thread dependent stuff.  This can be removed when support for
- * Python v3.6 is removed.
- */
-#ifdef WITH_THREAD
+/* Hide some thread related stuff. */
 typedef PyGILState_STATE sip_gilstate_t;
 #define SIP_RELEASE_GIL(gs) PyGILState_Release(gs);
 #define SIP_BLOCK_THREADS   {PyGILState_STATE sipGIL = PyGILState_Ensure();
 #define SIP_UNBLOCK_THREADS PyGILState_Release(sipGIL);}
-#else
-typedef int sip_gilstate_t;
-#define SIP_RELEASE_GIL(gs)
-#define SIP_BLOCK_THREADS
-#define SIP_UNBLOCK_THREADS
-#endif
 
 
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyqt6_sip-13.10.2/sip_core.c 
new/pyqt6_sip-13.11.1/sip_core.c
--- old/pyqt6_sip-13.10.2/sip_core.c    2025-05-23 13:58:12.000000000 +0200
+++ new/pyqt6_sip-13.11.1/sip_core.c    2026-03-09 13:13:51.000000000 +0100
@@ -160,9 +160,7 @@
             0,              /* am_await */
             0,              /* am_aiter */
             0,              /* am_anext */
-#if PY_VERSION_HEX >= 0x030a0000
             0,              /* am_send */
-#endif
         },
         {
             0,              /* nb_add */
@@ -7079,43 +7077,51 @@
     {
         PyObject *w;
 
-        switch (si->si_encoding)
+        if (si->si_val == NULL)
         {
-        case 'A':
-            w = PyUnicode_DecodeASCII(si->si_val, strlen(si->si_val), NULL);
-            break;
+            w = Py_None;
+            Py_INCREF(w);
+        }
+        else
+        {
+            switch (si->si_encoding)
+            {
+            case 'A':
+                w = PyUnicode_DecodeASCII(si->si_val, strlen(si->si_val), 
NULL);
+                break;
 
-        case 'L':
-            w = PyUnicode_DecodeLatin1(si->si_val, strlen(si->si_val), NULL);
-            break;
+            case 'L':
+                w = PyUnicode_DecodeLatin1(si->si_val, strlen(si->si_val), 
NULL);
+                break;
 
-        case '8':
-            w = PyUnicode_FromString(si->si_val);
-            break;
+            case '8':
+                w = PyUnicode_FromString(si->si_val);
+                break;
 
-        case 'w':
-            /* The hack for wchar_t. */
+            case 'w':
+                /* The hack for wchar_t. */
 #if defined(HAVE_WCHAR_H)
-            w = PyUnicode_FromWideChar((const wchar_t *)si->si_val, 1);
-            break;
+                w = PyUnicode_FromWideChar((const wchar_t *)si->si_val, 1);
+                break;
 #else
-            raiseNoWChar();
-            return -1;
+                raiseNoWChar();
+                return -1;
 #endif
 
         case 'W':
-            /* The hack for wchar_t*. */
+                /* The hack for wchar_t*. */
 #if defined(HAVE_WCHAR_H)
-            w = PyUnicode_FromWideChar((const wchar_t *)si->si_val,
-                    wcslen((const wchar_t *)si->si_val));
-            break;
+                w = PyUnicode_FromWideChar((const wchar_t *)si->si_val,
+                        wcslen((const wchar_t *)si->si_val));
+                break;
 #else
-            raiseNoWChar();
-            return -1;
+                raiseNoWChar();
+                return -1;
 #endif
 
-        default:
-            w = PyBytes_FromString(si->si_val);
+            default:
+                w = PyBytes_FromString(si->si_val);
+            }
         }
 
         if (sip_dict_set_and_discard(dict, si->si_name, w) < 0)
@@ -7356,9 +7362,7 @@
     if (sipInterpreter == NULL)
         return NULL;
 
-#ifdef WITH_THREAD
     *gil = PyGILState_Ensure();
-#endif
 
     /* Only read this when we have the GIL. */
     sipSelf = *sipSelfp;
@@ -7490,17 +7494,13 @@
             PyErr_Print();
         }
 
-#ifdef WITH_THREAD
         PyGILState_Release(*gil);
-#endif
     }
 
     return reimp;
 
 release_gil:
-#ifdef WITH_THREAD
     PyGILState_Release(*gil);
-#endif
     return NULL;
 }
 
@@ -8432,7 +8432,6 @@
     PyTypeObject *py_type = Py_TYPE(self);
 
     /* See if it is a wrapper. */
-    /* TODO: will this always be TRUE? */
     if (PyObject_TypeCheck((PyObject *)py_type, &sipWrapperType_Type))
     {
         const sipClassTypeDef *ctd;
@@ -8441,6 +8440,19 @@
 
         slot = findSlotInClass(ctd, st);
     }
+    else
+    {
+        sipEnumTypeDef *etd;
+
+        /* If it is not a wrapper then it must be an enum. */
+        etd = (sipEnumTypeDef *)sip_enum_get_generated_type(
+                (PyObject *)py_type);
+
+        assert(etd != NULL);
+        assert(etd->etd_pyslots != NULL);
+
+        slot = findSlotInSlotList(etd->etd_pyslots, st);
+    }
 
     return slot;
 }
@@ -9670,9 +9682,7 @@
             0,              /* am_await */
             0,              /* am_aiter */
             0,              /* am_anext */
-#if PY_VERSION_HEX >= 0x030a0000
             0,              /* am_send */
-#endif
         },
         {
             0,              /* nb_add */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyqt6_sip-13.10.2/sip_descriptors.c 
new/pyqt6_sip-13.11.1/sip_descriptors.c
--- old/pyqt6_sip-13.10.2/sip_descriptors.c     2025-05-23 13:58:12.000000000 
+0200
+++ new/pyqt6_sip-13.11.1/sip_descriptors.c     2026-03-09 13:13:51.000000000 
+0100
@@ -388,6 +388,16 @@
     sipVariableDescr *vd = (sipVariableDescr *)self;
     void *addr;
 
+    /* Check that the value isn't being deleted. */
+    if (value == NULL)
+    {
+        PyErr_Format(PyExc_AttributeError,
+                "'%s' object attribute '%s' cannot be deleted",
+                sipPyNameOfContainer(vd->cod, vd->td), vd->vd->vd_name);
+
+        return -1;
+    }
+
     /* Check that the value isn't const. */
     if (vd->vd->vd_setter == NULL)
     {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/pyqt6_sip-13.10.2/sip_threads.c 
new/pyqt6_sip-13.11.1/sip_threads.c
--- old/pyqt6_sip-13.10.2/sip_threads.c 2025-05-23 13:58:12.000000000 +0200
+++ new/pyqt6_sip-13.11.1/sip_threads.c 2026-03-09 13:13:51.000000000 +0100
@@ -22,14 +22,11 @@
 } pendingDef;
 
 
-#ifdef WITH_THREAD
-
-#include <pythread.h>
-
-
 /*
  * The per thread data we need to maintain.
  */
+#include <pythread.h>
+
 typedef struct _threadDef {
     long thr_ident;                 /* The thread identifier. */
     pendingDef pending;             /* An object waiting to be wrapped. */
@@ -40,9 +37,6 @@
 
 static threadDef *currentThreadDef(int auto_alloc);
 
-#endif
-
-
 static pendingDef *get_pending(int auto_alloc);
 
 
@@ -124,7 +118,6 @@
  */
 void sip_api_end_thread(void)
 {
-#ifdef WITH_THREAD
     threadDef *thread;
     PyGILState_STATE gil = PyGILState_Ensure();
 
@@ -132,7 +125,6 @@
         thread->thr_ident = 0;
 
     PyGILState_Release(gil);
-#endif
 }
 
 
@@ -142,23 +134,15 @@
  */
 static pendingDef *get_pending(int auto_alloc)
 {
-#ifdef WITH_THREAD
     threadDef *thread;
 
     if ((thread = currentThreadDef(auto_alloc)) == NULL)
         return NULL;
 
     return &thread->pending;
-#else
-    static pendingDef pending;
-
-    return &pending;
-#endif
 }
 
 
-#ifdef WITH_THREAD
-
 /*
  * Return the thread data for the current thread, allocating it if necessary,
  * or NULL if there was an error.
@@ -204,5 +188,3 @@
 
     return thread;
 }
-
-#endif

Reply via email to