[neon/forks/pyqt6-sip/Neon/release] /: New upstream version 13.10.3

Dmitry Shachnev null at kde.org
Mon Jul 27 14:41:23 BST 2026


Git commit 4861976176ad52e670d45b38bb0b5b86dd3722f3 by Dmitry Shachnev.
Committed on 21/12/2025 at 09:07.
Pushed by carlosdem into branch 'Neon/release'.

New upstream version 13.10.3

M  +2    -2    PKG-INFO
M  +2    -2    PyQt6_sip.egg-info/PKG-INFO
M  +2    -2    setup.py
M  +8    -5    sip.h
M  +32   -24   sip_core.c
M  +10   -0    sip_descriptors.c

https://invent.kde.org/neon/forks/pyqt6-sip/-/commit/4861976176ad52e670d45b38bb0b5b86dd3722f3

diff --git a/PKG-INFO b/PKG-INFO
index d79c074..a52de6d 100644
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: PyQt6_sip
-Version: 13.10.2
+Version: 13.10.3
 Summary: The sip module support for PyQt6
 Home-page: https://github.com/Python-SIP/sip
 Author: Phil Thompson
@@ -9,7 +9,7 @@ License: BSD-2-Clause
 Platform: X11
 Platform: macOS
 Platform: Windows
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 License-File: LICENSE
 Dynamic: license
 Dynamic: license-file
diff --git a/PyQt6_sip.egg-info/PKG-INFO b/PyQt6_sip.egg-info/PKG-INFO
index d79c074..a52de6d 100644
--- a/PyQt6_sip.egg-info/PKG-INFO
+++ b/PyQt6_sip.egg-info/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 2.4
 Name: PyQt6_sip
-Version: 13.10.2
+Version: 13.10.3
 Summary: The sip module support for PyQt6
 Home-page: https://github.com/Python-SIP/sip
 Author: Phil Thompson
@@ -9,7 +9,7 @@ License: BSD-2-Clause
 Platform: X11
 Platform: macOS
 Platform: Windows
-Requires-Python: >=3.9
+Requires-Python: >=3.10
 License-File: LICENSE
 Dynamic: license
 Dynamic: license-file
diff --git a/setup.py b/setup.py
index 167ccba..08304b1 100644
--- a/setup.py
+++ b/setup.py
@@ -16,8 +16,8 @@ module = Extension('PyQt6.sip', module_src)
 # Do the setup.
 setup(
         name='PyQt6_sip',
-        version='13.10.2',
+        version='13.10.3',
         license='BSD-2-Clause',
-        python_requires='>=3.9',
+        python_requires='>=3.10',
         ext_modules=[module]
      )
diff --git a/sip.h b/sip.h
index a42b622..830525c 100644
--- a/sip.h
+++ b/sip.h
@@ -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>
 
@@ -36,7 +39,7 @@ extern "C" {
 /* 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_MODULE_PATCH_VERSION    3
 
 
 /*
@@ -85,8 +88,8 @@ extern "C" {
 
 
 /* The version of the code generator. */
-#define SIP_VERSION                 0x60b01
-#define SIP_VERSION_STR             "6.11.1"
+#define SIP_VERSION                 0x60f00
+#define SIP_VERSION_STR             "6.15.0"
 
 /* These are all dependent on the user-specified name of the sip module. */
 #define _SIP_MODULE_FQ_NAME         "PyQt6.sip"
diff --git a/sip_core.c b/sip_core.c
index a3ce01e..5604799 100644
--- a/sip_core.c
+++ b/sip_core.c
@@ -7079,43 +7079,51 @@ static int addStringInstances(PyObject *dict, sipStringInstanceDef *si)
     {
         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)
diff --git a/sip_descriptors.c b/sip_descriptors.c
index a0d839a..7f302be 100644
--- a/sip_descriptors.c
+++ b/sip_descriptors.c
@@ -388,6 +388,16 @@ static int sipVariableDescr_descr_set(PyObject *self, PyObject *obj,
     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)
     {



More information about the Neon-commits mailing list