From 469f01f6a38fc0c53901f6ed476b0ff53b3cfe59 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 22 Dec 2025 20:50:55 +0000 Subject: [PATCH 01/18] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: v21.1.7 → v21.1.8](https://github.com/pre-commit/mirrors-clang-format/compare/v21.1.7...v21.1.8) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 94fe31d6a..c085b8a5c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/mirrors-clang-format - rev: "v21.1.7" + rev: "v21.1.8" hooks: - id: clang-format From 434407e5dc9d25f5a44c7c4947a3d94398399d08 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 1 Jan 2026 20:03:06 +0000 Subject: [PATCH 02/18] chore(deps): bump actions/upload-artifact from 5 to 6 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 5 to 6. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v5...v6) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 8 ++++---- .github/workflows/build_latest.yml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9ca66c53c..458426eeb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -122,7 +122,7 @@ jobs: make check TESTARGS="-platform minimal" - name: Upload Wrappers - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: wrappers_ubuntu_${{ matrix.container_version }} path: generated_cpp @@ -195,7 +195,7 @@ jobs: make check TESTARGS="-platform offscreen" - name: Upload Wrappers - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: wrappers_${{ matrix.container_os }}-${{ matrix.container_os_version }}_${{ matrix.configuration }} path: generated_cpp @@ -298,7 +298,7 @@ jobs: - name: Upload Wrappers if: ${{ contains(matrix.configuration, 'release') }} - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: wrappers_macos${{ steps.versions.outputs.MACOS_VERSION_SHORT }}_qt${{ steps.versions.outputs.QT_VERSION_SHORT }} path: generated_cpp @@ -421,7 +421,7 @@ jobs: - name: Upload Wrappers if: (matrix.pythonqtall-config || '') == '' - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: wrappers_${{ matrix.qt-arch }}_${{ steps.versions.outputs.QT_VERSION_SHORT }} path: generated_cpp diff --git a/.github/workflows/build_latest.yml b/.github/workflows/build_latest.yml index fe9729bc4..0c486747c 100644 --- a/.github/workflows/build_latest.yml +++ b/.github/workflows/build_latest.yml @@ -92,7 +92,7 @@ jobs: --output-directory=. - name: Upload Wrappers - uses: actions/upload-artifact@v5 + uses: actions/upload-artifact@v6 with: name: wrappers_${{ matrix.os }}_${{ steps.setenv.outputs.QT_VERSION_SHORT }} path: generated_cpp From 6df60256f28c4f6521bb3957812daec01e1dc7c3 Mon Sep 17 00:00:00 2001 From: James Butler Date: Fri, 2 Jan 2026 10:28:54 -0500 Subject: [PATCH 03/18] Adjustments for Qt 6.10 --- generator/typesystem_core.xml | 19 +++++++++++++++++++ generator/typesystem_gui.xml | 2 ++ generator/typesystem_xml.xml | 1 + 3 files changed, 22 insertions(+) diff --git a/generator/typesystem_core.xml b/generator/typesystem_core.xml index 6678e9331..e14f8d50f 100644 --- a/generator/typesystem_core.xml +++ b/generator/typesystem_core.xml @@ -75,6 +75,7 @@ + @@ -973,6 +974,24 @@ public: + + + + // Workaround for std::optional parameters in Qt 6.10 + bool mkpath(QDir* theWrappedObject, const QString& dirPath) const { + return theWrappedObject->mkpath(dirPath); + } + bool mkdir(QDir* theWrappedObject, const QString& dirName) const { + return theWrappedObject->mkdir(dirName); + } + bool mkpath(QDir* theWrappedObject, const QString& dirPath, QFile::Permissions permissions) const { + return theWrappedObject->mkpath(dirPath, permissions); + } + bool mkdir(QDir* theWrappedObject, const QString& dirName, QFile::Permissions permissions) const { + return theWrappedObject->mkdir(dirName, permissions); + } + diff --git a/generator/typesystem_gui.xml b/generator/typesystem_gui.xml index 90f7e2063..582994b46 100644 --- a/generator/typesystem_gui.xml +++ b/generator/typesystem_gui.xml @@ -974,6 +974,7 @@ + @@ -2336,6 +2337,7 @@ PyObject* constScanLine(QImage* image, int line) { + diff --git a/generator/typesystem_xml.xml b/generator/typesystem_xml.xml index cc82bcf36..7191846b3 100644 --- a/generator/typesystem_xml.xml +++ b/generator/typesystem_xml.xml @@ -10,6 +10,7 @@ + From 21643e72d0f942d542b73291334cd77a02fb4be4 Mon Sep 17 00:00:00 2001 From: Uwe Siems Date: Fri, 9 Jan 2026 18:18:42 +0100 Subject: [PATCH 04/18] I turns out that the syncqt tool does not create a correct hex version parse the string version instead --- generator/main.cpp | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/generator/main.cpp b/generator/main.cpp index 251e41043..945d6b289 100644 --- a/generator/main.cpp +++ b/generator/main.cpp @@ -307,7 +307,8 @@ bool preprocess(const QString& sourceFile, const QString& targetFile, const QStr unsigned int getQtVersion(const QStringList& paths) { - QRegularExpression re("#define\\s+QTCORE_VERSION\\s+0x([0-9a-f]+)", QRegularExpression::CaseInsensitiveOption); + QRegularExpression re(R"*(#define\s+QTCORE_VERSION_STR\s+"(\d+)\.(\d+)\.(\d+)")*", + QRegularExpression::CaseInsensitiveOption); // Iterate through provided paths to find the qtcoreversion.h header file for (const QString& path : paths) { @@ -340,14 +341,7 @@ unsigned int getQtVersion(const QStringList& paths) f.close(); auto match = re.match(content); if (match.isValid()) { - unsigned int result; - bool ok; - result = match.captured(1).toUInt(&ok, 16); - if (!ok) { - printf("Could not parse Qt version in file [%s] (looked for #define QTCORE_VERSION)\n", - qPrintable(filePath)); - } - return result; + return (match.captured(1).toUInt() << 16) + (match.captured(2).toUInt() << 8) + match.captured(3).toUInt(); } } } From f63bee168614c7db787fcaca4f85cb5c99975d52 Mon Sep 17 00:00:00 2001 From: Uwe Siems Date: Fri, 9 Jan 2026 18:29:50 +0100 Subject: [PATCH 05/18] Minor generation fixes for Qt 6.10 --- generator/typesystem_core.xml | 20 +++++++++++++++++++- generator/typesystem_multimedia.xml | 11 ++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-) diff --git a/generator/typesystem_core.xml b/generator/typesystem_core.xml index e14f8d50f..46d1b8508 100644 --- a/generator/typesystem_core.xml +++ b/generator/typesystem_core.xml @@ -2181,7 +2181,25 @@ public: - + + + + void py_set_offset(QJsonParseError* theWrappedObject, int offset){ + theWrappedObject->offset = offset; + } + int py_get_offset(QJsonParseError* theWrappedObject){ + return theWrappedObject->offset; + } + + + void py_set_offset(QJsonParseError* theWrappedObject, qint64 offset){ + theWrappedObject->offset = offset; + } + qint64 py_get_offset(QJsonParseError* theWrappedObject){ + return theWrappedObject->offset; + } + + diff --git a/generator/typesystem_multimedia.xml b/generator/typesystem_multimedia.xml index b2c326978..26cb9c246 100644 --- a/generator/typesystem_multimedia.xml +++ b/generator/typesystem_multimedia.xml @@ -87,7 +87,15 @@ - + + + + float static_QAudio_convertVolume(float volume, QAudio::VolumeScale from, QAudio::VolumeScale to) + { + return (QtAudio::convertVolume(volume, from, to)); + } + + @@ -226,6 +234,7 @@ + From 68a5d48018f05397f38773b7bb25b6161cc55b96 Mon Sep 17 00:00:00 2001 From: Julien <182520+JulienMaille@users.noreply.github.com> Date: Thu, 29 Jan 2026 09:44:04 +0100 Subject: [PATCH 06/18] Register QObjectList type conditionally (#339) FIX: #338 --- src/PythonQt.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/PythonQt.cpp b/src/PythonQt.cpp index 2b016ec83..c7e76ea61 100644 --- a/src/PythonQt.cpp +++ b/src/PythonQt.cpp @@ -121,7 +121,11 @@ void PythonQt::init(int flags, const QByteArray& pythonQtModuleName) PythonQtMethodInfo::addParameterTypeAlias("QObjectList", "QList"); qRegisterMetaType>("QList"); - qRegisterMetaType("QObjectList"); + // QObjectList might already be registered by other modules (e.g. QtScript) or under different type names. + // To avoid conflicts or warnings, only register it if it is currently unknown. + if (QMetaType::type("QObjectList") == QMetaType::UnknownType) { + qRegisterMetaType("QObjectList"); + } qRegisterMetaType>("QList"); if (QT_POINTER_SIZE == 8) { qRegisterMetaType("size_t"); From a0178164da71fdd45465f4e1432bf22a8fc5992a Mon Sep 17 00:00:00 2001 From: Jan Plath Date: Fri, 30 Jan 2026 14:41:57 +0100 Subject: [PATCH 07/18] Fix invalid handling of alreadyAllocatedCPPObject in PythonQtConv::ConvertPythonToQt --- src/PythonQtConversion.cpp | 32 +++++++------------------------- src/PythonQtConversion.h | 1 + src/PythonQtMisc.h | 29 +++++++++++++++++++++++++++++ 3 files changed, 37 insertions(+), 25 deletions(-) diff --git a/src/PythonQtConversion.cpp b/src/PythonQtConversion.cpp index 96da8be47..3021a04c5 100644 --- a/src/PythonQtConversion.cpp +++ b/src/PythonQtConversion.cpp @@ -592,24 +592,21 @@ void* PythonQtConv::ConvertPythonToQt(const PythonQtMethodInfo::ParameterInfo& i { QByteArray bytes = PyObjGetBytesAllowString(obj, strict, ok); if (ok) { - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedCPPObject, frame, QVariant(bytes), ptr); - ptr = (void*)((QVariant*)ptr)->constData(); + ptr = frame->establishPersistentPtr(alreadyAllocatedCPPObject, bytes); } } break; case QMetaType::QString: { QString str = PyObjGetString(obj, strict, ok); if (ok) { - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedCPPObject, frame, QVariant(str), ptr); - ptr = (void*)((QVariant*)ptr)->constData(); + ptr = frame->establishPersistentPtr(alreadyAllocatedCPPObject, str); } } break; case QMetaType::QStringList: { QStringList l = PyObjToStringList(obj, strict, ok); if (ok) { - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedCPPObject, frame, QVariant(l), ptr); - ptr = (void*)((QVariant*)ptr)->constData(); + ptr = frame->establishPersistentPtr(alreadyAllocatedCPPObject, l); } } break; @@ -649,7 +646,7 @@ void* PythonQtConv::ConvertPythonToQt(const PythonQtMethodInfo::ParameterInfo& i QString str = PyObjGetString(obj, strict, ok); if (ok) { void* ptr2 = nullptr; - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(nullptr, frame, QVariant(str), ptr2); + PythonQtArgumentFrame_ADD_VARIANT_VALUE(frame, QVariant(str), ptr2); PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedCPPObject, frame, QVariant::fromValue(QStringRef((const QString*)((QVariant*)ptr2)->constData())), ptr); ptr = (void*)((QVariant*)ptr)->constData(); @@ -663,12 +660,7 @@ void* PythonQtConv::ConvertPythonToQt(const PythonQtMethodInfo::ParameterInfo& i // Handle QStringView, which needs a reference to a persistent QString QString str = PyObjGetString(obj, strict, ok); if (ok) { - void* ptr2 = nullptr; - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(nullptr, frame, QVariant(str), ptr2); - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedCPPObject, frame, - QVariant::fromValue(QStringView(*((const QString*)((QVariant*)ptr2)->constData()))), ptr); - ptr = (void*)((QVariant*)ptr)->constData(); - return ptr; + return frame->establishPersistentViewPtr(alreadyAllocatedCPPObject, str); } else { return nullptr; } @@ -676,12 +668,7 @@ void* PythonQtConv::ConvertPythonToQt(const PythonQtMethodInfo::ParameterInfo& i // Handle QAnyStringView, which needs a reference to a persistent QString QString str = PyObjGetString(obj, strict, ok); if (ok) { - void* ptr2 = nullptr; - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(nullptr, frame, QVariant(str), ptr2); - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedCPPObject, frame, - QVariant::fromValue(QAnyStringView(*((const QString*)((QVariant*)ptr2)->constData()))), ptr); - ptr = (void*)((QVariant*)ptr)->constData(); - return ptr; + return frame->establishPersistentViewPtr(alreadyAllocatedCPPObject, str); } else { return nullptr; } @@ -689,12 +676,7 @@ void* PythonQtConv::ConvertPythonToQt(const PythonQtMethodInfo::ParameterInfo& i // Handle QByteArrayView, which needs a reference to a persistent QByteArray QByteArray ba = PyObjGetBytesAllowString(obj, strict, ok); if (ok) { - void* ptr2 = nullptr; - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(nullptr, frame, QVariant(ba), ptr2); - PythonQtArgumentFrame_ADD_VARIANT_VALUE_IF_NEEDED(alreadyAllocatedCPPObject, frame, - QVariant::fromValue(QByteArrayView(*((const QByteArray*)((QVariant*)ptr2)->constData()))), ptr); - ptr = (void*)((QVariant*)ptr)->constData(); - return ptr; + return frame->establishPersistentViewPtr(alreadyAllocatedCPPObject, ba); } else { return nullptr; } diff --git a/src/PythonQtConversion.h b/src/PythonQtConversion.h index 2460876ab..f67d0a738 100644 --- a/src/PythonQtConversion.h +++ b/src/PythonQtConversion.h @@ -122,6 +122,7 @@ class PYTHONQT_EXPORT PythonQtConv static PyObject* ConvertQtValueToPython(const PythonQtMethodInfo::ParameterInfo& info, const void* data); //! convert python object to Qt (according to the given parameter) and if the conversion should be strict (classInfo is currently not used anymore) + //! If an alreadyAllocatedCPPObject is used it must have the same type as given by info.typeId static void* ConvertPythonToQt(const PythonQtMethodInfo::ParameterInfo& info, PyObject* obj, bool strict, PythonQtClassInfo* classInfo, void* alreadyAllocatedCPPObject, PythonQtArgumentFrame* frame = nullptr); diff --git a/src/PythonQtMisc.h b/src/PythonQtMisc.h index 5c8a70b00..abc824163 100644 --- a/src/PythonQtMisc.h +++ b/src/PythonQtMisc.h @@ -121,6 +121,35 @@ class PythonQtArgumentFrame //! Get next pointer to a POD. quint64* nextPODPtr(); + template + void* establishPersistentPtr(void* alreadyAllocatedPtr, const Class& value) + { + if (alreadyAllocatedPtr) { + *reinterpret_cast(alreadyAllocatedPtr) = value; + return alreadyAllocatedPtr; + } else { + QVariant* item = nextVariantPtr(); + *item = QVariant(value); + return const_cast(item->constData()); + } + } + + template + void* establishPersistentViewPtr(void* alreadyAllocatedPtr, const Class& value) + { + QVariant* itemStore = nextVariantPtr(); + *itemStore = QVariant(value); + if (alreadyAllocatedPtr) { + *reinterpret_cast(alreadyAllocatedPtr) = + ViewClass(*reinterpret_cast(itemStore->constData())); + return alreadyAllocatedPtr; + } else { + QVariant* item = nextVariantPtr(); + *item = QVariant::fromValue(ViewClass(*reinterpret_cast(itemStore->constData()))); + return const_cast(item->constData()); + } + } + private: PythonQtArgumentFrame(); ~PythonQtArgumentFrame(); From 6a426db01901cc501b2521a3e2d20d01c99bac13 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 1 Mar 2026 20:03:22 +0000 Subject: [PATCH 08/18] chore(deps): bump actions/upload-artifact from 6 to 7 Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7. - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v6...v7) --- updated-dependencies: - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 8 ++++---- .github/workflows/build_latest.yml | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 458426eeb..d06d3c4fb 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -122,7 +122,7 @@ jobs: make check TESTARGS="-platform minimal" - name: Upload Wrappers - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: wrappers_ubuntu_${{ matrix.container_version }} path: generated_cpp @@ -195,7 +195,7 @@ jobs: make check TESTARGS="-platform offscreen" - name: Upload Wrappers - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: wrappers_${{ matrix.container_os }}-${{ matrix.container_os_version }}_${{ matrix.configuration }} path: generated_cpp @@ -298,7 +298,7 @@ jobs: - name: Upload Wrappers if: ${{ contains(matrix.configuration, 'release') }} - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: wrappers_macos${{ steps.versions.outputs.MACOS_VERSION_SHORT }}_qt${{ steps.versions.outputs.QT_VERSION_SHORT }} path: generated_cpp @@ -421,7 +421,7 @@ jobs: - name: Upload Wrappers if: (matrix.pythonqtall-config || '') == '' - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: wrappers_${{ matrix.qt-arch }}_${{ steps.versions.outputs.QT_VERSION_SHORT }} path: generated_cpp diff --git a/.github/workflows/build_latest.yml b/.github/workflows/build_latest.yml index 0c486747c..214c3e6b9 100644 --- a/.github/workflows/build_latest.yml +++ b/.github/workflows/build_latest.yml @@ -92,7 +92,7 @@ jobs: --output-directory=. - name: Upload Wrappers - uses: actions/upload-artifact@v6 + uses: actions/upload-artifact@v7 with: name: wrappers_${{ matrix.os }}_${{ steps.setenv.outputs.QT_VERSION_SHORT }} path: generated_cpp From 923b8cbd71ee56034726650c9fcc2a9b4a512953 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 2 Mar 2026 21:46:43 +0000 Subject: [PATCH 09/18] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: v21.1.8 → v22.1.0](https://github.com/pre-commit/mirrors-clang-format/compare/v21.1.8...v22.1.0) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index c085b8a5c..ec7f17dcc 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/mirrors-clang-format - rev: "v21.1.8" + rev: "v22.1.0" hooks: - id: clang-format From 5cd9b581fffbf89bd944afdf5b7c3f543f524a14 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 16 Mar 2026 21:35:14 +0000 Subject: [PATCH 10/18] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: v22.1.0 → v22.1.1](https://github.com/pre-commit/mirrors-clang-format/compare/v22.1.0...v22.1.1) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index ec7f17dcc..2d007f354 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/mirrors-clang-format - rev: "v22.1.0" + rev: "v22.1.1" hooks: - id: clang-format From 60cc28a22d25a2981c10d8068674a4df01193ac5 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 30 Mar 2026 21:02:49 +0000 Subject: [PATCH 11/18] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: v22.1.1 → v22.1.2](https://github.com/pre-commit/mirrors-clang-format/compare/v22.1.1...v22.1.2) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 2d007f354..a20364d39 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/mirrors-clang-format - rev: "v22.1.1" + rev: "v22.1.2" hooks: - id: clang-format From 1946a59c1d648df2037215d1c0e24fbeed4f27e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 00:43:35 +0000 Subject: [PATCH 12/18] chore(deps): bump hendrikmuhs/ccache-action from 1.2.20 to 1.2.22 Bumps [hendrikmuhs/ccache-action](https://github.com/hendrikmuhs/ccache-action) from 1.2.20 to 1.2.22. - [Release notes](https://github.com/hendrikmuhs/ccache-action/releases) - [Commits](https://github.com/hendrikmuhs/ccache-action/compare/v1.2.20...v1.2.22) --- updated-dependencies: - dependency-name: hendrikmuhs/ccache-action dependency-version: 1.2.22 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 4 ++-- .github/workflows/build_latest.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d06d3c4fb..53302f848 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,7 +52,7 @@ jobs: uses: actions/checkout@v6 - name: Ccache - uses: hendrikmuhs/ccache-action@v1.2.20 + uses: hendrikmuhs/ccache-action@v1.2.22 with: key: ${{ runner.os }}-ubuntu-${{ matrix.container_version }} evict-old-files: 'job' @@ -235,7 +235,7 @@ jobs: uses: actions/checkout@v6 - name: Ccache - uses: hendrikmuhs/ccache-action@v1.2.20 + uses: hendrikmuhs/ccache-action@v1.2.22 with: key: ${{ runner.os }}-${{ matrix.qt-version }} evict-old-files: 'job' diff --git a/.github/workflows/build_latest.yml b/.github/workflows/build_latest.yml index 214c3e6b9..864f11c31 100644 --- a/.github/workflows/build_latest.yml +++ b/.github/workflows/build_latest.yml @@ -47,7 +47,7 @@ jobs: uses: actions/checkout@v6 - name: Ccache - uses: hendrikmuhs/ccache-action@v1.2.20 + uses: hendrikmuhs/ccache-action@v1.2.22 with: key: ${{ runner.os }}-${{ matrix.qt-version }} evict-old-files: 'job' From 6e048003bbcb1654e3fe91d1d7af429f2fa80d47 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Thu, 2 Apr 2026 00:43:42 +0000 Subject: [PATCH 13/18] chore(deps): bump egor-tensin/cleanup-path from 4 to 5 Bumps [egor-tensin/cleanup-path](https://github.com/egor-tensin/cleanup-path) from 4 to 5. - [Release notes](https://github.com/egor-tensin/cleanup-path/releases) - [Commits](https://github.com/egor-tensin/cleanup-path/compare/v4...v5) --- updated-dependencies: - dependency-name: egor-tensin/cleanup-path dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 53302f848..d6ebf189e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -347,7 +347,7 @@ jobs: uses: actions/checkout@v6 - name: Reset PATH - uses: egor-tensin/cleanup-path@v4 + uses: egor-tensin/cleanup-path@v5 - name: Install MSVC++ uses: ilammy/msvc-dev-cmd@v1 From 51a63769eb1728fe1f3a4de38b4745897ea4b51f Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 13 Apr 2026 21:09:34 +0000 Subject: [PATCH 14/18] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: v22.1.2 → v22.1.3](https://github.com/pre-commit/mirrors-clang-format/compare/v22.1.2...v22.1.3) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index a20364d39..39f8b5e42 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/mirrors-clang-format - rev: "v22.1.2" + rev: "v22.1.3" hooks: - id: clang-format From e146b4646440b5e9563beb9ffdfda5235fee8b61 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 27 Apr 2026 21:37:26 +0000 Subject: [PATCH 15/18] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: v22.1.3 → v22.1.4](https://github.com/pre-commit/mirrors-clang-format/compare/v22.1.3...v22.1.4) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 39f8b5e42..adc8fc78c 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/mirrors-clang-format - rev: "v22.1.3" + rev: "v22.1.4" hooks: - id: clang-format From 1eef53307c84aa0cedb38b3a95c4f3ca5268e5cd Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 1 May 2026 23:32:19 +0000 Subject: [PATCH 16/18] chore(deps): bump hendrikmuhs/ccache-action from 1.2.22 to 1.2.23 Bumps [hendrikmuhs/ccache-action](https://github.com/hendrikmuhs/ccache-action) from 1.2.22 to 1.2.23. - [Release notes](https://github.com/hendrikmuhs/ccache-action/releases) - [Commits](https://github.com/hendrikmuhs/ccache-action/compare/v1.2.22...v1.2.23) --- updated-dependencies: - dependency-name: hendrikmuhs/ccache-action dependency-version: 1.2.23 dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] --- .github/workflows/build.yml | 4 ++-- .github/workflows/build_latest.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index d6ebf189e..48f94ee9f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -52,7 +52,7 @@ jobs: uses: actions/checkout@v6 - name: Ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ${{ runner.os }}-ubuntu-${{ matrix.container_version }} evict-old-files: 'job' @@ -235,7 +235,7 @@ jobs: uses: actions/checkout@v6 - name: Ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ${{ runner.os }}-${{ matrix.qt-version }} evict-old-files: 'job' diff --git a/.github/workflows/build_latest.yml b/.github/workflows/build_latest.yml index 864f11c31..9d421f030 100644 --- a/.github/workflows/build_latest.yml +++ b/.github/workflows/build_latest.yml @@ -47,7 +47,7 @@ jobs: uses: actions/checkout@v6 - name: Ccache - uses: hendrikmuhs/ccache-action@v1.2.22 + uses: hendrikmuhs/ccache-action@v1.2.23 with: key: ${{ runner.os }}-${{ matrix.qt-version }} evict-old-files: 'job' From b80612349e7f26455c637b272d62e6b4f1f8a5a8 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 11 May 2026 20:50:00 +0000 Subject: [PATCH 17/18] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: v22.1.4 → v22.1.5](https://github.com/pre-commit/mirrors-clang-format/compare/v22.1.4...v22.1.5) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index adc8fc78c..5db7b28b0 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,6 +1,6 @@ repos: - repo: https://github.com/pre-commit/mirrors-clang-format - rev: "v22.1.4" + rev: "v22.1.5" hooks: - id: clang-format From e6abebdfbde74b8edb99dcb30a4702e2606365c7 Mon Sep 17 00:00:00 2001 From: Uwe Siems Date: Wed, 13 May 2026 11:38:23 +0200 Subject: [PATCH 18/18] Fix findChild/findChildren logic: Do not skip children of children whose name does not match. Do not bail out if a child is nullptr (not sure if this can occur). Use modern for loop. --- src/PythonQtStdDecorators.cpp | 65 +++++++++++++---------------------- src/PythonQtStdDecorators.h | 8 ++--- 2 files changed, 28 insertions(+), 45 deletions(-) diff --git a/src/PythonQtStdDecorators.cpp b/src/PythonQtStdDecorators.cpp index 25ba6b300..2668949c3 100644 --- a/src/PythonQtStdDecorators.cpp +++ b/src/PythonQtStdDecorators.cpp @@ -270,17 +270,14 @@ QList PythonQtStdDecorators::findChildren(QObject* parent, PyObject* t return list; } -QObject* PythonQtStdDecorators::findChild(QObject* parent, const char* typeName, const QMetaObject* meta, +QObject* PythonQtStdDecorators::findChild(const QObject* parent, const char* typeName, const QMetaObject* meta, const QString& name) { const QObjectList& children = parent->children(); - int i; - for (i = 0; i < children.size(); ++i) { - QObject* obj = children.at(i); - + for (QObject* obj : children) { if (!obj) - return nullptr; + continue; // Skip if the name doesn't match. if (!name.isNull() && obj->objectName() != name) @@ -290,69 +287,55 @@ QObject* PythonQtStdDecorators::findChild(QObject* parent, const char* typeName, return obj; } - for (i = 0; i < children.size(); ++i) { - QObject* obj = findChild(children.at(i), typeName, meta, name); + for (QObject* child : children) { + if (child) { + QObject* obj = findChild(child, typeName, meta, name); - if (obj != nullptr) - return obj; + if (obj != nullptr) + return obj; + } } return nullptr; } -int PythonQtStdDecorators::findChildren(QObject* parent, const char* typeName, const QMetaObject* meta, +void PythonQtStdDecorators::findChildren(const QObject* parent, const char* typeName, const QMetaObject* meta, const QString& name, QList& list) { const QObjectList& children = parent->children(); - int i; - - for (i = 0; i < children.size(); ++i) { - QObject* obj = children.at(i); + for (QObject* obj : children) { if (!obj) - return -1; - - // Skip if the name doesn't match. - if (!name.isNull() && obj->objectName() != name) continue; - if ((typeName && obj->inherits(typeName)) || (meta && meta->cast(obj))) { - list += obj; + if (name.isNull() || obj->objectName() == name) { + if ((typeName && obj->inherits(typeName)) || (meta && meta->cast(obj))) { + list += obj; + } } - if (findChildren(obj, typeName, meta, name, list) < 0) - return -1; + findChildren(obj, typeName, meta, name, list); } - - return 0; } -int PythonQtStdDecorators::findChildren(QObject* parent, const char* typeName, const QMetaObject* meta, +void PythonQtStdDecorators::findChildren(const QObject* parent, const char* typeName, const QMetaObject* meta, const QRegularExpression& regExp, QList& list) { const QObjectList& children = parent->children(); - int i; - - for (i = 0; i < children.size(); ++i) { - QObject* obj = children.at(i); + for (QObject* obj : children) { if (!obj) - return -1; - - // Skip if the name doesn't match. - QRegularExpressionMatch match = regExp.match(obj->objectName()); - if (match.hasMatch() == false) continue; - if ((typeName && obj->inherits(typeName)) || (meta && meta->cast(obj))) { - list += obj; + QRegularExpressionMatch match = regExp.match(obj->objectName()); + if (match.hasMatch()) { + if ((typeName && obj->inherits(typeName)) || (meta && meta->cast(obj))) { + list += obj; + } } - if (findChildren(obj, typeName, meta, regExp, list) < 0) - return -1; + findChildren(obj, typeName, meta, regExp, list); } - - return 0; } const QMetaObject* PythonQtStdDecorators::metaObject(QObject* obj) diff --git a/src/PythonQtStdDecorators.h b/src/PythonQtStdDecorators.h index aa5771c74..47467e3ce 100644 --- a/src/PythonQtStdDecorators.h +++ b/src/PythonQtStdDecorators.h @@ -151,11 +151,11 @@ public Q_SLOTS: void static_QTimer_singleShot(int msec, PyObject* callable); private: - QObject* findChild(QObject* parent, const char* typeName, const QMetaObject* meta, const QString& name); - int findChildren(QObject* parent, const char* typeName, const QMetaObject* meta, const QString& name, - QList& list); - int findChildren(QObject* parent, const char* typeName, const QMetaObject* meta, const QRegularExpression& regExp, + QObject* findChild(const QObject* parent, const char* typeName, const QMetaObject* meta, const QString& name); + void findChildren(const QObject* parent, const char* typeName, const QMetaObject* meta, const QString& name, QList& list); + void findChildren(const QObject* parent, const char* typeName, const QMetaObject* meta, + const QRegularExpression& regExp, QList& list); }; class PythonQtSingleShotTimer : public QTimer