From patchwork Mon Sep 21 11:54:37 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98804 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B83BC982F1 for ; Mon, 21 Sep 2026 11:56:09 +0000 (UTC) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47391.1789991765107963338 for ; Mon, 21 Sep 2026 04:56:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=jMAE9q1t; spf=pass (domain: t-online.de, ip: 194.25.134.84, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout09.t-online.de (Postfix) with SMTP id 7DF2438159 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc8-04X1yy0; Mon, 21 Sep 2026 13:55:16 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 01/24] nvmetcli: drop the six dependency Date: Mon, 21 Sep 2026 13:54:37 +0200 Message-ID: <20260921115500.53770-1-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991716-74FEEA93-6D09ACF1/0/0 CLEAN NORMAL X-TOI-MSGID: 4f925c76-9ba8-4d6d-a411-7c58a58b4c34 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=ucfqHWcyfuY6LrrQQMDzYo3vGfh6FE0wGaTanfOrYyE=; h=From:To:Subject:Date; b=jMAE9q1tmOi+Kyf2deBZbIcc9qtdqWtm9vNCkl633/MHWUPyQ2N4tWUvfYXFXcvW+ 13yYtR9vTtStPawvFxgY5liKQEv48/FT/jrxjNr3Oejz19321M8ZdRhezdzFMlHLjV RiP2Gn/QBP+kbExmu/j8YzYiIoekOK5tM1dKYWzE73FAr6/ewpWMrZP8btEa3/ctE/ oBKd9xh5fxSyW1z6Y8977Dci48EFV3CzsQIwh+ubOWzzRYlMMHI+6wa+wvAmyY4rO1 6iy9uxK9PcZwly6GQixkePXEwWgMIkPzmFRYr52fThlcIHyjIZ9iwOzo4FQoJMYDz3 ZxIGJUPT00tNA== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:09 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130139 nvmetcli imports neither six nor anything that needs it; the runtime dependency is a leftover from the Python 2 era. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../meta-python/recipes-support/nvmetcli/nvmetcli_0.8.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-oe/dynamic-layers/meta-python/recipes-support/nvmetcli/nvmetcli_0.8.bb b/meta-oe/dynamic-layers/meta-python/recipes-support/nvmetcli/nvmetcli_0.8.bb index cf2d54c07d..5f54dc812d 100644 --- a/meta-oe/dynamic-layers/meta-python/recipes-support/nvmetcli/nvmetcli_0.8.bb +++ b/meta-oe/dynamic-layers/meta-python/recipes-support/nvmetcli/nvmetcli_0.8.bb @@ -17,7 +17,7 @@ SYSTEMD_SERVICE:${PN} = "nvmet.service" SYSTEMD_AUTO_ENABLE ?= "disable" -RDEPENDS:${PN} += "python3 python3-six python3-pyparsing python3-configshell-fb" +RDEPENDS:${PN} += "python3 python3-pyparsing python3-configshell-fb" SRCREV = "d323d5a3091af490502c5d025ec7361a3a2cfbd9" SRC_URI = "git://git.infradead.org/users/hch/nvmetcli.git;branch=master" From patchwork Mon Sep 21 11:54:38 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98801 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7ABD4C982E1 for ; Mon, 21 Sep 2026 11:56:08 +0000 (UTC) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47390.1789991765074128856 for ; Mon, 21 Sep 2026 04:56:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=ilAUmCpO; spf=pass (domain: t-online.de, ip: 194.25.134.84, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout09.t-online.de (Postfix) with SMTP id 8A7BF38164 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc8-04X1yz0; Mon, 21 Sep 2026 13:55:16 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 02/24] python3-astroid: drop the six dependency Date: Mon, 21 Sep 2026 13:54:38 +0200 Message-ID: <20260921115500.53770-2-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991716-8E7FBA93-5E69AA99/0/0 CLEAN NORMAL X-TOI-MSGID: 7ce009e3-39e4-4c90-b619-ad3472537048 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=agvGy6k8Lok7bUlWH9aNgOIPJXiYku51jPqFbYyMeac=; h=From:To:Subject:Date:In-Reply-To:References; b=ilAUmCpO702qXECM9McdFz0E8ZYg3y2at+WvAI80vfFJ7E4bYAX8ZMXseLd+vbTBn TLK6COFRpK+4jv2WRILY/7Hz2qGoaA1Hyl67yhhLRYTr5Jut97heUoao9fNuK0HeGy 6LK7kTif14s8NEQNeEnIpe6tPYoCCeIRZvOKOXCeg2blwjYR/fr9gIKzbP+VLxw1cv aBaIy0O5+MD7qr1TWg+cQ56w6L7gKxNkLRMHfsydHr4yTKvFfkvqKekhYgSJEs7R2R hBooVA2zU0S9Krd5XbCd8Yhh9yJROjt/kf2fqK2wtQaeaF37u6Mpz3VyxnYH0bFymu xK7Hp+dR3VBRA== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:08 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130137 astroid has not imported six since the 2.x series; the runtime dependency is stale. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- meta-python/recipes-devtools/python/python3-astroid_4.3.1.bb | 1 - 1 file changed, 1 deletion(-) diff --git a/meta-python/recipes-devtools/python/python3-astroid_4.3.1.bb b/meta-python/recipes-devtools/python/python3-astroid_4.3.1.bb index f0a74e79b1..2e1932e88f 100644 --- a/meta-python/recipes-devtools/python/python3-astroid_4.3.1.bb +++ b/meta-python/recipes-devtools/python/python3-astroid_4.3.1.bb @@ -18,7 +18,6 @@ FILES:${PN}-tests += " \ RDEPENDS:${PN}:append:class-target = " \ python3-lazy-object-proxy \ python3-logging \ - python3-six \ python3-wrapt \ python3-setuptools \ python3-typing-extensions \ From patchwork Mon Sep 21 11:54:39 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98811 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9D33CC982E1 for ; Mon, 21 Sep 2026 11:56:11 +0000 (UTC) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.47165.1789991765094614058 for ; Mon, 21 Sep 2026 04:56:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=oGNU4wBo; spf=pass (domain: t-online.de, ip: 194.25.134.84, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout09.t-online.de (Postfix) with SMTP id 9839438166 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc8-04X1z00; Mon, 21 Sep 2026 13:55:16 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 03/24] python3-configshell-fb: upgrade 1.1.30 -> 2.0.3 Date: Mon, 21 Sep 2026 13:54:39 +0200 Message-ID: <20260921115500.53770-3-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991716-837FDA93-76AB94C8/0/0 CLEAN NORMAL X-TOI-MSGID: d5912325-d424-4e38-a0ee-bcdc8412ffb7 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=kKvQrJErWE89Ys3hSZpp7TVGGyV2hqWLNE1Xl2O4Pr0=; h=From:To:Subject:Date:In-Reply-To:References; b=oGNU4wBo7ZuL28St8CHIgSG20i3Z072GOsyPNazeMdEx3kBd1cmVkzaNu6asOCDf8 T7AK7OjcL6uLJ6DnXBfXPor09uIBc7tvZMDhIk162xqAJCWvFtU3CMrUOo6A17CY4u /JbP0z6ESG1Jq3XxLO1Mwe7ARRWlzonmpsILbpEgL5cF1s4rU7VEL1EvQW9uXWfCBR P2Xa/9GClbFHJuwock6vogznBaxY6a2Qgf07Qfe77V6wHpTG6ARfTtkVzfyADiprsM dFw/1VnZBc2WSJ9ctT+gdeQPFK3MnVQRUxa9utW1SrsbeTIugHG1iKSN/Al1sNseFX aimdic91GG69w== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:11 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130138 The new release drops the six dependency and the 2to3 conversion, and switches the build backend from poetry-core to hatchling, which needs hatch-vcs at build time. The COPYING checksum changed with the new license file header. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../python/python3-configshell-fb_1.1.30.bb | 18 ----------------- .../python/python3-configshell-fb_2.0.3.bb | 20 +++++++++++++++++++ 2 files changed, 20 insertions(+), 18 deletions(-) delete mode 100644 meta-python/recipes-devtools/python/python3-configshell-fb_1.1.30.bb create mode 100644 meta-python/recipes-devtools/python/python3-configshell-fb_2.0.3.bb diff --git a/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.30.bb b/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.30.bb deleted file mode 100644 index aa14c99e8b..0000000000 --- a/meta-python/recipes-devtools/python/python3-configshell-fb_1.1.30.bb +++ /dev/null @@ -1,18 +0,0 @@ -SUMMARY = "A Python library for building configuration shells" -DESCRIPTION = "configshell-fb is a Python library that provides a framework for \ -building simple but nice CLI-based applications. This runs with Python 2 and \ -2to3 is run by setup.py to run on Python 3." - -LICENSE = "Apache-2.0" -LIC_FILES_CHKSUM = "file://COPYING;md5=1dece7821bf3fd70fe1309eaa37d52a2" - -SRC_URI[sha256sum] = "41f6b7eaa7c9ff422acdc910762fd39ef3333a365918463fef8b398d857170fe" - -inherit pypi python_poetry_core - -RDEPENDS:${PN} += " \ - python3-fcntl \ - python3-modules \ - python3-pyparsing \ - python3-six \ -" diff --git a/meta-python/recipes-devtools/python/python3-configshell-fb_2.0.3.bb b/meta-python/recipes-devtools/python/python3-configshell-fb_2.0.3.bb new file mode 100644 index 0000000000..48751575c5 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-configshell-fb_2.0.3.bb @@ -0,0 +1,20 @@ +SUMMARY = "A Python library for building configuration shells" +DESCRIPTION = "configshell-fb is a Python library that provides a framework for \ +building simple but nice CLI-based applications." + +LICENSE = "Apache-2.0" +LIC_FILES_CHKSUM = "file://COPYING;md5=34400b68072d710fecd0a2940a0d1658" + +PYPI_PACKAGE = "configshell_fb" + +SRC_URI[sha256sum] = "dbb086c16c1603a230f9017ef85baccabfd5d87439a01e963377e50f10220f53" + +inherit pypi python_hatchling + +DEPENDS += "python3-hatch-vcs-native" + +RDEPENDS:${PN} += " \ + python3-fcntl \ + python3-modules \ + python3-pyparsing \ +" From patchwork Mon Sep 21 11:54:40 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98815 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id B0A6FC982FD for ; Mon, 21 Sep 2026 11:56:10 +0000 (UTC) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.47166.1789991765126308922 for ; Mon, 21 Sep 2026 04:56:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=Ro4DPL9D; spf=pass (domain: t-online.de, ip: 194.25.134.84, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout09.t-online.de (Postfix) with SMTP id A5D7238170 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc8-04X1z10; Mon, 21 Sep 2026 13:55:17 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 04/24] python3-dateutil: drop the six dependency Date: Mon, 21 Sep 2026 13:54:40 +0200 Message-ID: <20260921115500.53770-4-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991717-767F3A93-FDD1DCD4/0/0 CLEAN NORMAL X-TOI-MSGID: 31cf55da-e8dd-4a77-9595-8f2c7d35d123 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=HD9kW1W6ZmDZYbebkm42pT6ghztg9+lkQUWPlOL4JK8=; h=From:To:Subject:Date:In-Reply-To:References; b=Ro4DPL9DqLrmUEIdDiiaB8KCg/urWVfLhWmja+TxyKTGeNyiXbT34bQo8Y8hCUim2 iETlso1sfl8dojewZoAvidI8VvjeceFkgp0JOM/VvD3vRcVDQDONkILc4uxkcRPkTH lM5qptVRhDyjDnKbDRqPoB9GtE0yZL8u2lKhHr0/NbNp+Ww06b2Wpg6lSOK2sgUsrd 1/Rl8aYwogmmzri7fIgVbYI/FzTtgAONu/S7R3X8jHCK7sAqzEOz0dxc2pnoKHCqM8 qiSx6VlNRirxryCfsPfZbB+nIRw35oqGGQzQynRUYAIUJR40OBEvMwe1DbLIPnJSNI MP0MtNLJaMbCg== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:10 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130140 Patch dateutil to use the standard library instead of the six metaclass decorators, type aliases, raise_from and six.moves imports, and drop the runtime dependency. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 751 ++++++++++++++++++ .../python/python3-dateutil_2.9.0.bb | 2 +- 2 files changed, 752 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-dateutil/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-dateutil/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-dateutil/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..94ada60075 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-dateutil/0001-drop-the-six-dependency.patch @@ -0,0 +1,751 @@ +From 81e23b3bffdb1ec451b2ed02bc377b1be53b2b5f Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 12:30:09 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and dateutil no longer needs it on +Python 3: the metaclass decorators, the string and integer type aliases, +raise_from and the six.moves imports of _thread, range and winreg all +have direct equivalents in the standard library. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + pyproject.toml | 1 - + setup.cfg | 1 - + src/dateutil/parser/_parser.py | 14 ++++++-------- + src/dateutil/parser/isoparser.py | 5 ++--- + src/dateutil/relativedelta.py | 3 +-- + src/dateutil/rrule.py | 41 ++++++++++++++++++++--------------------- + src/dateutil/tz/_common.py | 15 +-------------- + src/dateutil/tz/_factories.py | 2 +- + src/dateutil/tz/tz.py | 19 +++++++------------ + src/dateutil/tz/win.py | 7 +++---- + tests/property/test_tz_prop.py | 6 +----- + tests/test_imports.py | 9 ++------- + tests/test_isoparser.py | 16 +++++----------- + tests/test_parser.py | 13 +++---------- + tests/test_rrule.py | 38 -------------------------------------- + tests/test_tz.py | 6 ------ + updatezinfo.py | 4 ++-- + 17 files changed, 54 insertions(+), 146 deletions(-) + +diff --git a/pyproject.toml b/pyproject.toml +index 67ad619..12da1f4 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -57,7 +57,6 @@ known_first_party = ["dateutil"] + known_third_party=[ + "pytest", + "hypothesis", +- "six", + "freezegun", + "mock", + ] +diff --git a/setup.cfg b/setup.cfg +index 4f91e34..84f19f3 100644 +--- a/setup.cfg ++++ b/setup.cfg +@@ -39,7 +39,6 @@ classifiers = + [options] + zip_safe = True + setup_requires = setuptools_scm +-install_requires = six >= 1.5 + package_dir = + =src + python_requires = >=2.7, !=3.0.*, !=3.1.*, !=3.2.* +diff --git a/src/dateutil/parser/_parser.py b/src/dateutil/parser/_parser.py +index 37d1663..41d3d9f 100644 +--- a/src/dateutil/parser/_parser.py ++++ b/src/dateutil/parser/_parser.py +@@ -39,8 +39,6 @@ import warnings + from calendar import monthrange + from io import StringIO + +-import six +-from six import integer_types, text_type + + from decimal import Decimal + +@@ -63,7 +61,7 @@ class _timelex(object): + if isinstance(instream, (bytes, bytearray)): + instream = instream.decode() + +- if isinstance(instream, text_type): ++ if isinstance(instream, str): + instream = StringIO(instream) + elif getattr(instream, 'read', None) is None: + raise TypeError('Parser must be a string or character stream, not ' +@@ -648,7 +646,7 @@ class parser(object): + try: + ret = self._build_naive(res, default) + except ValueError as e: +- six.raise_from(ParserError(str(e) + ": %s", timestr), e) ++ raise ParserError(str(e) + ": %s", timestr) from e + + if not ignoretz: + ret = self._build_tzaware(ret, res, tzinfos) +@@ -878,7 +876,7 @@ class parser(object): + try: + value = self._to_decimal(value_repr) + except Exception as e: +- six.raise_from(ValueError('Unknown numeric token'), e) ++ raise ValueError('Unknown numeric token') from e + + len_li = len(value_repr) + +@@ -1147,7 +1145,7 @@ class parser(object): + raise ValueError("Converted decimal value is infinite or NaN") + except Exception as e: + msg = "Could not convert %s to decimal" % val +- six.raise_from(ValueError(msg), e) ++ raise ValueError(msg) from e + else: + return decimal_value + +@@ -1165,9 +1163,9 @@ class parser(object): + # eg tzinfos = {'BRST' : None} + if isinstance(tzdata, datetime.tzinfo) or tzdata is None: + tzinfo = tzdata +- elif isinstance(tzdata, text_type): ++ elif isinstance(tzdata, str): + tzinfo = tz.tzstr(tzdata) +- elif isinstance(tzdata, integer_types): ++ elif isinstance(tzdata, int): + tzinfo = tz.tzoffset(tzname, tzdata) + else: + raise TypeError("Offset must be tzinfo subclass, tz string, " +diff --git a/src/dateutil/parser/isoparser.py b/src/dateutil/parser/isoparser.py +index 7060087..d296948 100644 +--- a/src/dateutil/parser/isoparser.py ++++ b/src/dateutil/parser/isoparser.py +@@ -14,7 +14,6 @@ from dateutil import tz + from functools import wraps + + import re +-import six + + __all__ = ["isoparse", "isoparser"] + +@@ -26,13 +25,13 @@ def _takes_ascii(f): + str_in = getattr(str_in, 'read', lambda: str_in)() + + # If it's unicode, turn it into bytes, since ISO-8601 only covers ASCII +- if isinstance(str_in, six.text_type): ++ if isinstance(str_in, str): + # ASCII is the same in UTF-8 + try: + str_in = str_in.encode('ascii') + except UnicodeEncodeError as e: + msg = 'ISO-8601 strings should contain only ASCII characters' +- six.raise_from(ValueError(msg), e) ++ raise ValueError(msg) from e + + return f(self, str_in, *args, **kwargs) + +diff --git a/src/dateutil/relativedelta.py b/src/dateutil/relativedelta.py +index cd323a5..8283d7e 100644 +--- a/src/dateutil/relativedelta.py ++++ b/src/dateutil/relativedelta.py +@@ -5,7 +5,6 @@ import calendar + import operator + from math import copysign + +-from six import integer_types + from warnings import warn + + from ._common import weekday +@@ -200,7 +199,7 @@ class relativedelta(object): + "This is not a well-defined condition and will raise " + + "errors in future versions.", DeprecationWarning) + +- if isinstance(weekday, integer_types): ++ if isinstance(weekday, int): + self.weekday = weekdays[weekday] + else: + self.weekday = weekday +diff --git a/src/dateutil/rrule.py b/src/dateutil/rrule.py +index 571a0d2..d4ebac8 100644 +--- a/src/dateutil/rrule.py ++++ b/src/dateutil/rrule.py +@@ -15,9 +15,8 @@ from functools import wraps + # For warning about deprecation of until and count + from warnings import warn + +-from six import advance_iterator, integer_types + +-from six.moves import _thread, range ++import _thread + + from ._common import weekday as weekdaybase + +@@ -134,7 +133,7 @@ class rrulebase(object): + break + try: + for j in range(10): +- cache.append(advance_iterator(gen)) ++ cache.append(next(gen)) + except StopIteration: + self._cache_gen = gen = None + self._cache_complete = True +@@ -161,7 +160,7 @@ class rrulebase(object): + gen = iter(self) + try: + for i in range(item+1): +- res = advance_iterator(gen) ++ res = next(gen) + except StopIteration: + raise IndexError + return res +@@ -479,14 +478,14 @@ class rrule(rrulebase): + + if wkst is None: + self._wkst = calendar.firstweekday() +- elif isinstance(wkst, integer_types): ++ elif isinstance(wkst, int): + self._wkst = wkst + else: + self._wkst = wkst.weekday + + if bysetpos is None: + self._bysetpos = None +- elif isinstance(bysetpos, integer_types): ++ elif isinstance(bysetpos, int): + if bysetpos == 0 or not (-366 <= bysetpos <= 366): + raise ValueError("bysetpos must be between 1 and 366, " + "or between -366 and -1") +@@ -520,7 +519,7 @@ class rrule(rrulebase): + if bymonth is None: + self._bymonth = None + else: +- if isinstance(bymonth, integer_types): ++ if isinstance(bymonth, int): + bymonth = (bymonth,) + + self._bymonth = tuple(sorted(set(bymonth))) +@@ -532,7 +531,7 @@ class rrule(rrulebase): + if byyearday is None: + self._byyearday = None + else: +- if isinstance(byyearday, integer_types): ++ if isinstance(byyearday, int): + byyearday = (byyearday,) + + self._byyearday = tuple(sorted(set(byyearday))) +@@ -542,7 +541,7 @@ class rrule(rrulebase): + if byeaster is not None: + if not easter: + from dateutil import easter +- if isinstance(byeaster, integer_types): ++ if isinstance(byeaster, int): + self._byeaster = (byeaster,) + else: + self._byeaster = tuple(sorted(byeaster)) +@@ -556,7 +555,7 @@ class rrule(rrulebase): + self._bymonthday = () + self._bynmonthday = () + else: +- if isinstance(bymonthday, integer_types): ++ if isinstance(bymonthday, int): + bymonthday = (bymonthday,) + + bymonthday = set(bymonthday) # Ensure it's unique +@@ -573,7 +572,7 @@ class rrule(rrulebase): + if byweekno is None: + self._byweekno = None + else: +- if isinstance(byweekno, integer_types): ++ if isinstance(byweekno, int): + byweekno = (byweekno,) + + self._byweekno = tuple(sorted(set(byweekno))) +@@ -588,13 +587,13 @@ class rrule(rrulebase): + # If it's one of the valid non-sequence types, convert to a + # single-element sequence before the iterator that builds the + # byweekday set. +- if isinstance(byweekday, integer_types) or hasattr(byweekday, "n"): ++ if isinstance(byweekday, int) or hasattr(byweekday, "n"): + byweekday = (byweekday,) + + self._byweekday = set() + self._bynweekday = set() + for wday in byweekday: +- if isinstance(wday, integer_types): ++ if isinstance(wday, int): + self._byweekday.add(wday) + elif not wday.n or freq > MONTHLY: + self._byweekday.add(wday.weekday) +@@ -629,7 +628,7 @@ class rrule(rrulebase): + else: + self._byhour = None + else: +- if isinstance(byhour, integer_types): ++ if isinstance(byhour, int): + byhour = (byhour,) + + if freq == HOURLY: +@@ -649,7 +648,7 @@ class rrule(rrulebase): + else: + self._byminute = None + else: +- if isinstance(byminute, integer_types): ++ if isinstance(byminute, int): + byminute = (byminute,) + + if freq == MINUTELY: +@@ -669,7 +668,7 @@ class rrule(rrulebase): + else: + self._bysecond = None + else: +- if isinstance(bysecond, integer_types): ++ if isinstance(bysecond, int): + bysecond = (bysecond,) + + self._bysecond = set(bysecond) +@@ -1062,7 +1061,7 @@ class rrule(rrulebase): + cset = set() + + # Support a single byxxx value. +- if isinstance(byxxx, integer_types): ++ if isinstance(byxxx, int): + byxxx = (byxxx, ) + + for num in byxxx: +@@ -1315,7 +1314,7 @@ class rruleset(rrulebase): + class _genitem(object): + def __init__(self, genlist, gen): + try: +- self.dt = advance_iterator(gen) ++ self.dt = next(gen) + genlist.append(self) + except StopIteration: + pass +@@ -1324,7 +1323,7 @@ class rruleset(rrulebase): + + def __next__(self): + try: +- self.dt = advance_iterator(self.gen) ++ self.dt = next(self.gen) + except StopIteration: + if self.genlist[0] is self: + heapq.heappop(self.genlist) +@@ -1400,14 +1399,14 @@ class rruleset(rrulebase): + if not lastdt or lastdt != ritem.dt: + while exlist and exlist[0] < ritem: + exitem = exlist[0] +- advance_iterator(exitem) ++ next(exitem) + if exlist and exlist[0] is exitem: + heapq.heapreplace(exlist, exitem) + if not exlist or ritem != exlist[0]: + total += 1 + yield ritem.dt + lastdt = ritem.dt +- advance_iterator(ritem) ++ next(ritem) + if rlist and rlist[0] is ritem: + heapq.heapreplace(rlist, ritem) + self._len = total +diff --git a/src/dateutil/tz/_common.py b/src/dateutil/tz/_common.py +index e6ac118..d70f8a4 100644 +--- a/src/dateutil/tz/_common.py ++++ b/src/dateutil/tz/_common.py +@@ -1,5 +1,3 @@ +-from six import PY2 +- + from functools import wraps + + from datetime import datetime, timedelta, tzinfo +@@ -16,18 +14,7 @@ def tzname_in_python2(namefunc): + tzname() API changed in Python 3. It used to return bytes, but was changed + to unicode strings + """ +- if PY2: +- @wraps(namefunc) +- def adjust_encoding(*args, **kwargs): +- name = namefunc(*args, **kwargs) +- if name is not None: +- name = name.encode() +- +- return name +- +- return adjust_encoding +- else: +- return namefunc ++ return namefunc + + + # The following is adapted from Alexander Belopolsky's tz library +diff --git a/src/dateutil/tz/_factories.py b/src/dateutil/tz/_factories.py +index f8a6589..97a28d2 100644 +--- a/src/dateutil/tz/_factories.py ++++ b/src/dateutil/tz/_factories.py +@@ -2,7 +2,7 @@ from datetime import timedelta + import weakref + from collections import OrderedDict + +-from six.moves import _thread ++import _thread + + + class _TzSingleton(type): +diff --git a/src/dateutil/tz/tz.py b/src/dateutil/tz/tz.py +index 6175914..69b8763 100644 +--- a/src/dateutil/tz/tz.py ++++ b/src/dateutil/tz/tz.py +@@ -16,9 +16,7 @@ import bisect + import weakref + from collections import OrderedDict + +-import six +-from six import string_types +-from six.moves import _thread ++import _thread + from ._common import tzname_in_python2, _tzinfo + from ._common import tzrangebase, enfold + from ._common import _validate_fromutc_inputs +@@ -38,8 +36,7 @@ EPOCH = datetime.datetime(1970, 1, 1, 0, 0) + EPOCHORDINAL = EPOCH.toordinal() + + +-@six.add_metaclass(_TzSingleton) +-class tzutc(datetime.tzinfo): ++class tzutc(datetime.tzinfo, metaclass=_TzSingleton): + """ + This is a tzinfo object that represents the UTC time zone. + +@@ -129,8 +126,7 @@ class tzutc(datetime.tzinfo): + UTC = tzutc() + + +-@six.add_metaclass(_TzOffsetFactory) +-class tzoffset(datetime.tzinfo): ++class tzoffset(datetime.tzinfo, metaclass=_TzOffsetFactory): + """ + A simple class for representing a fixed offset from UTC. + +@@ -459,7 +455,7 @@ class tzfile(_tzinfo): + super(tzfile, self).__init__() + + file_opened_here = False +- if isinstance(fileobj, string_types): ++ if isinstance(fileobj, str): + self._filename = fileobj + fileobj = open(fileobj, 'rb') + file_opened_here = True +@@ -1033,8 +1029,7 @@ class tzrange(tzrangebase): + return self._dst_base_offset_ + + +-@six.add_metaclass(_TzStrFactory) +-class tzstr(tzrange): ++class tzstr(tzrange, metaclass=_TzStrFactory): + """ + ``tzstr`` objects are time zone objects specified by a time-zone string as + it would be passed to a ``TZ`` variable on POSIX-style systems (see +@@ -1265,7 +1260,7 @@ class tzical(object): + global rrule + from dateutil import rrule + +- if isinstance(fileobj, string_types): ++ if isinstance(fileobj, str): + self._s = fileobj + # ical should be encoded in UTF-8 with CRLF + fileobj = open(fileobj, 'r') +@@ -1621,7 +1616,7 @@ def __get_gettz(): + except TypeError as e: + if isinstance(name, bytes): + new_msg = "gettz argument should be str, not bytes" +- six.raise_from(TypeError(new_msg), e) ++ raise TypeError(new_msg) from e + else: + raise + if os.path.isabs(name): +diff --git a/src/dateutil/tz/win.py b/src/dateutil/tz/win.py +index cde07ba..7fdd15d 100644 +--- a/src/dateutil/tz/win.py ++++ b/src/dateutil/tz/win.py +@@ -10,8 +10,7 @@ Attempting to import this module on a non-Windows platform will raise an + import datetime + import struct + +-from six.moves import winreg +-from six import text_type ++import winreg + + try: + import ctypes +@@ -216,7 +215,7 @@ class tzwin(tzwinbase): + self._name = name + + with winreg.ConnectRegistry(None, winreg.HKEY_LOCAL_MACHINE) as handle: +- tzkeyname = text_type("{kn}\\{name}").format(kn=TZKEYNAME, name=name) ++ tzkeyname = str("{kn}\\{name}").format(kn=TZKEYNAME, name=name) + with winreg.OpenKey(handle, tzkeyname) as tzkey: + keydict = valuestodict(tzkey) + +@@ -282,7 +281,7 @@ class tzwinlocal(tzwinbase): + self._dst_abbr = keydict["DaylightName"] + + try: +- tzkeyname = text_type('{kn}\\{sn}').format(kn=TZKEYNAME, ++ tzkeyname = str('{kn}\\{sn}').format(kn=TZKEYNAME, + sn=self._std_abbr) + with winreg.OpenKey(handle, tzkeyname) as tzkey: + _keydict = valuestodict(tzkey) +diff --git a/tests/property/test_tz_prop.py b/tests/property/test_tz_prop.py +index ec6d271..d5806b6 100644 +--- a/tests/property/test_tz_prop.py ++++ b/tests/property/test_tz_prop.py +@@ -1,7 +1,6 @@ + from datetime import datetime, timedelta + + import pytest +-import six + from hypothesis import assume, given + from hypothesis import strategies as st + +@@ -25,10 +24,7 @@ def test_gettz_returns_local(gettz_arg, dt): + return + + dt_act = dt.astimezone(tz.gettz(gettz_arg)) +- if six.PY2: +- dt_exp = dt.astimezone(tz.tzlocal()) +- else: +- dt_exp = dt.astimezone() ++ dt_exp = dt.astimezone() + + assert dt_act == dt_exp + assert dt_act.tzname() == dt_exp.tzname() +diff --git a/tests/test_imports.py b/tests/test_imports.py +index 7d0749e..caad793 100644 +--- a/tests/test_imports.py ++++ b/tests/test_imports.py +@@ -1,7 +1,6 @@ + import sys + import unittest + import pytest +-import six + + MODULE_TYPE = type(sys) + +@@ -10,12 +9,8 @@ MODULE_TYPE = type(sys) + # But since we expect lazy imports tests to fail for Python < 3.7 we'll ignore those + # warnings with this filter. + +-if six.PY2: +- filter_import_warning = pytest.mark.filterwarnings("ignore::RuntimeWarning") +-else: +- +- def filter_import_warning(f): +- return f ++def filter_import_warning(f): ++ return f + + + @pytest.fixture(scope="function") +diff --git a/tests/test_isoparser.py b/tests/test_isoparser.py +index c33881f..874070c 100644 +--- a/tests/test_isoparser.py ++++ b/tests/test_isoparser.py +@@ -9,7 +9,6 @@ from dateutil.tz import UTC + from dateutil.parser import isoparser, isoparse + + import pytest +-import six + + + def _generate_tzoffsets(limited): +@@ -297,7 +296,7 @@ def test_isoparser_invalid_sep(sep): + + + # This only fails on Python 3 +-@pytest.mark.xfail(not six.PY2, reason="Fails on Python 3 only") ++@pytest.mark.xfail(reason="Fails on Python 3 only") + def test_isoparser_byte_sep(): + dt = datetime(2017, 12, 6, 12, 30, 45) + dt_str = dt.isoformat(sep=str('T')) +@@ -347,9 +346,7 @@ def __make_date_examples(): + date(2016, 2, 1) + ] + +- if not six.PY2: +- # strftime does not support dates before 1900 in Python 2 +- dates_no_day.append(date(1000, 11, 1)) ++ dates_no_day.append(date(1000, 11, 1)) + + # Only one supported format for dates with no day + o = zip(dates_no_day, it.repeat('%Y-%m')) +@@ -371,7 +368,7 @@ def __make_date_examples(): + @pytest.mark.parametrize('as_bytes', [True, False]) + def test_parse_isodate(d, dt_fmt, as_bytes): + d_str = d.strftime(dt_fmt) +- if isinstance(d_str, six.text_type) and as_bytes: ++ if isinstance(d_str, str) and as_bytes: + d_str = d_str.encode('ascii') + elif isinstance(d_str, bytes) and not as_bytes: + d_str = d_str.decode('ascii') +@@ -400,10 +397,7 @@ def test_parse_isodate_error_text(): + isoparser().parse_isodate('2014-0423') + + # ensure the error message does not contain b' prefixes +- if six.PY2: +- expected_error = "String contains unknown ISO components: u'2014-0423'" +- else: +- expected_error = "String contains unknown ISO components: '2014-0423'" ++ expected_error = "String contains unknown ISO components: '2014-0423'" + assert expected_error == str(excinfo.value) + + +@@ -458,7 +452,7 @@ def __make_time_examples(): + @pytest.mark.parametrize('as_bytes', [True, False]) + def test_isotime(time_val, time_fmt, as_bytes): + tstr = time_val.strftime(time_fmt) +- if isinstance(tstr, six.text_type) and as_bytes: ++ if isinstance(tstr, str) and as_bytes: + tstr = tstr.encode('ascii') + elif isinstance(tstr, bytes) and not as_bytes: + tstr = tstr.decode('ascii') +diff --git a/tests/test_parser.py b/tests/test_parser.py +index 08a34da..c66850e 100644 +--- a/tests/test_parser.py ++++ b/tests/test_parser.py +@@ -14,7 +14,6 @@ from dateutil.parser import UnknownTimezoneWarning + + from ._common import TZEnvContext + +-from six import assertRaisesRegex, PY2 + from io import StringIO + + import pytest +@@ -462,12 +461,6 @@ class ParserTest(unittest.TestCase): + datetime(2003, 9, 25, 10, 36, 28, + tzinfo=self.brsttz)) + +- def testDateCommandFormatWithLong(self): +- if PY2: +- self.assertEqual(parse("Thu Sep 25 10:36:28 BRST 2003", +- tzinfos={"BRST": long(-10800)}), +- datetime(2003, 9, 25, 10, 36, 28, +- tzinfo=self.brsttz)) + + def testISOFormatStrip2(self): + self.assertEqual(parse("2003-09-25T10:49:41+03:00"), +@@ -570,11 +563,11 @@ class ParserTest(unittest.TestCase): + parse('shouldfail') + + def testCorrectErrorOnFuzzyWithTokens(self): +- assertRaisesRegex(self, ParserError, 'Unknown string format', ++ self.assertRaisesRegex(ParserError, 'Unknown string format', + parse, '04/04/32/423', fuzzy_with_tokens=True) +- assertRaisesRegex(self, ParserError, 'Unknown string format', ++ self.assertRaisesRegex(ParserError, 'Unknown string format', + parse, '04/04/04 +32423', fuzzy_with_tokens=True) +- assertRaisesRegex(self, ParserError, 'Unknown string format', ++ self.assertRaisesRegex(ParserError, 'Unknown string format', + parse, '04/04/0d4', fuzzy_with_tokens=True) + + def testIncreasingCTime(self): +diff --git a/tests/test_rrule.py b/tests/test_rrule.py +index 52673ec..f50b24e 100644 +--- a/tests/test_rrule.py ++++ b/tests/test_rrule.py +@@ -3,7 +3,6 @@ from __future__ import unicode_literals + + from datetime import datetime, date + import unittest +-from six import PY2 + + from dateutil import tz + from dateutil.rrule import ( +@@ -2282,26 +2281,6 @@ class RRuleTest(unittest.TestCase): + datetime(2010, 3, 22, 13, 1), + datetime(2010, 3, 22, 14, 1)]) + +- def testLongIntegers(self): +- if PY2: # There are no longs in python3 +- self.assertEqual(list(rrule(MINUTELY, +- count=long(2), +- interval=long(2), +- bymonth=long(2), +- byweekday=long(3), +- byhour=long(6), +- byminute=long(6), +- bysecond=long(6), +- dtstart=datetime(1997, 9, 2, 9, 0))), +- [datetime(1998, 2, 5, 6, 6, 6), +- datetime(1998, 2, 12, 6, 6, 6)]) +- self.assertEqual(list(rrule(YEARLY, +- count=long(2), +- bymonthday=long(5), +- byweekno=long(2), +- dtstart=datetime(1997, 9, 2, 9, 0))), +- [datetime(1998, 1, 5, 9, 0), +- datetime(2004, 1, 5, 9, 0)]) + + def testHourlyBadRRule(self): + """ +@@ -4577,23 +4556,6 @@ class RRuleTest(unittest.TestCase): + wkst=SU, + dtstart=datetime(1997, 9, 2, 9, 0))) + +- def testToStrLongIntegers(self): +- if PY2: # There are no longs in python3 +- self._rrulestr_reverse_test(rrule(MINUTELY, +- count=long(2), +- interval=long(2), +- bymonth=long(2), +- byweekday=long(3), +- byhour=long(6), +- byminute=long(6), +- bysecond=long(6), +- dtstart=datetime(1997, 9, 2, 9, 0))) +- +- self._rrulestr_reverse_test(rrule(YEARLY, +- count=long(2), +- bymonthday=long(5), +- byweekno=long(2), +- dtstart=datetime(1997, 9, 2, 9, 0))) + + def testReplaceIfSet(self): + rr = rrule(YEARLY, +diff --git a/tests/test_tz.py b/tests/test_tz.py +index e5e4772..41c17ff 100644 +--- a/tests/test_tz.py ++++ b/tests/test_tz.py +@@ -7,7 +7,6 @@ from ._common import ComparesEqual + from datetime import datetime, timedelta + from datetime import time as dt_time + from datetime import tzinfo +-from six import PY2 + from io import BytesIO, StringIO + import unittest + +@@ -1114,11 +1113,6 @@ def test_gettz_badzone_unicode(): + b"America/New_York", + ".*should be str, not bytes.*", + id="bytes on Python 3", +- marks=[ +- pytest.mark.skipif( +- PY2, reason="bytes arguments accepted in Python 2" +- ) +- ], + ), + pytest.param( + object(), +diff --git a/updatezinfo.py b/updatezinfo.py +index bba53d5..f77dfa1 100644 +--- a/updatezinfo.py ++++ b/updatezinfo.py +@@ -4,8 +4,8 @@ import hashlib + import json + import io + +-from six.moves.urllib import request +-from six.moves.urllib import error as urllib_error ++from urllib import request ++from urllib import error as urllib_error + + try: + import dateutil diff --git a/meta-python/recipes-devtools/python/python3-dateutil_2.9.0.bb b/meta-python/recipes-devtools/python/python3-dateutil_2.9.0.bb index 2999606e06..dd3f55edf9 100644 --- a/meta-python/recipes-devtools/python/python3-dateutil_2.9.0.bb +++ b/meta-python/recipes-devtools/python/python3-dateutil_2.9.0.bb @@ -4,6 +4,7 @@ HOMEPAGE = "https://dateutil.readthedocs.org" LICENSE = "Apache-2.0 AND BSD-3-Clause" LIC_FILES_CHKSUM = "file://LICENSE;md5=e3155c7bdc71f66e02678411d2abf996" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "78e73e19c63f5b20ffa567001531680d939dc042bf7850431877645523c66709" PYPI_PACKAGE = "python-dateutil" @@ -19,7 +20,6 @@ DEPENDS += "python3-setuptools-scm-native" RDEPENDS:${PN} = "\ python3-datetime \ python3-numbers \ - python3-six \ python3-stringold \ " From patchwork Mon Sep 21 11:54:41 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98812 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id E69BAC982FC for ; Mon, 21 Sep 2026 11:56:10 +0000 (UTC) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.47167.1789991765235311533 for ; Mon, 21 Sep 2026 04:56:05 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=L59yHaT2; spf=pass (domain: t-online.de, ip: 194.25.134.84, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout09.t-online.de (Postfix) with SMTP id B382E38175 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc9-04X1z20; Mon, 21 Sep 2026 13:55:17 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 05/24] python3-ecdsa: drop the six dependency Date: Mon, 21 Sep 2026 13:54:41 +0200 Message-ID: <20260921115500.53770-5-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991717-19FF8A93-0277A7CD/0/0 CLEAN NORMAL X-TOI-MSGID: 1aabd7a8-d8eb-48d0-a6c8-6b97e9cb05c6 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=4eYEJ8y7J7Cu62EDCZAbLySgEwewBXqmIcqNgwJ/ICU=; h=From:To:Subject:Date:In-Reply-To:References; b=L59yHaT2kma4k5nmnbudHTSYuAVJnBMJRCwVptpKXl7MPPeotWCZJXinTaU8jTZmC AbbOh6Ye3WAQ5plZr4kTlQupQ+rA26VH8jzDgvI0tDGMAWN06FbPdYFuc65QiqnAn7 FeRcS0L6QQB830W2mD5mrlLj8bJ1chVPJLNBkYuQifQOrsxJloB1UPU6HQcAYgbGVa qpNVq2WHI/nyIcesJgB5Q6vFlhpeTBsQiTLlyBk3VS2q5BTbTi5ZucFJI9I47/gwco T6g6Wj3zG3d9Mz56Th1RnfpVHsBgzA8Bx3V5v0DnsP5O9CLr31R0gN4dmoBepucdmz 5kMQfXzvdhuTw== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:10 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130141 Patch ecdsa to use the Python 3 equivalents of the six helpers and drop the runtime dependency. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 393 ++++++++++++++++++ .../python/python3-ecdsa_0.19.2.bb | 2 +- 2 files changed, 394 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-ecdsa/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-ecdsa/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-ecdsa/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..3104aae6d0 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-ecdsa/0001-drop-the-six-dependency.patch @@ -0,0 +1,393 @@ +From 53f1f05e81e03b023c08a28d0d2b6d28766cb5cd Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:05:32 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim. On Python 3 int2byte is a one line +struct helper, and PY2, integer_types, text_type, binary_type, +python_2_unicode_compatible and six.moves.reduce all have direct +equivalents, so the module keeps its behaviour without the dependency. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + requirements.txt | 1 - + setup.py | 1 - + src/ecdsa/__init__.py | 5 ----- + src/ecdsa/_compat.py | 6 ++++-- + src/ecdsa/curves.py | 3 +-- + src/ecdsa/der.py | 5 ++--- + src/ecdsa/ecdsa.py | 3 +-- + src/ecdsa/ellipticcurve.py | 2 -- + src/ecdsa/keys.py | 3 +-- + src/ecdsa/numbertheory.py | 11 ++++------- + src/ecdsa/test_pyecdsa.py | 35 +++++++++++++++++------------------ + src/ecdsa/util.py | 8 ++------ + 12 files changed, 32 insertions(+), 51 deletions(-) + +diff --git a/requirements.txt b/requirements.txt +index ffe2fce..e69de29 100644 +--- a/requirements.txt ++++ b/requirements.txt +@@ -1 +0,0 @@ +-six +diff --git a/setup.py b/setup.py +index 618f5e6..8aceb5b 100755 +--- a/setup.py ++++ b/setup.py +@@ -44,6 +44,5 @@ setup( + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + ], +- install_requires=["six>=1.9.0"], + extras_require={"gmpy2": "gmpy2", "gmpy": "gmpy"}, + ) +diff --git a/src/ecdsa/__init__.py b/src/ecdsa/__init__.py +index 342538e..64aaa55 100644 +--- a/src/ecdsa/__init__.py ++++ b/src/ecdsa/__init__.py +@@ -1,6 +1,3 @@ +-# while we don't use six in this file, we did bundle it for a long time, so +-# keep as part of module in a virtual way (through __all__) +-import six + from .keys import ( + SigningKey, + VerifyingKey, +@@ -56,7 +53,6 @@ __all__ = [ + "numbertheory", + "test_pyecdsa", + "util", +- "six", + ] + + _hush_pyflakes = [ +@@ -90,7 +86,6 @@ _hush_pyflakes = [ + SECP160r1, + Ed25519, + Ed448, +- six.b(""), + BRAINPOOLP160t1, + BRAINPOOLP192t1, + BRAINPOOLP224t1, +diff --git a/src/ecdsa/_compat.py b/src/ecdsa/_compat.py +index 4558e33..bd410f9 100644 +--- a/src/ecdsa/_compat.py ++++ b/src/ecdsa/_compat.py +@@ -4,13 +4,15 @@ Common functions for providing cross-python version compatibility. + import sys + import re + import binascii +-from six import integer_types ++import struct ++ ++int2byte = struct.Struct(">B").pack + + + def str_idx_as_int(string, index): + """Take index'th byte from string, return as integer""" + val = string[index] +- if isinstance(val, integer_types): ++ if isinstance(val, int): + return val + return ord(val) + +diff --git a/src/ecdsa/curves.py b/src/ecdsa/curves.py +index 38e3a75..7662185 100644 +--- a/src/ecdsa/curves.py ++++ b/src/ecdsa/curves.py +@@ -1,6 +1,5 @@ + from __future__ import division + +-from six import PY2 + from . import der, ecdsa, ellipticcurve, eddsa + from .util import orderlen, number_to_string, string_to_number + from ._compat import normalise_bytes, bit_length +@@ -269,7 +268,7 @@ class Curve: + and ``explicit`` + :type valid_encodings: :term:`set-like object` + """ +- if not PY2 and isinstance(string, str): # pragma: no branch ++ if isinstance(string, str): # pragma: no branch + string = string.encode() + + ec_param_index = string.find(b"-----BEGIN EC PARAMETERS-----") +diff --git a/src/ecdsa/der.py b/src/ecdsa/der.py +index 5d35d69..42440cc 100644 +--- a/src/ecdsa/der.py ++++ b/src/ecdsa/der.py +@@ -4,8 +4,7 @@ import binascii + import base64 + import warnings + from itertools import chain +-from six import int2byte, text_type +-from ._compat import compat26_str, str_idx_as_int ++from ._compat import compat26_str, int2byte, str_idx_as_int + + + class UnexpectedDER(Exception): +@@ -461,7 +460,7 @@ def remove_bitstring(string, expect_unused=_sentry): + + + def unpem(pem): +- if isinstance(pem, text_type): # pragma: no branch ++ if isinstance(pem, str): # pragma: no branch + pem = pem.encode() + + d = b"".join( +diff --git a/src/ecdsa/ecdsa.py b/src/ecdsa/ecdsa.py +index f710965..6877a2f 100644 +--- a/src/ecdsa/ecdsa.py ++++ b/src/ecdsa/ecdsa.py +@@ -65,11 +65,10 @@ modified as part of the python-ecdsa package. + """ + + import warnings +-from six import int2byte + from . import ellipticcurve + from . import numbertheory + from .util import bit_length +-from ._compat import remove_whitespace ++from ._compat import int2byte, remove_whitespace + + + class RSZeroError(RuntimeError): +diff --git a/src/ecdsa/ellipticcurve.py b/src/ecdsa/ellipticcurve.py +index a982c1e..0e9db2e 100644 +--- a/src/ecdsa/ellipticcurve.py ++++ b/src/ecdsa/ellipticcurve.py +@@ -47,14 +47,12 @@ except ImportError: # pragma: no branch + GMPY = False + + +-from six import python_2_unicode_compatible + from . import numbertheory + from ._compat import normalise_bytes, int_to_bytes, bit_length, bytes_to_int + from .errors import MalformedPointError + from .util import orderlen, string_to_number, number_to_string + + +-@python_2_unicode_compatible + class CurveFp(object): + """ + :term:`Short Weierstrass Elliptic Curve ` over a +diff --git a/src/ecdsa/keys.py b/src/ecdsa/keys.py +index f74252c..75e059f 100644 +--- a/src/ecdsa/keys.py ++++ b/src/ecdsa/keys.py +@@ -5,7 +5,6 @@ Primary classes for performing signing and verification operations. + import binascii + from hashlib import sha1 + import os +-from six import PY2 + from . import ecdsa, eddsa + from . import der, ssh + from . import rfc6979 +@@ -963,7 +962,7 @@ class SigningKey(object): + :return: Initialised SigningKey object + :rtype: SigningKey + """ +- if not PY2 and isinstance(string, str): # pragma: no branch ++ if isinstance(string, str): # pragma: no branch + string = string.encode() + + # The privkey pem may have multiple sections, commonly it also has +diff --git a/src/ecdsa/numbertheory.py b/src/ecdsa/numbertheory.py +index fe974f8..9d55047 100644 +--- a/src/ecdsa/numbertheory.py ++++ b/src/ecdsa/numbertheory.py +@@ -12,8 +12,9 @@ + from __future__ import division + + import sys +-from six import integer_types, PY2 +-from six.moves import reduce ++from functools import reduce ++ ++integer_types = (int,) + + try: + xrange +@@ -218,11 +219,7 @@ def square_root_mod_prime(a, p): + assert d == p - 1 + return (2 * a * pow(4 * a, (p - 5) // 8, p)) % p + +- if PY2: +- # xrange on python2 can take integers representable as C long only +- range_top = min(0x7FFFFFFF, p) +- else: +- range_top = p ++ range_top = p + for b in xrange(2, range_top): # pragma: no branch + if jacobi(b * b - 4 * a, p) == -1: + f = (a, -b, 1) +diff --git a/src/ecdsa/test_pyecdsa.py b/src/ecdsa/test_pyecdsa.py +index 799e9b7..6d95672 100644 +--- a/src/ecdsa/test_pyecdsa.py ++++ b/src/ecdsa/test_pyecdsa.py +@@ -16,7 +16,6 @@ from functools import partial + from hypothesis import given, settings + import hypothesis.strategies as st + +-from six import binary_type + from .keys import SigningKey, VerifyingKey + from .keys import BadSignatureError, MalformedPointError, BadDigestError + from . import util +@@ -235,47 +234,47 @@ class ECDSA(unittest.TestCase): + def test_privkey_strings(self): + priv1 = SigningKey.generate() + s1 = priv1.to_string() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + self.assertEqual(len(s1), NIST192p.baselen) + priv2 = SigningKey.from_string(s1) + self.assertTruePrivkeysEqual(priv1, priv2) + + s1 = priv1.to_pem() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + self.assertTrue(s1.startswith(b"-----BEGIN EC PRIVATE KEY-----")) + self.assertTrue(s1.strip().endswith(b"-----END EC PRIVATE KEY-----")) + priv2 = SigningKey.from_pem(s1) + self.assertTruePrivkeysEqual(priv1, priv2) + + s1 = priv1.to_der() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + priv2 = SigningKey.from_der(s1) + self.assertTruePrivkeysEqual(priv1, priv2) + + priv1 = SigningKey.generate(curve=NIST256p) + s1 = priv1.to_pem() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + self.assertTrue(s1.startswith(b"-----BEGIN EC PRIVATE KEY-----")) + self.assertTrue(s1.strip().endswith(b"-----END EC PRIVATE KEY-----")) + priv2 = SigningKey.from_pem(s1) + self.assertTruePrivkeysEqual(priv1, priv2) + + s1 = priv1.to_der() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + priv2 = SigningKey.from_der(s1) + self.assertTruePrivkeysEqual(priv1, priv2) + + def test_privkey_strings_brainpool(self): + priv1 = SigningKey.generate(curve=BRAINPOOLP512r1) + s1 = priv1.to_pem() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + self.assertTrue(s1.startswith(b"-----BEGIN EC PRIVATE KEY-----")) + self.assertTrue(s1.strip().endswith(b"-----END EC PRIVATE KEY-----")) + priv2 = SigningKey.from_pem(s1) + self.assertTruePrivkeysEqual(priv1, priv2) + + s1 = priv1.to_der() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + priv2 = SigningKey.from_der(s1) + self.assertTruePrivkeysEqual(priv1, priv2) + +@@ -288,7 +287,7 @@ class ECDSA(unittest.TestCase): + priv1 = SigningKey.generate() + pub1 = priv1.get_verifying_key() + s1 = pub1.to_string() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + self.assertEqual(len(s1), NIST192p.verifying_key_length) + pub2 = VerifyingKey.from_string(s1) + self.assertTruePubkeysEqual(pub1, pub2) +@@ -296,13 +295,13 @@ class ECDSA(unittest.TestCase): + priv1 = SigningKey.generate(curve=NIST256p) + pub1 = priv1.get_verifying_key() + s1 = pub1.to_string() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + self.assertEqual(len(s1), NIST256p.verifying_key_length) + pub2 = VerifyingKey.from_string(s1, curve=NIST256p) + self.assertTruePubkeysEqual(pub1, pub2) + + pub1_der = pub1.to_der() +- self.assertEqual(type(pub1_der), binary_type) ++ self.assertEqual(type(pub1_der), bytes) + pub2 = VerifyingKey.from_der(pub1_der) + self.assertTruePubkeysEqual(pub1, pub2) + +@@ -330,7 +329,7 @@ class ECDSA(unittest.TestCase): + self.assertRaises(UnknownCurveError, VerifyingKey.from_der, badder) + + pem = pub1.to_pem() +- self.assertEqual(type(pem), binary_type) ++ self.assertEqual(type(pem), bytes) + self.assertTrue(pem.startswith(b"-----BEGIN PUBLIC KEY-----"), pem) + self.assertTrue(pem.strip().endswith(b"-----END PUBLIC KEY-----"), pem) + pub2 = VerifyingKey.from_pem(pem) +@@ -340,13 +339,13 @@ class ECDSA(unittest.TestCase): + priv1 = SigningKey.generate(curve=BRAINPOOLP512r1) + pub1 = priv1.get_verifying_key() + s1 = pub1.to_string() +- self.assertEqual(type(s1), binary_type) ++ self.assertEqual(type(s1), bytes) + self.assertEqual(len(s1), BRAINPOOLP512r1.verifying_key_length) + pub2 = VerifyingKey.from_string(s1, curve=BRAINPOOLP512r1) + self.assertTruePubkeysEqual(pub1, pub2) + + pub1_der = pub1.to_der() +- self.assertEqual(type(pub1_der), binary_type) ++ self.assertEqual(type(pub1_der), bytes) + pub2 = VerifyingKey.from_der(pub1_der) + self.assertTruePubkeysEqual(pub1, pub2) + +@@ -431,21 +430,21 @@ class ECDSA(unittest.TestCase): + data = b"data" + + sig = priv1.sign(data) +- self.assertEqual(type(sig), binary_type) ++ self.assertEqual(type(sig), bytes) + self.assertEqual(len(sig), NIST192p.signature_length) + self.assertTrue(pub1.verify(sig, data)) + + sig = priv1.sign(data, sigencode=sigencode_strings) + self.assertEqual(type(sig), tuple) + self.assertEqual(len(sig), 2) +- self.assertEqual(type(sig[0]), binary_type) +- self.assertEqual(type(sig[1]), binary_type) ++ self.assertEqual(type(sig[0]), bytes) ++ self.assertEqual(type(sig[1]), bytes) + self.assertEqual(len(sig[0]), NIST192p.baselen) + self.assertEqual(len(sig[1]), NIST192p.baselen) + self.assertTrue(pub1.verify(sig, data, sigdecode=sigdecode_strings)) + + sig_der = priv1.sign(data, sigencode=sigencode_der) +- self.assertEqual(type(sig_der), binary_type) ++ self.assertEqual(type(sig_der), bytes) + self.assertTrue(pub1.verify(sig_der, data, sigdecode=sigdecode_der)) + + def test_sigencode_string_canonize_no_change(self): +diff --git a/src/ecdsa/util.py b/src/ecdsa/util.py +index 1aff5bf..06b2fdb 100644 +--- a/src/ecdsa/util.py ++++ b/src/ecdsa/util.py +@@ -18,9 +18,8 @@ import math + import binascii + import sys + from hashlib import sha256 +-from six import PY2, int2byte, next + from . import der +-from ._compat import normalise_bytes ++from ._compat import int2byte, normalise_bytes + + + # RFC5480: +@@ -111,10 +110,7 @@ class PRNG: + def __call__(self, numbytes): + a = [next(self.generator) for i in range(numbytes)] + +- if PY2: # pragma: no branch +- return "".join(a) +- else: +- return bytes(a) ++ return bytes(a) + + def block_generator(self, seed): + counter = 0 diff --git a/meta-python/recipes-devtools/python/python3-ecdsa_0.19.2.bb b/meta-python/recipes-devtools/python/python3-ecdsa_0.19.2.bb index 5142fff297..15d3682892 100644 --- a/meta-python/recipes-devtools/python/python3-ecdsa_0.19.2.bb +++ b/meta-python/recipes-devtools/python/python3-ecdsa_0.19.2.bb @@ -3,6 +3,7 @@ SECTION = "devel/python" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=66ffc5e30f76cbb5358fe54b645e5a1d" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "62635b0ac1ca2e027f82122b5b81cb706edc38cd91c63dda28e4f3455a2bf930" CVE_PRODUCT = "python-ecdsa_project:python-ecdsa tlsfuzzer:ecdsa" @@ -23,7 +24,6 @@ do_install_ptest:append () { RDEPENDS:${PN} += " \ python3-gmpy2 \ python3-json \ - python3-six \ " do_install:append() { From patchwork Mon Sep 21 11:54:42 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98806 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F82EC982F8 for ; Mon, 21 Sep 2026 11:56:09 +0000 (UTC) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.47170.1789991767303996563 for ; Mon, 21 Sep 2026 04:56:07 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=Kzgezqva; spf=pass (domain: t-online.de, ip: 194.25.134.84, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout09.t-online.de (Postfix) with SMTP id C12E438176 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc9-04X1z30; Mon, 21 Sep 2026 13:55:17 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 06/24] python3-jsonpath-rw: drop the six dependency Date: Mon, 21 Sep 2026 13:54:42 +0200 Message-ID: <20260921115500.53770-6-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991717-31FF8A93-01C6FF64/0/0 CLEAN NORMAL X-TOI-MSGID: 16b20362-f3ef-4c02-ab45-8e1f10bf8b57 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=B66vyIplCevHJDXSRMl04KW2wmb7qtkI3NIbz2vH0XE=; h=From:To:Subject:Date:In-Reply-To:References; b=KzgezqvaH+fs9f4EJ2pX/qsQaf+lqS3VbhXj3NadY9jK2e5JMY62Z/a7DK7uAbPi0 No9ZFyHA9PwyfcJ4EG1fLakhRfLSv5nXZPqdm7XZKvHTyxhHqobt/+hVw93EEFqIdd pMSfJwZ2KW81YPcnT2byd0J5oYMsFVgcqKgjRQf9d9GNgWSQfDCC+hqbpV8r0ykXSg 1G6iT1ToEVpORuMeAcICm+g3pWnCzqwkgW1kuW1a+1p7IvJV/+e1mrJN3M1oW7AXPB u9MpNDLXUk5n/kn4PytIYHef20xZXQph8C+D9klaWGaYiy95KHFsjsxwmNL0hpKZjT nxEJgo9yLV4yg== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:09 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130145 Patch jsonpath-rw to use int, str and range instead of six.integer_types, six.string_types and six.moves.xrange, and drop the runtime dependency. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 58 +++++++++++++++++++ .../python/python3-jsonpath-rw_1.4.0.bb | 2 +- 2 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-jsonpath-rw/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-jsonpath-rw/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-jsonpath-rw/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..735fe26140 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-jsonpath-rw/0001-drop-the-six-dependency.patch @@ -0,0 +1,58 @@ +From a12efc7d5ede4fb2404ea1e4edeba03c9225ab4e Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:22:53 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and jsonpath-rw does not need it on +Python 3: six.integer_types and six.string_types are int and str, and +six.moves.xrange is range. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + jsonpath_rw/jsonpath.py | 6 ++---- + setup.py | 2 +- + 2 files changed, 3 insertions(+), 5 deletions(-) + +diff --git a/jsonpath_rw/jsonpath.py b/jsonpath_rw/jsonpath.py +index 3c491d0..4703fae 100644 +--- a/jsonpath_rw/jsonpath.py ++++ b/jsonpath_rw/jsonpath.py +@@ -1,7 +1,5 @@ + from __future__ import unicode_literals, print_function, absolute_import, division, generators, nested_scopes + import logging +-import six +-from six.moves import xrange + from itertools import * + + logger = logging.getLogger(__name__) +@@ -485,13 +483,13 @@ class Slice(JSONPath): + + # Here's the hack. If it is a dictionary or some kind of constant, + # put it in a single-element list +- if (isinstance(datum.value, dict) or isinstance(datum.value, six.integer_types) or isinstance(datum.value, six.string_types)): ++ if (isinstance(datum.value, dict) or isinstance(datum.value, int) or isinstance(datum.value, str)): + return self.find(DatumInContext([datum.value], path=datum.path, context=datum.context)) + + # Some iterators do not support slicing but we can still + # at least work for '*' + if self.start == None and self.end == None and self.step == None: +- return [DatumInContext(datum.value[i], path=Index(i), context=datum) for i in xrange(0, len(datum.value))] ++ return [DatumInContext(datum.value[i], path=Index(i), context=datum) for i in range(0, len(datum.value))] + else: + return [DatumInContext(datum.value[i], path=Index(i), context=datum) for i in range(0, len(datum.value))[self.start:self.end:self.step]] + +diff --git a/setup.py b/setup.py +index 8108124..4b2dfb9 100644 +--- a/setup.py ++++ b/setup.py +@@ -18,7 +18,7 @@ setuptools.setup( + 'console_scripts': ['jsonpath.py = jsonpath_rw.bin.jsonpath:entry_point'], + }, + test_suite = 'tests', +- install_requires = [ 'ply', 'decorator', 'six' ], ++ install_requires = [ 'ply', 'decorator' ], + classifiers = [ + 'Development Status :: 5 - Production/Stable', + 'Intended Audience :: Developers', diff --git a/meta-python/recipes-devtools/python/python3-jsonpath-rw_1.4.0.bb b/meta-python/recipes-devtools/python/python3-jsonpath-rw_1.4.0.bb index 4cc39a286a..8d846ab720 100644 --- a/meta-python/recipes-devtools/python/python3-jsonpath-rw_1.4.0.bb +++ b/meta-python/recipes-devtools/python/python3-jsonpath-rw_1.4.0.bb @@ -4,6 +4,7 @@ SECTION = "devel/python" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://README.rst;beginline=198;endline=215;md5=2866908485c18dc999b6c8dc608563ec" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "05c471281c45ae113f6103d1268ec7a4831a2e96aa80de45edc89b11fac4fbec" inherit pypi setuptools3 @@ -12,5 +13,4 @@ RDEPENDS:${PN} += " \ python3-decorator \ python3-logging \ python3-ply \ - python3-six \ " From patchwork Mon Sep 21 11:54:43 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98808 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9E071C982FB for ; Mon, 21 Sep 2026 11:56:10 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47393.1789991766889489263 for ; Mon, 21 Sep 2026 04:56:07 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=n2A1RQPG; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id C36181C3F9 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc9-04X1z40; Mon, 21 Sep 2026 13:55:17 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 07/24] python3-nocasedict: drop the six dependency Date: Mon, 21 Sep 2026 13:54:43 +0200 Message-ID: <20260921115500.53770-7-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991717-E2FFAA93-72C58D94/0/0 CLEAN NORMAL X-TOI-MSGID: 96e106e9-a205-4a17-b8d8-5389f477304b DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=TfLiZg4YhuXp3SKuoZ13yBemn5jyeBlzdfte9my/thM=; h=From:To:Subject:Date:In-Reply-To:References; b=n2A1RQPGawgxAo5rE7yOoJWCU+UI+hqQdUVjtm0enj9Y4hcoGtz8ql9fUVPulMmCP ovGQv78Gv/y/MOdjfPxKsGtFFr5v+7k8oE5dJhxG4h+fVBFSrvmaS9CqCMERYokeTT kHsAoyROvCL3vX+Kekg//ncsVuHpBYKOI9JBFWgcvoiBsdFGGDyTKjZJSeDvzwsTKz RcaS5lXu4pTbPvMlLC/LH1GkBnziZybDWfsyA84ttOmaewWT0IysClsvcT5r9gZjaE ka6kcPXjTKk479G41R3Zuti6PfYuoW3S0DENpy7S84GPMUbmf2f/qAQ6U4D8McHIVj VWyEjZLk1DgXg== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:10 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130142 nocasedict has not imported six since the 2.x series; the runtime dependency is stale. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../recipes-devtools/python/python3-nocasedict_2.2.1.bb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/meta-python/recipes-devtools/python/python3-nocasedict_2.2.1.bb b/meta-python/recipes-devtools/python/python3-nocasedict_2.2.1.bb index 027b61c8b3..5a57b8c651 100644 --- a/meta-python/recipes-devtools/python/python3-nocasedict_2.2.1.bb +++ b/meta-python/recipes-devtools/python/python3-nocasedict_2.2.1.bb @@ -13,7 +13,3 @@ DEPENDS += " \ python3-setuptools-scm-native \ python3-toml-native \ " - -RDEPENDS:${PN} += " \ - python3-six \ -" From patchwork Mon Sep 21 11:54:44 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98803 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C0E7C982F9 for ; Mon, 21 Sep 2026 11:56:09 +0000 (UTC) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.47171.1789991767341817899 for ; Mon, 21 Sep 2026 04:56:07 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=E6vydRP8; spf=pass (domain: t-online.de, ip: 194.25.134.84, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout09.t-online.de (Postfix) with SMTP id CEDFB38179 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc9-04X1z50; Mon, 21 Sep 2026 13:55:17 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 08/24] python3-nocaselist: drop the six dependency Date: Mon, 21 Sep 2026 13:54:44 +0200 Message-ID: <20260921115500.53770-8-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991717-057F9A93-87766C1D/0/0 CLEAN NORMAL X-TOI-MSGID: 60cf0903-a463-4b66-b1ab-d48f1c547186 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=3fbRnCeFBI7uQ1CJaW8p8IgiCfS1xoG44Ff0oR16/Ns=; h=From:To:Subject:Date:In-Reply-To:References; b=E6vydRP8TPwFjH5NOHfKKBOtqVG1emgqgSJHemtXSbZuAo+ism7dQ9rl2VycQ/eSs k7D5M86ySUjTluIyPqaUdQXjQX6eyJi1bPgnS0JzR7qxGTI9zgNji9LlvzfC/qgcHi r1Jy4R8rCjj5GrrrmUUpqCCiiqMbn14HvcWkZ+jSvZwfFYin3ERRacuaZsMgrGoFcj iRAvQOUX0XjGmC9efYvzmaa7FvWqEqRgHA3O6L/BazxUPzk/ccAIrtV4w6sEHuAA8N 8z8YaEBR1D8RF///nYUlTVf0uorZ0xy46kiq04XNAKWgdJT6bqJ704b2LCK3OeyvEG B0ydctptjRMEQ== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:09 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130146 nocaselist has not imported six since the 2.x series; the runtime dependency is stale. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../recipes-devtools/python/python3-nocaselist_2.2.0.bb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/meta-python/recipes-devtools/python/python3-nocaselist_2.2.0.bb b/meta-python/recipes-devtools/python/python3-nocaselist_2.2.0.bb index 038be6c73c..38d941d9be 100644 --- a/meta-python/recipes-devtools/python/python3-nocaselist_2.2.0.bb +++ b/meta-python/recipes-devtools/python/python3-nocaselist_2.2.0.bb @@ -13,7 +13,3 @@ DEPENDS += " \ python3-setuptools-scm-native \ python3-toml-native \ " - -RDEPENDS:${PN} += " \ - python3-six \ -" From patchwork Mon Sep 21 11:54:45 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98807 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A893C982FA for ; Mon, 21 Sep 2026 11:56:09 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47395.1789991767170328533 for ; Mon, 21 Sep 2026 04:56:07 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=ipdFbnq0; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id D0CA81C40E for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc9-04X1z60; Mon, 21 Sep 2026 13:55:17 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 09/24] python3-parse-type: drop the six dependency Date: Mon, 21 Sep 2026 13:54:45 +0200 Message-ID: <20260921115500.53770-9-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991717-7E7F3A93-752BD31F/0/0 CLEAN NORMAL X-TOI-MSGID: 5207fd5b-1de0-4423-82d8-5a12762f81c9 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=dDftDJ1I4YJvoCd4Melj0THjO1m9AFeeBZ5FxPoDzKE=; h=From:To:Subject:Date:In-Reply-To:References; b=ipdFbnq0zfJyA7umjiQDljHcHQKzO2Ta0Ut4pCEumkuduh2KuOSrkZiiMXR2Ofz3y InpLs7fPala/GLp0/PRdbVRmEgwDhYcZ+HiCLYzR1uMNEOx8sQmFXqXFu1ruEaJmYA yt/t5yJoKstK+WSb5MmEwtckMwxk3RjAmU3WXhIo8DD1rr4AwlHEpb7XMq4ILS11mH WaWdxXFn+SC0/qnIQA2zBMmH02aZftKiHcVwHrCL0ScNCnwdZp4iGoh7OZPZhMoaLC Kusu81hvnjvs0GOoQc8TPYh6Cev3VlbQoR+lfeig65W0CmM8bdV+hy3Lrcob+62JbC 9WZNRYZlBX3rw== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:09 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130144 Patch parse_type to use str instead of six.string_types and drop six from the requirement lists and from the ptest dependencies. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 107 ++++++++++++++++++ .../python/python3-parse-type_0.6.6.bb | 2 +- 2 files changed, 108 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-parse-type/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-parse-type/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-parse-type/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..7b5f5683c1 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-parse-type/0001-drop-the-six-dependency.patch @@ -0,0 +1,107 @@ +From acd176d3ada46ced050ed401c9d3f38a1ef7836d Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:24:27 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and parse_type does not need it on +Python 3: six.string_types is str. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + parse_type/cardinality_field.py | 3 +-- + parse_type/parse_util.py | 3 +-- + py.requirements/basic.txt | 1 - + pyproject.toml | 1 - + setup.py | 1 - + tasks/py.requirements.txt | 1 - + 6 files changed, 2 insertions(+), 8 deletions(-) + +diff --git a/parse_type/cardinality_field.py b/parse_type/cardinality_field.py +index 4e892ed..8ae89bf 100644 +--- a/parse_type/cardinality_field.py ++++ b/parse_type/cardinality_field.py +@@ -9,7 +9,6 @@ A cardinality field is a type suffix for parse format expression, ala: + """ + + from __future__ import absolute_import +-import six + from parse_type.cardinality import Cardinality, TypeBuilder + + +@@ -115,7 +114,7 @@ class CardinalityFieldTypeBuilder(object): + :raises: ValueError, if type_name does not end with CardinalityField + :raises: MissingTypeError, if type_converter is missing in type_dict + """ +- assert isinstance(type_name, six.string_types) ++ assert isinstance(type_name, str) + if not CardinalityField.matches_type(type_name): + message = "type_name='%s' has no CardinalityField" % type_name + raise ValueError(message) +diff --git a/parse_type/parse_util.py b/parse_type/parse_util.py +index 0e5ee73..73190c6 100644 +--- a/parse_type/parse_util.py ++++ b/parse_type/parse_util.py +@@ -7,7 +7,6 @@ Provides generic utility classes for the :class:`parse.Parser` class. + from __future__ import absolute_import + from collections import namedtuple + import parse +-import six + + + # -- HELPER-CLASS: For format part in a Field. +@@ -66,7 +65,7 @@ class Field(object): + format1 = self.format or "" + format2 = other.format or "" + return (self.name == other.name) and (format1 == format2) +- elif isinstance(other, six.string_types): ++ elif isinstance(other, str): + return str(self) == other + else: + raise ValueError(other) +diff --git a/py.requirements/basic.txt b/py.requirements/basic.txt +index b9735ab..c3c52ee 100644 +--- a/py.requirements/basic.txt ++++ b/py.requirements/basic.txt +@@ -11,4 +11,3 @@ + parse >= 1.18.0; python_version >= '3.0' + parse >= 1.13.1; python_version <= '2.7' + enum34; python_version < '3.4' +-six >= 1.15 +diff --git a/pyproject.toml b/pyproject.toml +index 7ca4407..e377bf0 100644 +--- a/pyproject.toml ++++ b/pyproject.toml +@@ -52,7 +52,6 @@ dependencies = [ + "parse >= 1.18.0; python_version >= '3.0'", + "parse >= 1.13.1; python_version <= '2.7'", + "enum34; python_version < '3.4'", +- "six >= 1.15", + ] + + +diff --git a/setup.py b/setup.py +index 02ef727..9ea9ab4 100644 +--- a/setup.py ++++ b/setup.py +@@ -101,7 +101,6 @@ setup( + "parse >= 1.18.0; python_version >= '3.0'", + "parse >= 1.13.1; python_version <= '2.7'", + "enum34; python_version < '3.4'", +- "six >= 1.15", + ], + tests_require=[ + "pytest < 5.0; python_version < '3.0'", # >= 4.2 +diff --git a/tasks/py.requirements.txt b/tasks/py.requirements.txt +index e063e44..fb95307 100644 +--- a/tasks/py.requirements.txt ++++ b/tasks/py.requirements.txt +@@ -11,7 +11,6 @@ + invoke >=1.7.0,<2.0; python_version < '3.6' + invoke >=1.7.0; python_version >= '3.6' + pycmd +-six >= 1.15.0 + + # -- HINT, was RENAMED: path.py => path (for python3) + path.py >=11.5.0,<13.0; python_version < '3.5' diff --git a/meta-python/recipes-devtools/python/python3-parse-type_0.6.6.bb b/meta-python/recipes-devtools/python/python3-parse-type_0.6.6.bb index 979e25b47b..43ae9bd1cf 100644 --- a/meta-python/recipes-devtools/python/python3-parse-type_0.6.6.bb +++ b/meta-python/recipes-devtools/python/python3-parse-type_0.6.6.bb @@ -6,6 +6,7 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=2e469278ace89c246d52505acc39c3da" SRC_URI[sha256sum] = "513a3784104839770d690e04339a8b4d33439fcd5dd99f2e4580f9fc1097bfb2" SRC_URI += " \ file://run-ptest \ + file://0001-drop-the-six-dependency.patch \ " PYPI_PACKAGE = "parse_type" @@ -24,6 +25,5 @@ do_install_ptest() { RDEPENDS:${PN} += "python3-parse" RDEPENDS:${PN}-ptest += " \ python3-pytest \ - python3-six \ python3-unittest-automake-output \ " From patchwork Mon Sep 21 11:54:46 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98809 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id EA57BC982FF for ; Mon, 21 Sep 2026 11:56:10 +0000 (UTC) Received: from mailout09.t-online.de (mailout09.t-online.de [194.25.134.84]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47396.1789991767350884526 for ; Mon, 21 Sep 2026 04:56:07 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=a+RV8CKg; spf=pass (domain: t-online.de, ip: 194.25.134.84, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout09.t-online.de (Postfix) with SMTP id DD4343817C for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc9-04X1z70; Mon, 21 Sep 2026 13:55:17 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 10/24] python3-pathlib2: remove the recipe Date: Mon, 21 Sep 2026 13:54:46 +0200 Message-ID: <20260921115500.53770-10-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991717-EBFF4A93-D1C34737/0/0 CLEAN NORMAL X-TOI-MSGID: 3eaee751-6552-499c-bbea-f8288f01a5fe DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=oRCImSXKw5x9NgLNYREEIoMoFmw5+vMD2sL7/Bm5x5w=; h=From:To:Subject:Date:In-Reply-To:References; b=a+RV8CKgzYEQC4cC2SiMkKtSMjM1wcYxlUAvHpeVPkm1hbdtahWKPDuQx61usFO26 FC92eZL6GocQbLHfuOaRoMz8iHo00wObWwU1i3zB7O307Pgf9eSzO47oj9IkDyv+F1 cmlx0vbH+5G1kYAYMK3eQMoHwBgF6j9M+0a62hRpTsOhOUSvsYStxIG5rQVRU4u8pV 25JYbSV+fYw39SYWlXdeuMAC1yDhX1MP8wh97F8z3qmjDy98Mu6PRzR1nXGquh/mrX haR/4zL5RnmHBa61z1DZGAbWBVVowmiaqeenhX2avPNNWYaSwpZZNCagkba2yj/ZB4 rvSjnIhD/Fifw== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:10 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130147 pathlib2 is a backport of the Python 3 pathlib module for Python 2 and early Python 3, and it pulls in six. Nothing in the layers depends on it any more, so drop it rather than carry a Python 2 compatibility package. Verified that no recipe references python3-pathlib2. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../python/python3-pathlib2_2.3.7.bb | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 meta-python/recipes-devtools/python/python3-pathlib2_2.3.7.bb diff --git a/meta-python/recipes-devtools/python/python3-pathlib2_2.3.7.bb b/meta-python/recipes-devtools/python/python3-pathlib2_2.3.7.bb deleted file mode 100644 index d4de40893a..0000000000 --- a/meta-python/recipes-devtools/python/python3-pathlib2_2.3.7.bb +++ /dev/null @@ -1,12 +0,0 @@ -SUMMARY = "Object-oriented filesystem paths" -HOMEPAGE = "https://github.com/mcmtroffaes/pathlib2" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=2dc08586cce3ab91bfa091b655c0e440" - -SRC_URI[sha256sum] = "7a4329d67beff9a712e1d3ae147e4e3e108b0bfd284ffdea03a635126c76b3c0" - -inherit pypi setuptools3 - -RDEPENDS:${PN} += "python3-six python3-ctypes" - -BBCLASSEXTEND = "native nativesdk" From patchwork Mon Sep 21 11:54:47 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98810 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8A49DC982ED for ; Mon, 21 Sep 2026 11:56:11 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47394.1789991767149283276 for ; Mon, 21 Sep 2026 04:56:07 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=QVn4rC5W; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id DE7591C411 for ; Mon, 21 Sep 2026 13:55:21 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8cc9-04X1z80; Mon, 21 Sep 2026 13:55:17 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 11/24] python3-pymemcache: drop the six dependency Date: Mon, 21 Sep 2026 13:54:47 +0200 Message-ID: <20260921115500.53770-11-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-EA7F3A93-2682C86E/0/0 CLEAN NORMAL X-TOI-MSGID: 87053fd7-b3e3-48b3-9944-c12b57b144ff DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991721; i=f_l_k@t-online.de; bh=BEMI7UUqvcPLzzehALEg/k5o6FKMeKxTPBO4hMJIdRw=; h=From:To:Subject:Date:In-Reply-To:References; b=QVn4rC5WXQQpLOZFdOEP5NY6PJ1QS3vug+sZ1hoVQTcTcmtJG7FZeoaXc+B+cUg8h LYNrV8588/TH1eqTK/ie3tv8s0LE9sicM9HcWHy5l/syIyiYwd12nziyPz17xtxWAN 9mzMkMD/4X/rP0kPx7t/tVB8043zitRN+bug2KMedCuluW1hR9REN90X+VuMFzLs/H Pj3cmZd4VIc4NSN4jsgVQ+YsiAEtW3yEhVpYYnDzQORg/hD3wP/5wU5ATunm0pXzTf iDV/+Ke5gMGb87En5EN+KLM9rn/NiNLsDOkviARzjloJ2WbKLVUMvehOD/B3RouTkf DRqcGYFJ98TVQ== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:11 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130143 pymemcache no longer uses six at build time; the native dependency is stale. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- meta-python/recipes-devtools/python/python3-pymemcache_4.0.0.bb | 1 - 1 file changed, 1 deletion(-) diff --git a/meta-python/recipes-devtools/python/python3-pymemcache_4.0.0.bb b/meta-python/recipes-devtools/python/python3-pymemcache_4.0.0.bb index f47711c6b5..9ceeaef95b 100644 --- a/meta-python/recipes-devtools/python/python3-pymemcache_4.0.0.bb +++ b/meta-python/recipes-devtools/python/python3-pymemcache_4.0.0.bb @@ -11,7 +11,6 @@ inherit pypi setuptools3 DEPENDS += " \ python3-setuptools-scm-native \ - python3-six-native \ " RDEPENDS:${PN} += "\ From patchwork Mon Sep 21 11:54:48 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98795 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4EEE7C982ED for ; Mon, 21 Sep 2026 11:55:27 +0000 (UTC) Received: from mailout05.t-online.de (mailout05.t-online.de [194.25.134.82]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.47148.1789991724365793941 for ; Mon, 21 Sep 2026 04:55:25 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=sV1EtVD5; spf=pass (domain: t-online.de, ip: 194.25.134.82, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout05.t-online.de (Postfix) with SMTP id 0F8C67D2 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccA-04X1z90; Mon, 21 Sep 2026 13:55:18 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 12/24] python3-pyperf: drop the six dependency Date: Mon, 21 Sep 2026 13:54:48 +0200 Message-ID: <20260921115500.53770-12-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-8DFF8A93-1F606CF1/0/0 CLEAN NORMAL X-TOI-MSGID: 78601f73-7a79-442b-92d3-5b3943d9bd61 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=9TpKeGbE76J8PZ5QpcF9Bs0dvGqIM3VQ3MOdRwhnrys=; h=From:To:Subject:Date:In-Reply-To:References; b=sV1EtVD53RCgI8RYTYxVFEB5eNeWOk8wPoGe4s9BhyBGb7L9W4LCCoLywpnMclcAb drm9YXNREVHegxiD+Ag0TWltFWGO88gdovneiuDnNbDPBMXCNdc1gcogoQHzj3/FiC ISmzewB8X4KhBO6HDgoE9V0Rva85axMfeicaKshqPwmiK6wOar6lOHu2Pzp6NN+x71 wqYsq6gEW6l15DbRYbyTvZd7gATvLslZEaOhRi8dQL2bOm1tVwbOQV3DU6+Afv4oPW 3I/OGVQkW7JZYGcG9XKexsEsfKS7KLsvoXr0dZiUR0bKQhFIDqO1JyXv09S5BpHTxx +j70xdK4Qxirw== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:55:27 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130133 pyperf no longer uses six at build time; the native dependency is stale. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- meta-python/recipes-devtools/python/python3-pyperf_2.10.0.bb | 2 -- 1 file changed, 2 deletions(-) diff --git a/meta-python/recipes-devtools/python/python3-pyperf_2.10.0.bb b/meta-python/recipes-devtools/python/python3-pyperf_2.10.0.bb index 39b8ee8470..5566f314de 100644 --- a/meta-python/recipes-devtools/python/python3-pyperf_2.10.0.bb +++ b/meta-python/recipes-devtools/python/python3-pyperf_2.10.0.bb @@ -15,8 +15,6 @@ LIC_FILES_CHKSUM = "file://COPYING;md5=78bc2e6e87c8c61272937b879e6dc2f8" SRC_URI[sha256sum] = "dd93ccfda79214725293e95f1fa6e00cb4a64adcf1326039486d4e1f91caaa62" -DEPENDS += "python3-six-native" - inherit pypi python_setuptools_build_meta RDEPENDS:${PN} += "python3-misc python3-statistics" From patchwork Mon Sep 21 11:54:49 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98805 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 86ACFC982EE for ; Mon, 21 Sep 2026 11:56:08 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47397.1789991767651272520 for ; Mon, 21 Sep 2026 04:56:07 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=PQKo5meW; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id 154471C418 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccA-04X1zA0; Mon, 21 Sep 2026 13:55:18 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 13/24] python3-pyu2f: drop the six dependency Date: Mon, 21 Sep 2026 13:54:49 +0200 Message-ID: <20260921115500.53770-13-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-50FF6A93-EDF915DE/0/0 CLEAN NORMAL X-TOI-MSGID: 1db4728c-ca3d-43b2-a293-3007290d088c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=ebhMUWJA2cCPyVwaDjuLKrA9gYE1sjf+gy9JZixTNbQ=; h=From:To:Subject:Date:In-Reply-To:References; b=PQKo5meWaP8GpiuSxamSaB5yW62N8CJtvyhFaIhXe9d6nrd4ERCNUyKBoIludgyDy 4wKTrRqMJx26wGh9lv/VyyyFM+/gfHmk6ZuK6ixBwJbU9H8mp/c9vvZgYv+ZW6/04Q THJ8TVsCkaF9b2WLqrxqBn36gmTz/M39XQ3B5VTRBp29PFM+2N/488UKU/PUKFGAXb 8UjvH5Opzm/JX0bFf0g+o8hfM8wNFK8n5U1RW9AZ0jIdXMQhgOeSHh9iVwJayPopn+ nH5h0anKaRJROojN8TUWbwpUoXOJx+ovYHuwzu9hp3eM+sZ70Nw56vlEdntOGqPaTX 0BOQMAQ2zpvQA== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:08 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130148 Patch pyu2f to use queue, range and the input builtin instead of the six.moves aliases, and drop the runtime dependency. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 70 +++++++++++++++++++ .../python/python3-pyu2f_0.1.5.bb | 2 +- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-pyu2f/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-pyu2f/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-pyu2f/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..87a6ab9fa0 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-pyu2f/0001-drop-the-six-dependency.patch @@ -0,0 +1,70 @@ +From eb27c7a2a85f2ac21ea9fa0d30979b04fdb0f671 Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:23:08 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and pyu2f does not need it on +Python 3: six.moves.queue and six.moves.range are queue and range, and +six.moves.input is input. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + pyu2f/convenience/localauthenticator.py | 3 +-- + pyu2f/hid/macos.py | 3 +-- + setup.py | 3 --- + 3 files changed, 2 insertions(+), 7 deletions(-) + +diff --git a/pyu2f/convenience/localauthenticator.py b/pyu2f/convenience/localauthenticator.py +index b03fa57..2b6b22a 100644 +--- a/pyu2f/convenience/localauthenticator.py ++++ b/pyu2f/convenience/localauthenticator.py +@@ -13,7 +13,6 @@ + # limitations under the License. + + """Convenience class for U2F signing with local security keys.""" +-import six + import base64 + import sys + +@@ -36,7 +35,7 @@ class LocalAuthenticator(baseauthenticator.BaseAuthenticator): + device = u2f.GetLocalU2FInterface(origin=self.origin) + except errors.NoDeviceFoundError: + print_callback('Please insert your security key and press enter...') +- six.moves.input() ++ input() + device = u2f.GetLocalU2FInterface(origin=self.origin) + + print_callback('Please touch your security key.\n') +diff --git a/pyu2f/hid/macos.py b/pyu2f/hid/macos.py +index 905bce2..a2ed2e6 100644 +--- a/pyu2f/hid/macos.py ++++ b/pyu2f/hid/macos.py +@@ -13,11 +13,10 @@ + # limitations under the License. + + """Implements HID device interface on MacOS using IOKit and HIDManager.""" +-from six.moves import queue +-from six.moves import range + import ctypes + import ctypes.util + import logging ++import queue + import sys + import threading + +diff --git a/setup.py b/setup.py +index 663706b..184be89 100644 +--- a/setup.py ++++ b/setup.py +@@ -36,9 +36,6 @@ setuptools.setup( + author_email='pyu2f-team@google.com', + # Contained modules and scripts. + packages=setuptools.find_packages(exclude=["pyu2f.tests", "pyu2f.tests.*"]), +- install_requires=[ +- 'six', +- ], + tests_require=[ + 'unittest2>=0.5.1', + 'pyfakefs>=2.4', diff --git a/meta-python/recipes-devtools/python/python3-pyu2f_0.1.5.bb b/meta-python/recipes-devtools/python/python3-pyu2f_0.1.5.bb index 5a2899e132..083fed68f6 100644 --- a/meta-python/recipes-devtools/python/python3-pyu2f_0.1.5.bb +++ b/meta-python/recipes-devtools/python/python3-pyu2f_0.1.5.bb @@ -3,6 +3,7 @@ HOMEPAGE = "https://github.com/google/pyu2f/" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "a3caa3a11842fc7d5746376f37195e6af5f17c0a15737538bb1cebf656fb306b" inherit pypi setuptools3 @@ -16,5 +17,4 @@ RDEPENDS:${PN} += " \ python3-logging \ python3-netclient \ python3-threading \ - python3-six \ " From patchwork Mon Sep 21 11:54:50 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98796 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3D1CBC982E1 for ; Mon, 21 Sep 2026 11:55:27 +0000 (UTC) Received: from mailout05.t-online.de (mailout05.t-online.de [194.25.134.82]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47379.1789991724365812356 for ; Mon, 21 Sep 2026 04:55:24 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=Hj9mzxPM; spf=pass (domain: t-online.de, ip: 194.25.134.82, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout05.t-online.de (Postfix) with SMTP id 1E0A1897 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccA-04X1zB0; Mon, 21 Sep 2026 13:55:18 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 14/24] python3-pywbem: drop the six dependency Date: Mon, 21 Sep 2026 13:54:50 +0200 Message-ID: <20260921115500.53770-14-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-8EFFAA93-439B79CF/0/0 CLEAN NORMAL X-TOI-MSGID: c2f63c27-2df3-4d78-8cba-06d479b58d84 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=b+e+EYs0z2lVb7P0Orx8D/AktJ64ibJSuwuVuo7EOyA=; h=From:To:Subject:Date:In-Reply-To:References; b=Hj9mzxPMMBYJj/ZmylnJkQl2uVb4ATjgBgn11ffogXkq5A0QS6lH4tAp9Qwd6Yw8P hEXXoDabmTPGEKOjzoJHForIlCAu/aZXDweX5iup0WPCXQzuHWqhQ+Q8PR45aTzmj+ hw0CmYemaAydvt5PLx+kB2szYbWKuU6W6ZIBd65+IzTAFnlS1jIsrZgG4X3U8Klf1L j1uVC8iGjGtQBVZlrPg87EE0Ou46oFhkI4g4bYrbPlLAhYzFsknvqSCEa08nah5RsC tZGqRqLw1Ta3xvgGU+zIe2PokJQfu9jRS6u/gYUHhVGMBSI1tWLM7AabbSjLrTDKHK XbPOEPElSAzOw== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:55:27 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130131 pywbem has not used six since the 1.x series; both the native build dependency and the runtime dependency are stale. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- meta-python/recipes-extended/pywbem/python3-pywbem_1.9.0.bb | 2 -- 1 file changed, 2 deletions(-) diff --git a/meta-python/recipes-extended/pywbem/python3-pywbem_1.9.0.bb b/meta-python/recipes-extended/pywbem/python3-pywbem_1.9.0.bb index c2fe5f9738..58c4ebbbc4 100644 --- a/meta-python/recipes-extended/pywbem/python3-pywbem_1.9.0.bb +++ b/meta-python/recipes-extended/pywbem/python3-pywbem_1.9.0.bb @@ -23,7 +23,6 @@ inherit pypi python_setuptools_build_meta update-alternatives DEPENDS += " \ python3-ply-native \ python3-pyyaml-native \ - python3-six-native \ python3-wheel-native \ python3-setuptools-scm-native \ " @@ -38,7 +37,6 @@ RDEPENDS:${PN} += "\ python3-ply \ python3-pyyaml \ python3-requests \ - python3-six \ python3-stringold \ python3-threading \ python3-unixadmin \ From patchwork Mon Sep 21 11:54:51 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98802 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6E2CBC982ED for ; Mon, 21 Sep 2026 11:56:08 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47398.1789991767842445109 for ; Mon, 21 Sep 2026 04:56:08 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=QVlHxWky; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id 22EDE1C423 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccA-04X1zC0; Mon, 21 Sep 2026 13:55:18 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 15/24] python3-pywbemtools: upgrade 1.3.1 -> 1.4.1 Date: Mon, 21 Sep 2026 13:54:51 +0200 Message-ID: <20260921115500.53770-15-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-8AFFAA93-0D505878/0/0 CLEAN NORMAL X-TOI-MSGID: 2be92ef6-16db-42b7-8358-94dbbbf2c17e DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=W7H4tyEaisCqTDyiRz8PCZCNVGVKXY++x9mCYVLl0zM=; h=From:To:Subject:Date:In-Reply-To:References; b=QVlHxWkyDQX1OpKtVEi7NThLellg9NxyeIWy0+9YF5KRrHPBeBXE9/YSixVjmCCyz 5rFK0hxMbjRzKCjJfmCz3uJScfnj4hsdmHAKjNEwFIbFgQOm5W/Ptkagmuoro+SfqR vpQ57VoTwT36uo2ir1NY+KPGF3F4/tusigMJlnTtGZbp6DeqwFfbKQ8DyF36mAqCkN Gu4yA6QO4F+I1X7Ch/D6mlvZ68hKcRXoSygnXDuxDH1oRTq7KG1tzBv6e52JsS0GMS Uw8nVEF+IJOUj37Pw2E+VPDC4By3va+B03eCtoye7ZzwWF9XguW/XywzLnSLjJvoDR dJ3McEHjMPZPQ== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:08 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130149 The new release drops six, pydicti and custom-inherit and adds toposort, psutil, pyparsing and urllib3. It builds with the setuptools build backend and needs setuptools-scm and wheel at build time. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- ...ols_1.3.1.bb => python3-pywbemtools_1.4.1.bb} | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) rename meta-python/recipes-extended/pywbemtools/{python3-pywbemtools_1.3.1.bb => python3-pywbemtools_1.4.1.bb} (69%) diff --git a/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.3.1.bb b/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.4.1.bb similarity index 69% rename from meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.3.1.bb rename to meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.4.1.bb index 83156cfddf..da5205711d 100644 --- a/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.3.1.bb +++ b/meta-python/recipes-extended/pywbemtools/python3-pywbemtools_1.4.1.bb @@ -4,14 +4,18 @@ HOMEPAGE = "https://pywbemtools.readthedocs.io/en/stable/" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=e23fadd6ceef8c618fc1c65191d846fa" -SRC_URI[sha256sum] = "7fb1c32e358d55c2c6966a071c8ecc0ca81de3d32944a67cc646c57b1a7a337a" +SRC_URI[sha256sum] = "537f848a90b3f40531984ec296387eaa1892905b5ed8d3fe7d6d4c737f25fce9" -inherit pypi setuptools3 +inherit pypi python_setuptools_build_meta + +DEPENDS += " \ + python3-setuptools-scm-native \ + python3-wheel-native \ +" RDEPENDS:${PN}:append:class-target = " \ python3-ply \ python3-pyyaml \ - python3-six \ python3-pywbem \ python3-click \ python3-requests \ @@ -24,9 +28,11 @@ RDEPENDS:${PN}:append:class-target = " \ python3-click-spinner \ python3-asciitree \ python3-tabulate \ - python3-pydicti \ python3-nocaselist \ - python3-custom-inherit \ + python3-toposort \ + python3-psutil \ + python3-pyparsing \ + python3-urllib3 \ " BBCLASSEXTEND = "native" From patchwork Mon Sep 21 11:54:52 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98797 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 2F7B3C982F8 for ; Mon, 21 Sep 2026 11:55:28 +0000 (UTC) Received: from mailout05.t-online.de (mailout05.t-online.de [194.25.134.82]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.47147.1789991724365655488 for ; Mon, 21 Sep 2026 04:55:25 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=tqoRazPD; spf=pass (domain: t-online.de, ip: 194.25.134.82, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout05.t-online.de (Postfix) with SMTP id 2CB668A4 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccA-04X1zD0; Mon, 21 Sep 2026 13:55:18 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 16/24] python3-qface: drop the six dependency Date: Mon, 21 Sep 2026 13:54:52 +0200 Message-ID: <20260921115500.53770-16-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-76FF2A93-E1A71EFF/0/0 CLEAN NORMAL X-TOI-MSGID: ae820fba-4605-4dc6-a417-7831b681de1c DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=/rNGXKGPirC+hmacpbWS8nQT520Nai/JgMaSe18wxMI=; h=From:To:Subject:Date:In-Reply-To:References; b=tqoRazPD8F7ssfiUYG76z0HTCu/yVokS38OsCLTiCuvq8EtkhMYmdsD6+rgOWcBY+ FO/JRPxetrXiyTOMLTmg6+Zd1oypsewi8Yki3iW5aYjW/FVz72zXTt82tsXjkb4TXq 1wEjpe3HE8yg07XTEoqnf22d8jhBQD4Wpf7OUOwfuC2457Z3L8cnvB2IJHdaHnhxpC vvtXAvOSWGTOtho64UGAkI1fzTSLQagBfaD9Muz2PkYbCSZVHXzCv5CTrEUjxTnigW QG9gnL87ExxqUN/NYroJV7QKZRNhuNMH4t9lwWJtriYX9co2rlyfZo1vkg1E9IH+Mg b2m2HLFYn/epA== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:55:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130134 qface declares six in install_requires but does not import it anywhere. Patch it out and drop the dependency from the recipe. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 27 +++++++++++++++++++ .../python/python3-qface_2.0.14.bb | 2 +- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-qface/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-qface/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-qface/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..e4722a021b --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-qface/0001-drop-the-six-dependency.patch @@ -0,0 +1,27 @@ +From 306a9a40b6056c9d07037282bec645ca393ed4b2 Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:31:21 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim; qface declares it in +install_requires but no longer imports it anywhere. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + setup.py | 1 - + 1 file changed, 1 deletion(-) + +diff --git a/setup.py b/setup.py +index 3dca1d3..d2734d3 100644 +--- a/setup.py ++++ b/setup.py +@@ -51,7 +51,6 @@ setup( + 'jinja2>=2.10.3', + 'pyyaml>=5.1', + 'watchdog>=1.0', +- 'six>=1.11.0', + 'coloredlogs>=10.0', + ], + extras_require={ diff --git a/meta-python/recipes-devtools/python/python3-qface_2.0.14.bb b/meta-python/recipes-devtools/python/python3-qface_2.0.14.bb index 9e78074e0e..a8a4083b23 100644 --- a/meta-python/recipes-devtools/python/python3-qface_2.0.14.bb +++ b/meta-python/recipes-devtools/python/python3-qface_2.0.14.bb @@ -2,6 +2,7 @@ SUMMARY = "A generator framework based on a common modern IDL" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://LICENSE;md5=eee61e10a40b0e3045ee5965bcd9a8b5" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "df31014fbe95b3d910d059ce1a8e827d57d234aca3a5c42094d6ad096fd8f39e" inherit pypi setuptools3 @@ -11,7 +12,6 @@ DEPS = "\ python3-click \ python3-pyyaml \ python3-pytest \ - python3-six \ python3-path \ python3-antlr4-runtime \ python3-watchdog \ From patchwork Mon Sep 21 11:54:53 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98817 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 206D3C982F9 for ; Mon, 21 Sep 2026 11:56:13 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47400.1789991769136100704 for ; Mon, 21 Sep 2026 04:56:09 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=DfI0kI8J; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id 309751C42D for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccA-04X1zE0; Mon, 21 Sep 2026 13:55:18 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 17/24] python3-rouge-score: drop the six dependency Date: Mon, 21 Sep 2026 13:54:53 +0200 Message-ID: <20260921115500.53770-17-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-6DFF8A93-BA26BDA4/0/0 CLEAN NORMAL X-TOI-MSGID: 0600519d-8fa7-4b6d-9c85-582515886718 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=L6Fy5KsFY55NlKQ7mKq056IQGAyravgWzIm7J2Q9sYE=; h=From:To:Subject:Date:In-Reply-To:References; b=DfI0kI8Jz2dkhpAAgvxWbVLzjmT4qLh0DxEDxU/VtNe44ip8KthxhIWEgFPgDnz87 MYt41BwVCHnWD9el4QT8d1irnf7+369+nnSKwmqNLCcd+8/n6VCc6r5MJG6Ebx0Vp2 gWVu7xxy3CzjRz2HDJJKsuvIWgcmTJAWMrt+culiTQZxsM9PrDvrB/AWfCAmYFmavi 3bWUIrghjM3/ybdb4jp7FmTxB5cH/thzGDAkVcA4AOcM81+H4FgFS0Gp7USj7u5nsJ gzr9mg4LRF4EP10yfTaccP62wWF2OMLK/O3TFi3ngAywtJLBUrw+gJwn202VD2D1Mw plETV6aG/1daA== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:13 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130151 Patch rouge-score to use the builtins and itertools.zip_longest instead of the six.moves aliases and the dict methods instead of six.iteritems and six.iterkeys. The six.ensure_str call sites are all passed str already. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 172 ++++++++++++++++++ .../python3-rouge-score_0.1.2.bb | 2 +- 2 files changed, 173 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python3-rouge-score/python3-rouge-score/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python3-rouge-score/python3-rouge-score/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python3-rouge-score/python3-rouge-score/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..5a255e8afe --- /dev/null +++ b/meta-python/recipes-devtools/python3-rouge-score/python3-rouge-score/0001-drop-the-six-dependency.patch @@ -0,0 +1,172 @@ +From a383dde2c5c37efb7c55e0a0a9a1a8c7fe56d543 Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:24:12 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and rouge-score does not need it on +Python 3: map, range and zip are builtins, zip_longest comes from +itertools, six.iteritems and six.iterkeys are the dict methods, and the +six.ensure_str call sites are all passed str already. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + rouge_score/io.py | 6 ++---- + rouge_score/rouge_scorer.py | 9 +++------ + rouge_score/scoring.py | 6 ++---- + rouge_score/scoring_test.py | 2 -- + rouge_score/tokenize.py | 5 ++--- + setup.py | 1 - + 6 files changed, 9 insertions(+), 20 deletions(-) + +diff --git a/rouge_score/io.py b/rouge_score/io.py +index ffd96ef..334b8bb 100644 +--- a/rouge_score/io.py ++++ b/rouge_score/io.py +@@ -19,11 +19,9 @@ from __future__ import division + from __future__ import print_function + + import glob ++from itertools import zip_longest + + from absl import logging +-import six +-from six.moves import zip +-from six.moves import zip_longest + + + +@@ -76,7 +74,7 @@ def _open(filepattern, mode="r"): + def _record_gen(filename, delimiter): + """Opens file and yields records separated by delimiter.""" + with _open(filename) as f: +- records = f.read().split(six.ensure_str(delimiter)) ++ records = f.read().split(delimiter) + if records[-1]: + # Need a final delimiter at end of file to be able to detect an empty last + # record. +diff --git a/rouge_score/rouge_scorer.py b/rouge_score/rouge_scorer.py +index 4c076bf..64bf73a 100644 +--- a/rouge_score/rouge_scorer.py ++++ b/rouge_score/rouge_scorer.py +@@ -39,9 +39,6 @@ import re + from absl import logging + import nltk + import numpy as np +-import six +-from six.moves import map +-from six.moves import range + from rouge_score import scoring + from rouge_score import tokenizers + +@@ -140,7 +137,7 @@ class RougeScorer(scoring.BaseScorer): + sents = nltk.sent_tokenize(text) + else: + # Assume sentences are separated by newline. +- sents = six.ensure_str(text).split("\n") ++ sents = text.split("\n") + sents = [x for x in sents if len(x)] + return sents + +@@ -151,7 +148,7 @@ class RougeScorer(scoring.BaseScorer): + + scores = _summary_level_lcs(target_tokens_list, + prediction_tokens_list) +- elif re.match(r"rouge[0-9]$", six.ensure_str(rouge_type)): ++ elif re.match(r"rouge[0-9]$", rouge_type): + # Rouge from n-grams. + n = int(rouge_type[5:]) + if n <= 0: +@@ -321,7 +318,7 @@ def _score_ngrams(target_ngrams, prediction_ngrams): + """ + + intersection_ngrams_count = 0 +- for ngram in six.iterkeys(target_ngrams): ++ for ngram in target_ngrams: + intersection_ngrams_count += min(target_ngrams[ngram], + prediction_ngrams[ngram]) + target_ngrams_count = sum(target_ngrams.values()) +diff --git a/rouge_score/scoring.py b/rouge_score/scoring.py +index d7d018c..d6f3e5b 100644 +--- a/rouge_score/scoring.py ++++ b/rouge_score/scoring.py +@@ -27,8 +27,6 @@ import collections + from typing import Dict + + import numpy as np +-import six +-from six.moves import range + + + class Score( +@@ -106,7 +104,7 @@ class BootstrapAggregator(object): + representing a score. + """ + +- for score_type, score in six.iteritems(scores): ++ for score_type, score in scores.items(): + self._scores[score_type].append(score) + + def aggregate(self): +@@ -117,7 +115,7 @@ class BootstrapAggregator(object): + """ + + result = {} +- for score_type, scores in six.iteritems(self._scores): ++ for score_type, scores in self._scores.items(): + # Stack scores into a 2-d matrix of (sample, measure). + score_matrix = np.vstack(tuple(scores)) + # Percentiles are returned as (interval, measure). +diff --git a/rouge_score/scoring_test.py b/rouge_score/scoring_test.py +index 4cb8083..4e6cb9e 100644 +--- a/rouge_score/scoring_test.py ++++ b/rouge_score/scoring_test.py +@@ -26,8 +26,6 @@ import os + + from absl.testing import absltest + import numpy as np +-from six.moves import range +-from six.moves import zip + from rouge_score import rouge_scorer + from rouge_score import scoring + from rouge_score import test_util +diff --git a/rouge_score/tokenize.py b/rouge_score/tokenize.py +index d22abae..61ca0d3 100644 +--- a/rouge_score/tokenize.py ++++ b/rouge_score/tokenize.py +@@ -19,7 +19,6 @@ from __future__ import division + from __future__ import print_function + + import re +-import six + + + # Pre-compile regexes that are use often +@@ -48,12 +47,12 @@ def tokenize(text, stemmer): + # Convert everything to lowercase. + text = text.lower() + # Replace any non-alpha-numeric characters with spaces. +- text = NON_ALPHANUM_RE.sub(" ", six.ensure_str(text)) ++ text = NON_ALPHANUM_RE.sub(" ", text) + + tokens = SPACES_RE.split(text) + if stemmer: + # Only stem words more than 3 characters long. +- tokens = [six.ensure_str(stemmer.stem(x)) if len(x) > 3 else x ++ tokens = [stemmer.stem(x) if len(x) > 3 else x + for x in tokens] + + # One final check to drop any empty or invalid tokens. +diff --git a/setup.py b/setup.py +index c630204..914c4fe 100644 +--- a/setup.py ++++ b/setup.py +@@ -50,7 +50,6 @@ setuptools.setup( + "absl-py", + "nltk", + "numpy", +- "six>=1.14.0", + ], + python_requires=">=3.7", + ) diff --git a/meta-python/recipes-devtools/python3-rouge-score/python3-rouge-score_0.1.2.bb b/meta-python/recipes-devtools/python3-rouge-score/python3-rouge-score_0.1.2.bb index 722956a8e2..246593df83 100644 --- a/meta-python/recipes-devtools/python3-rouge-score/python3-rouge-score_0.1.2.bb +++ b/meta-python/recipes-devtools/python3-rouge-score/python3-rouge-score_0.1.2.bb @@ -9,11 +9,11 @@ RDEPENDS:${PN} = "\ python3-absl \ python3-nltk \ python3-numpy \ - python3-six (>=1.14) \ " inherit setuptools3 pypi PYPI_PACKAGE = "rouge_score" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "c7d4da2683e68c9abf0135ef915d63a46643666f848e558a1b9f7ead17ff0f04" From patchwork Mon Sep 21 11:54:54 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98798 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 59DC3C982F9 for ; Mon, 21 Sep 2026 11:55:28 +0000 (UTC) Received: from mailout05.t-online.de (mailout05.t-online.de [194.25.134.82]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47380.1789991724416412411 for ; Mon, 21 Sep 2026 04:55:24 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=V1Xqt24V; spf=pass (domain: t-online.de, ip: 194.25.134.82, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout05.t-online.de (Postfix) with SMTP id 3A6668A6 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccA-04X1zF0; Mon, 21 Sep 2026 13:55:18 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 18/24] python3-slip-dbus: drop the six dependency Date: Mon, 21 Sep 2026 13:54:54 +0200 Message-ID: <20260921115500.53770-18-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-30FF6A93-CD386558/0/0 CLEAN NORMAL X-TOI-MSGID: 96b5da31-7430-4fb6-8187-54cf50ace75d DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=a206wWOHy/6SuXmXJrg9vfrL1Yz9DUc/JoQSdOFN/W8=; h=From:To:Subject:Date:In-Reply-To:References; b=V1Xqt24V3X3Xbb0b1NYQTLAYTDsVY3MPyyOAD5hqWaOUGvIdpv4JvoU/egV9BQ9A1 jSifdzv0UBtTO80yXXvjo8ipSrbSd5KSgDe3VJN7Evpj4Nzf4cFWB4SxJQGeL661F9 l7zIWYUE0XwEHaAUFcD4ox/yghWu+mFGkKJM0vnjr2YbBPjhgwIuSK5tJiS1qSYuyU bS/DSJBUuzToACN4Kbpi2IDGsNVbYtl6W7Y61oPz3u2Wat+K0wKgLk/iYQHKlHTHrq bICYvLnTSM+bSoVc1ERH7uX7K/24xVkUJ+ooHTjb6/wm5/lP13Lpe3lv6KUL2Sme2Q Kupz5FbR+VBLw== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:55:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130132 Patch slip to use the metaclass keyword argument in the class statement instead of six.with_metaclass, and drop the runtime dependency. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0002-drop-the-six-dependency.patch | 81 +++++++++++++++++++ .../python/python3-slip-dbus_0.6.5.bb | 4 +- 2 files changed, 82 insertions(+), 3 deletions(-) create mode 100644 meta-python/recipes-devtools/python/python3-slip-dbus/0002-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-slip-dbus/0002-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-slip-dbus/0002-drop-the-six-dependency.patch new file mode 100644 index 0000000000..dcf9239e70 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-slip-dbus/0002-drop-the-six-dependency.patch @@ -0,0 +1,81 @@ +From 42fb66d5ed4a713ce82356cbd00f1f0a40676e1c Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:23:21 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and slip does not need it on +Python 3: six.with_metaclass is the metaclass keyword argument in the +class statement. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + slip/dbus/introspection.py | 3 +-- + slip/dbus/service.py | 3 +-- + slip/util/hookable.py | 3 +-- + 3 files changed, 3 insertions(+), 6 deletions(-) + +diff --git a/slip/dbus/introspection.py b/slip/dbus/introspection.py +index 07eb8a7..83dc7e0 100644 +--- a/slip/dbus/introspection.py ++++ b/slip/dbus/introspection.py +@@ -26,7 +26,6 @@ from __future__ import absolute_import + + from xml.etree.ElementTree import ElementTree + from io import StringIO +-from six import with_metaclass + + + class IElemMeta(type): +@@ -73,7 +72,7 @@ class IElemMeta(type): + return kls + + +-class IElem(with_metaclass(IElemMeta, object)): ++class IElem(object, metaclass=IElemMeta): + """Base class for introspection elements.""" + + def __new__(cls, elem, parent=None): +diff --git a/slip/dbus/service.py b/slip/dbus/service.py +index 5d276f8..6a795d6 100644 +--- a/slip/dbus/service.py ++++ b/slip/dbus/service.py +@@ -27,7 +27,6 @@ from __future__ import absolute_import + + import dbus + import dbus.service +-from six import with_metaclass + + from .._wrappers import _glib as GLib + +@@ -182,7 +181,7 @@ class InterfaceType(dbus.service.InterfaceType): + return super(InterfaceType, cls).__new__(cls, name, bases, dct) + + +-class Object(with_metaclass(InterfaceType, dbus.service.Object)): ++class Object(dbus.service.Object, metaclass=InterfaceType): + + # timeout & persistence + +diff --git a/slip/util/hookable.py b/slip/util/hookable.py +index 89c7392..41d1688 100644 +--- a/slip/util/hookable.py ++++ b/slip/util/hookable.py +@@ -24,7 +24,6 @@ + hooks on changes.""" + + import collections.abc +-from six import with_metaclass + + __all__ = ["Hookable", "HookableSet"] + +@@ -121,7 +120,7 @@ class _HookEntry(object): + self.__hook(*self.__args, **self.__kwargs) + + +-class Hookable(with_metaclass(HookableType, object)): ++class Hookable(object, metaclass=HookableType): + + """An object which calls registered hooks on changes.""" + diff --git a/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb b/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb index b706db8d49..99d2f9b7e1 100644 --- a/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb +++ b/meta-python/recipes-devtools/python/python3-slip-dbus_0.6.5.bb @@ -17,6 +17,7 @@ SRCNAME = "python-slip" SRC_URI = "https://github.com/nphilipp/${SRCNAME}/releases/download/${SRCNAME}-${PV}/${SRCNAME}-${PV}.tar.bz2 \ file://9b939c0b534c1b7958fa0a3c7aedf30bca910431.patch \ file://0001-setup.py-Use-setuptools-instead-of-distutils.patch \ + file://0002-drop-the-six-dependency.patch \ " SRC_URI[sha256sum] = "c726c086f0dd93a0ac7a0176f383a12af91b6657b78a301e3f5b25d9f8d4d10b" @@ -26,9 +27,6 @@ do_compile:prepend() { sed -e 's/@VERSION@/${PV}/g' ${S}/setup.py.in > ${S}/setup.py } -RDEPENDS:${PN} += "\ - python3-six \ -" # http://errors.yoctoproject.org/Errors/Details/184713/ # python-native/python: can't open file 'setup.py': [Errno 2] No such file or directory CLEANBROKEN = "1" From patchwork Mon Sep 21 11:54:55 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98813 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id BCEFBC982FE for ; Mon, 21 Sep 2026 11:56:11 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47399.1789991769132939923 for ; Mon, 21 Sep 2026 04:56:09 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=YZAs1klk; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id 3F49C1C436 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccA-04X1zG0; Mon, 21 Sep 2026 13:55:18 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 19/24] python3-smpplib: drop the six dependency Date: Mon, 21 Sep 2026 13:54:55 +0200 Message-ID: <20260921115500.53770-19-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991718-89FF8A93-81CB74A2/0/0 CLEAN NORMAL X-TOI-MSGID: 9cf6f6ea-ceac-49c5-bd89-a3891c0e4d0e DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=cD3jFRJWiJe1qjB0qP/Q5D4TJUnQ2yu9zLzz8w8pFT0=; h=From:To:Subject:Date:In-Reply-To:References; b=YZAs1klkWBAfl76opQTEpdKfCXlRMLu0GqCogMzk6M0tEK90cvMAXQS/QMRVSbQkc bQfvfAtoeL3RNg5eIHdag7fsJnmcUbKoj05+uMVwTd+RRMBw/AQd6QtYYrpEcIpJzk K/sWEi+H6LlQxKpjnLVer+BBr+GaLcd1710sjQSq3NTGkHzhOQ68d8aD0R9//7+hSA G0Cpt8IrbUJ9NmTqX+D8dBHTR3/FhyB5S0wvZ/ZLQ2qcBFnNFlovBFE4+aBxtjV07w E1FbmvuBUlk3Uef2eKQORJiXC0FUycZb0gBrc0WUbf5J4XBhMzcAfZEy+8um2flxiJ MY61krH410C4w== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:11 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130150 Patch smpplib to use dict.items, a bytes literal and a latin-1 encode instead of six.iteritems, six.int2byte and six.b, and drop the runtime dependency. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 124 ++++++++++++++++++ .../python/python3-smpplib_2.2.4.bb | 2 +- 2 files changed, 125 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-smpplib/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-smpplib/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-smpplib/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..0423fdc455 --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-smpplib/0001-drop-the-six-dependency.patch @@ -0,0 +1,124 @@ +From ebb5d702a7bff096a75280b1709f5e061857b7d4 Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:24:42 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and smpplib does not need it on +Python 3: six.iteritems is dict.items, six.int2byte is bytes of a single +value and six.b encodes as latin-1. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + setup.py | 1 - + smpplib/command.py | 8 +++----- + smpplib/command_codes.py | 4 +--- + smpplib/gsm.py | 8 +++----- + 4 files changed, 7 insertions(+), 14 deletions(-) + +diff --git a/setup.py b/setup.py +index b12fc31..b3ef37e 100644 +--- a/setup.py ++++ b/setup.py +@@ -16,7 +16,6 @@ setup( + url='https://github.com/python-smpplib/python-smpplib', + description='SMPP library for python', + packages=find_packages(), +- install_requires=['six'], + extras_require=dict( + tests=('typing; python_version < "3.5"', 'pytest', 'mock'), + ), +diff --git a/smpplib/command.py b/smpplib/command.py +index bde5840..40fcac7 100644 +--- a/smpplib/command.py ++++ b/smpplib/command.py +@@ -22,8 +22,6 @@ + import logging + import struct + +-import six +- + from smpplib import consts, exceptions, pdu + from smpplib.ptypes import flag, ostr + +@@ -64,7 +62,7 @@ def get_optional_name(code): + """Return optional_params name by given code. If code is unknown, raise + UnkownCommandError exception""" + +- for key, value in six.iteritems(consts.OPTIONAL_PARAMS): ++ for key, value in consts.OPTIONAL_PARAMS.items(): + if value == code: + return key + +@@ -106,7 +104,7 @@ class Command(pdu.PDU): + + def _set_vars(self, **kwargs): + """set attributes accordingly to kwargs""" +- for key, value in six.iteritems(kwargs): ++ for key, value in kwargs.items(): + if not hasattr(self, key) or getattr(self, key) is None: + setattr(self, key, value) + +@@ -179,7 +177,7 @@ class Command(pdu.PDU): + value = chr(0) + + setattr(self, field, field_value) +- return six.b(value) ++ return value.encode('latin-1') + + def _generate_ostring(self, field): + """Generate octet string value (no null terminator)""" +diff --git a/smpplib/command_codes.py b/smpplib/command_codes.py +index eab6868..a0fc53e 100644 +--- a/smpplib/command_codes.py ++++ b/smpplib/command_codes.py +@@ -1,5 +1,3 @@ +-import six +- + from smpplib import exceptions + + # +@@ -42,7 +40,7 @@ def get_command_name(code): + If code is unknown, raise UnknownCommandError exception. + """ + +- for key, value in six.iteritems(commands): ++ for key, value in commands.items(): + if value == code: + return key + +diff --git a/smpplib/gsm.py b/smpplib/gsm.py +index 9d70f98..77c6d0e 100644 +--- a/smpplib/gsm.py ++++ b/smpplib/gsm.py +@@ -1,8 +1,6 @@ + # -*- coding: utf8 -*- + import random + +-import six +- + from smpplib import consts, exceptions + + +@@ -55,7 +53,7 @@ def gsm_encode(plaintext): + """Performs default GSM 7-bit encoding. Beware it's vendor-specific and not recommended for use.""" + try: + return b''.join( +- six.int2byte(index) if index < 0x80 else b'\x1B' + six.int2byte(index - 0x80) ++ bytes((index,)) if index < 0x80 else b'\x1B' + bytes((index - 0x80,)) + for index in map(GSM_CHARACTER_TABLE.index, plaintext) + ) + except ValueError: +@@ -78,9 +76,9 @@ def make_parts_encoded(encoded_text, part_size): + raise exceptions.MessageTooLong() + + uid = random.randint(0, 255) +- header = b''.join((b'\x05\x00\x03', six.int2byte(uid), six.int2byte(len(chunks)))) ++ header = b''.join((b'\x05\x00\x03', bytes((uid,)), bytes((len(chunks),)))) + +- return [b''.join((header, six.int2byte(i), chunk)) for i, chunk in enumerate(chunks, start=1)] ++ return [b''.join((header, bytes((i,)), chunk)) for i, chunk in enumerate(chunks, start=1)] + + + def split_sequence(sequence, part_size): diff --git a/meta-python/recipes-devtools/python/python3-smpplib_2.2.4.bb b/meta-python/recipes-devtools/python/python3-smpplib_2.2.4.bb index e65259a053..f06a71f4f6 100644 --- a/meta-python/recipes-devtools/python/python3-smpplib_2.2.4.bb +++ b/meta-python/recipes-devtools/python/python3-smpplib_2.2.4.bb @@ -3,13 +3,13 @@ SECTION = "devel/python" LICENSE = "GPL-3.0-only" LIC_FILES_CHKSUM = "file://README.md;md5=8b4e2ac8cf248f7b991784f88b630852" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "6f3b036fcb2643c1b7a3289bb5ac4c9a720af1bf73e572e2729db6b5d800c273" inherit pypi setuptools3 ptest-python-pytest RDEPENDS:${PN} += " \ python3-logging \ - python3-six \ " RDEPENDS:${PN}-ptest += " \ From patchwork Mon Sep 21 11:54:56 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98814 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4E4DDC98300 for ; Mon, 21 Sep 2026 11:56:12 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47401.1789991769376761731 for ; Mon, 21 Sep 2026 04:56:09 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=p+QsA8QW; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id 4CF021C44A for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccB-04X1zH0; Mon, 21 Sep 2026 13:55:19 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 20/24] python3-transitions: drop the six dependency Date: Mon, 21 Sep 2026 13:54:56 +0200 Message-ID: <20260921115500.53770-20-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991719-EFFFCA93-5803F209/0/0 CLEAN NORMAL X-TOI-MSGID: c3455ae1-0c56-4fe5-8d20-a03d86c757ca DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=Kfk8ClS6+zTIOkCdNrY0R12JQH5f7/oOHoG6hytEI4A=; h=From:To:Subject:Date:In-Reply-To:References; b=p+QsA8QWGB4kMIzAH+fq6tUpOxtUd2QWtthxi6R30EMEDZSvhbwoV+3YiYvQUzmUB zwaEKexx2UdYMgy7LmsVYh4m9wZwjf5WR1iUDFF3DBhz0eUy5nI91KI+hcJe9Jb20J dqP3FV3MCWaRqejTAaI4++5HvqDuY/co+nlToPoFNHzOFC0Ade4AGtWk7pg6/3FxvB 1VGSdmdSCr6joQhN8p0ASUE4a07krQpZaRCqqHUFx4jvY2Y76MA6o1Upm/cG5Wmel1 hcy7eGHxbZWZdhGINA7OMhEgYMaQVc3iZItDp4USlXa+GGJ/66ObwWXJd1Ola8gjby B30WxfLhSjBgw== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:12 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130152 Patch transitions to use the Python 3 equivalents of the six helpers and drop the runtime dependency. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 237 ++++++++++++++++++ .../python/python3-transitions_0.9.3.bb | 3 +- 2 files changed, 239 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-transitions/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-transitions/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-transitions/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..a9011565ab --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-transitions/0001-drop-the-six-dependency.patch @@ -0,0 +1,237 @@ +From 28d8f0047b18afc5b9a9822c548fb20cc676b97b Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:06:58 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim. string_types, iteritems and +add_metaclass have direct Python 3 equivalents, so the state machine +keeps its behaviour without the dependency. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + requirements.txt | 1 - + setup.py | 3 +-- + transitions/core.py | 5 ++--- + transitions/extensions/diagrams_base.py | 4 +--- + transitions/extensions/factory.py | 3 +-- + transitions/extensions/markup.py | 7 +++---- + transitions/extensions/nesting.py | 19 +++++++++---------- + 7 files changed, 17 insertions(+), 25 deletions(-) + +diff --git a/requirements.txt b/requirements.txt +index ffe2fce..e69de29 100644 +--- a/requirements.txt ++++ b/requirements.txt +@@ -1 +0,0 @@ +-six +diff --git a/setup.py b/setup.py +index 680e12a..2c9932a 100644 +--- a/setup.py ++++ b/setup.py +@@ -43,8 +43,7 @@ setup( + "transitions.tests": ["data/*"], + }, + include_package_data=True, +- install_requires=["six"], +- extras_require=extras_require, ++ extras_require=extras_require, + tests_require=tests_require, + license="MIT", + download_url="https://github.com/pytransitions/transitions/archive/%s.tar.gz" +diff --git a/transitions/core.py b/transitions/core.py +index 8eaa3dc..42f3c1a 100644 +--- a/transitions/core.py ++++ b/transitions/core.py +@@ -31,7 +31,6 @@ import warnings + + from collections import OrderedDict, defaultdict, deque + from functools import partial +-from six import string_types + + _LOGGER = logging.getLogger(__name__) + _LOGGER.addHandler(logging.NullHandler()) +@@ -838,7 +837,7 @@ class Machine(object): + states = listify(states) + + for state in states: +- if isinstance(state, (string_types, Enum)): ++ if isinstance(state, (str, Enum)): + state = self._create_state( + state, on_enter=on_enter, on_exit=on_exit, + ignore_invalid_triggers=ignore, **kwargs) +@@ -1205,7 +1204,7 @@ class Machine(object): + Returns: + callable function resolved from string or func + """ +- if isinstance(func, string_types): ++ if isinstance(func, str): + try: + func = getattr(event_data.model, func) + if not callable(func): # if a property or some other not callable attribute was passed +diff --git a/transitions/extensions/diagrams_base.py b/transitions/extensions/diagrams_base.py +index e97bd06..6ead5c6 100644 +--- a/transitions/extensions/diagrams_base.py ++++ b/transitions/extensions/diagrams_base.py +@@ -8,14 +8,12 @@ + import copy + import abc + import logging +-import six + + _LOGGER = logging.getLogger(__name__) + _LOGGER.addHandler(logging.NullHandler()) + + +-@six.add_metaclass(abc.ABCMeta) +-class BaseGraph(object): ++class BaseGraph(object, metaclass=abc.ABCMeta): + """Provides the common foundation for graphs generated either with pygraphviz or graphviz. This abstract class + should not be instantiated directly. Use .(py)graphviz.(Nested)Graph instead. + Attributes: +diff --git a/transitions/extensions/factory.py b/transitions/extensions/factory.py +index e56541c..83b2f19 100644 +--- a/transitions/extensions/factory.py ++++ b/transitions/extensions/factory.py +@@ -9,7 +9,6 @@ + + from functools import partial + import itertools +-from six import iteritems + + from ..core import Machine, Transition + +@@ -78,7 +77,7 @@ class LockedGraphMachine(GraphMachine, LockedMachine): + ", ".join(itertools.chain( + (str(_) for _ in func.args[1:]), + ("%s=%s" % (key, value) +- for key, value in iteritems(func.keywords if func.keywords else {}))))) ++ for key, value in (func.keywords if func.keywords else {}).items())))) + return GraphMachine.format_references(func) + + +diff --git a/transitions/extensions/markup.py b/transitions/extensions/markup.py +index 6961826..f974589 100644 +--- a/transitions/extensions/markup.py ++++ b/transitions/extensions/markup.py +@@ -12,7 +12,6 @@ import importlib + import itertools + import numbers + +-from six import string_types, iteritems + + try: + # Enums are supported for Python 3.4+ and Python 2.7 with enum34 package installed +@@ -143,7 +142,7 @@ class MarkupMachine(Machine): + ", ".join(itertools.chain( + (str(_) for _ in func.args), + ("%s=%s" % (key, value) +- for key, value in iteritems(func.keywords if func.keywords else {}))))) ++ for key, value in (func.keywords if func.keywords else {}).items())))) + return str(func) + + def _convert_states_and_transitions(self, root): +@@ -236,7 +235,7 @@ class HierarchicalMarkupMachine(MarkupMachine, HierarchicalMachine): + + def rep(func, format_references=None): + """Return a string representation for `func`.""" +- if isinstance(func, string_types): ++ if isinstance(func, str): + return func + if isinstance(func, numbers.Number): + return str(func) +@@ -249,7 +248,7 @@ def _convert(obj, attributes, format_references): + val = getattr(obj, key, False) + if not val: + continue +- if isinstance(val, string_types): ++ if isinstance(val, str): + definition[key] = val + elif val is True: + definition[key] = True +diff --git a/transitions/extensions/nesting.py b/transitions/extensions/nesting.py +index b115363..4566cb0 100644 +--- a/transitions/extensions/nesting.py ++++ b/transitions/extensions/nesting.py +@@ -24,7 +24,6 @@ except ImportError: # pragma: no cover + class EnumMeta: # type: ignore + """This is just an EnumMeta stub for Python 2 and Python 3.3 and before without Enum support.""" + +-from six import string_types + + from ..core import State, Machine, Transition, Event, listify, MachineError, EventData + +@@ -417,7 +416,7 @@ class HierarchicalMachine(Machine): + ) + + def __call__(self, to_scope=None): +- if isinstance(to_scope, string_types): ++ if isinstance(to_scope, str): + state_name = to_scope.split(self.state_cls.separator)[0] + state = self.states[state_name] + to_scope = (state, state.states, state.events, self.prefix_path + [state_name]) +@@ -451,7 +450,7 @@ class HierarchicalMachine(Machine): + if hasattr(initial_name, 'name'): + initial_name = initial_name.name + # initial states set by add_model or machine might contain initial states themselves. +- if isinstance(initial_name, string_types): ++ if isinstance(initial_name, str): + initial_states = self._resolve_initial(models, initial_name.split(self.state_cls.separator)) + # when initial is set to a (parallel) state, we accept it as it is + else: +@@ -516,7 +515,7 @@ class HierarchicalMachine(Machine): + state = {'name': state, 'children': state.value} + elif isinstance(state.value, dict): + state = dict(name=state, **state.value) +- if isinstance(state, string_types): ++ if isinstance(state, str): + self._add_string_state(state, on_enter, on_exit, ignore, remap, **kwargs) + elif isinstance(state, Enum): + self._add_enum_state(state, on_enter, on_exit, ignore, remap, **kwargs) +@@ -643,7 +642,7 @@ class HierarchicalMachine(Machine): + """ + if isinstance(state, Enum): + state = self._get_enum_path(state) +- elif isinstance(state, string_types): ++ elif isinstance(state, str): + state = state.split(self.state_cls.separator) + if not hint: + state = copy.copy(state) +@@ -695,11 +694,11 @@ class HierarchicalMachine(Machine): + """ + with self(): + source_path = [] if source == "*" \ +- else source.split(self.state_cls.separator) if isinstance(source, string_types) \ ++ else source.split(self.state_cls.separator) if isinstance(source, str) \ + else self._get_enum_path(source) if isinstance(source, Enum) \ + else self._get_state_path(source) + dest_path = [] if dest == "*" \ +- else dest.split(self.state_cls.separator) if isinstance(dest, string_types) \ ++ else dest.split(self.state_cls.separator) if isinstance(dest, str) \ + else self._get_enum_path(dest) if isinstance(dest, Enum) \ + else self._get_state_path(dest) + matches = self.get_nested_transitions(trigger, source_path, dest_path) +@@ -745,11 +744,11 @@ class HierarchicalMachine(Machine): + """ + with self(): + source_path = [] if source == "*" \ +- else source.split(self.state_cls.separator) if isinstance(source, string_types) \ ++ else source.split(self.state_cls.separator) if isinstance(source, str) \ + else self._get_enum_path(source) if isinstance(source, Enum) \ + else self._get_state_path(source) + dest_path = [] if dest == "*" \ +- else dest.split(self.state_cls.separator) if isinstance(dest, string_types) \ ++ else dest.split(self.state_cls.separator) if isinstance(dest, str) \ + else self._get_enum_path(dest) if isinstance(dest, Enum) \ + else self._get_state_path(dest) + self._remove_nested_transitions(trigger, source_path, dest_path) +@@ -1169,7 +1168,7 @@ class HierarchicalMachine(Machine): + self._init_state(substate) + + def _recursive_initial(self, value): +- if isinstance(value, string_types): ++ if isinstance(value, str): + path = value.split(self.state_cls.separator, 1) + if len(path) > 1: + state_name, suffix = path diff --git a/meta-python/recipes-devtools/python/python3-transitions_0.9.3.bb b/meta-python/recipes-devtools/python/python3-transitions_0.9.3.bb index 6a54d3a79a..6bf78f2b9f 100644 --- a/meta-python/recipes-devtools/python/python3-transitions_0.9.3.bb +++ b/meta-python/recipes-devtools/python/python3-transitions_0.9.3.bb @@ -4,8 +4,9 @@ LIC_FILES_CHKSUM = "file://LICENSE;md5=de0a0876a688a4483bfafa764773ab39" inherit pypi setuptools3 +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "881fb75bb1654ed55d86060bb067f2c716f8e155f57bb73fd444e53713aafec8" -RDEPENDS:${PN} += "python3-six python3-logging" +RDEPENDS:${PN} += "python3-logging" BBCLASSEXTEND = "native" \ No newline at end of file From patchwork Mon Sep 21 11:54:57 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98800 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 4C958C982F1 for ; Mon, 21 Sep 2026 11:55:28 +0000 (UTC) Received: from mailout05.t-online.de (mailout05.t-online.de [194.25.134.82]) by mx.groups.io with SMTP id smtpd.msgproc01-g2.47149.1789991724758663919 for ; Mon, 21 Sep 2026 04:55:25 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=l/Gmo0ed; spf=pass (domain: t-online.de, ip: 194.25.134.82, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout05.t-online.de (Postfix) with SMTP id 56ACD8A8 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccB-04X1zI0; Mon, 21 Sep 2026 13:55:19 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 21/24] python3-txdbus: drop the six dependency Date: Mon, 21 Sep 2026 13:54:57 +0200 Message-ID: <20260921115500.53770-21-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991719-07FFCA93-B5E86377/0/0 CLEAN NORMAL X-TOI-MSGID: f9e801aa-381e-4dcc-b851-d28e85063068 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=w0yvL7bwFfTges4m4aJtuhup7GK77VrKjhr+SJilXhY=; h=From:To:Subject:Date:In-Reply-To:References; b=l/Gmo0edxaawV7h5BKA5lWx4QIcI/MVyhQgAuSeyiwPuRbwYyM/KGfHYlV6A3mIjl 3zNxaq5uvsNIVyjq+BBlFhlpyoOPNhyKRX6wgmXaKJHGqkkNFvWg2Z0SjOoH3deLAD XJ7D7L/ILe9PoV9gM0aJTyr0xS7WwjUTqoPlA0s63ojZYkav7YT5YMgRQ7Z/NEJvPN psX1nO5rJ1MDRi4xlKJUOWWtaIr/w02lg9Uz3YjnZUL811+gZPAUBA8mqvrw6fSd3O CGgB12ClFK+BAcjjM0MwFGWMTXWkLsSyskI+U+FnQ8ATdj+H4BgznlFJZMK52jt/+y 4DsRohaUZ7fMA== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:55:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130135 Patch txdbus to use the dict methods, int, str, bytes indexing, next and io.StringIO instead of the six helpers, and drop the runtime dependency. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 301 ++++++++++++++++++ .../python/python3-txdbus_1.1.2.bb | 3 +- 2 files changed, 303 insertions(+), 1 deletion(-) create mode 100644 meta-python/recipes-devtools/python/python3-txdbus/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-devtools/python/python3-txdbus/0001-drop-the-six-dependency.patch b/meta-python/recipes-devtools/python/python3-txdbus/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..6ea52c4deb --- /dev/null +++ b/meta-python/recipes-devtools/python/python3-txdbus/0001-drop-the-six-dependency.patch @@ -0,0 +1,301 @@ +From f3362adf93eb439e0b9c997b7b8d182da4ed6cf4 Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:25:01 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and txdbus does not need it on +Python 3: the iteritems/iterkeys/itervalues helpers are the dict +methods, integer_types and string_types are int and str, byte2int is +indexing the bytes object, six.next is next and six.moves.cStringIO is +io.StringIO. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + setup.py | 2 +- + txdbus/authentication.py | 3 +-- + txdbus/client.py | 5 ++--- + txdbus/interface.py | 7 +++---- + txdbus/introspection.py | 4 ++-- + txdbus/marshal.py | 14 ++++++-------- + txdbus/objects.py | 11 +++++------ + txdbus/protocol.py | 3 +-- + txdbus/router.py | 3 +-- + 9 files changed, 22 insertions(+), 30 deletions(-) + +diff --git a/setup.py b/setup.py +index 784cd0f..d4d2758 100755 +--- a/setup.py ++++ b/setup.py +@@ -21,7 +21,7 @@ setup( + url='https://github.com/cocagne/txdbus', + author='Tom Cocagne', + author_email='tom.cocagne@gmail.com', +- install_requires=['twisted>=10.1', 'six'], ++ install_requires=['twisted>=10.1'], + provides=['txdbus'], + packages=['txdbus'], + keywords=['dbus', 'twisted'], +diff --git a/txdbus/authentication.py b/txdbus/authentication.py +index 656fecf..2b91e47 100644 +--- a/txdbus/authentication.py ++++ b/txdbus/authentication.py +@@ -11,7 +11,6 @@ import os + import os.path + import time + +-import six + from twisted.internet import interfaces + from twisted.python import log + from zope.interface import implementer, Interface +@@ -557,7 +556,7 @@ class BusAuthenticator (object): + self.state = None + self.current_mech = None + +- for n, m in six.iteritems(self.authenticators): ++ for n, m in self.authenticators.items(): + self.mechanisms[n] = m + + mechNames = self.authenticators.keys() +diff --git a/txdbus/client.py b/txdbus/client.py +index 986da6c..53b4a25 100644 +--- a/txdbus/client.py ++++ b/txdbus/client.py +@@ -7,7 +7,6 @@ methods over the DBus bus. + @author: Tom Cocagne + """ + +-import six + from twisted.internet import defer, reactor + from twisted.internet.error import ConnectError + from twisted.internet.protocol import Factory +@@ -472,7 +471,7 @@ class DBusClientConnection (txdbus.protocol.BasicDBusProtocol): + return None + + # if not ( +- # isinstance(msg.body[0], six.string_types) and ++ # isinstance(msg.body[0], str) and + # msg.body[0].startswith('' % (self.name,)) + +- k = sorted(six.iterkeys(self.methods)) ++ k = sorted(self.methods) + for m in (self.methods[a] for a in k): + l.append(' ' % (m.name,)) + for arg_sig in marshal.genCompleteTypes(m.sigIn): +@@ -225,14 +224,14 @@ class DBusInterface (object): + (arg_sig,)) + l.append(' ') + +- k = sorted(six.iterkeys(self.signals)) ++ k = sorted(self.signals) + for s in (self.signals[a] for a in k): + l.append(' ' % (s.name,)) + for arg_sig in marshal.genCompleteTypes(s.sig): + l.append(' ' % (arg_sig,)) + l.append(' ') + +- k = list(six.iterkeys(self.properties)) ++ k = list(self.properties) + k.sort() + for p in (self.properties[a] for a in k): + l.append( +diff --git a/txdbus/introspection.py b/txdbus/introspection.py +index 099a74b..b8a85cc 100644 +--- a/txdbus/introspection.py ++++ b/txdbus/introspection.py +@@ -6,7 +6,7 @@ Provides support for DBus introspection + import xml.sax + import xml.sax.handler + +-from six.moves import cStringIO ++from io import StringIO + + from txdbus import interface + +@@ -96,7 +96,7 @@ def getInterfacesFromXML(xmlStr, replaceKnownInterfaces=False): + p.setFeature(xml.sax.handler.feature_validation, False) + p.setFeature(xml.sax.handler.feature_external_ges, False) + p.setContentHandler(handler) +- p.parse(cStringIO(xmlStr)) ++ p.parse(StringIO(xmlStr)) + + return handler.interfaces + +diff --git a/txdbus/marshal.py b/txdbus/marshal.py +index 1867e0b..ac49f15 100644 +--- a/txdbus/marshal.py ++++ b/txdbus/marshal.py +@@ -8,8 +8,6 @@ import codecs + import re + import struct + +-import six +- + from txdbus.error import MarshallingError + + +@@ -262,11 +260,11 @@ def sigFromPy(pobj): + return 'b' + elif isinstance(pobj, int): + return 'i' +- elif isinstance(pobj, six.integer_types): ++ elif isinstance(pobj, int): + return 'x' + elif isinstance(pobj, float): + return 'd' +- elif isinstance(pobj, six.string_types): ++ elif isinstance(pobj, str): + return 's' + elif isinstance(pobj, bytearray): + return 'ay' +@@ -288,7 +286,7 @@ def sigFromPy(pobj): + elif isinstance(pobj, dict): + same = True + vtype = None +- for k, v in six.iteritems(pobj): ++ for k, v in pobj.items(): + if vtype is None: + vtype = type(v) + elif not isinstance(v, vtype): +@@ -376,7 +374,7 @@ def genCompleteTypes(compoundSig): + + elif c == 'a': + g = genCompleteTypes(compoundSig[i + 1:]) +- ct = six.next(g) ++ ct = next(g) + i += len(ct) + yield 'a' + ct + +@@ -468,7 +466,7 @@ def marshal_unix_fd(ct, var, start_byte, lendian, oobFDs): + # 3 - terminating nul byte + # + def marshal_string(ct, var, start_byte, lendian, oobFDs): +- if not isinstance(var, six.string_types): ++ if not isinstance(var, str): + raise MarshallingError('Required string. Received: ' + repr(var)) + if var.find('\0') != -1: + raise MarshallingError( +@@ -525,7 +523,7 @@ def marshal_array(ct, var, start_byte, lendian, oobFDs): + if isinstance(var, (list, tuple, bytearray)): + arr_list = var + elif isinstance(var, dict): +- arr_list = [tpl for tpl in six.iteritems(var)] ++ arr_list = [tpl for tpl in var.items()] + else: + raise MarshallingError( + 'List, Tuple, Bytearray, or Dictionary required for DBus array. ' +diff --git a/txdbus/objects.py b/txdbus/objects.py +index 69d3a3e..e2e7523 100644 +--- a/txdbus/objects.py ++++ b/txdbus/objects.py +@@ -7,7 +7,6 @@ DBus objects + import inspect + import weakref + +-import six + from twisted.internet import defer + from zope.interface import implementer, Interface + +@@ -400,7 +399,7 @@ class DBusObject (object): + + cache = {} + +- for name, obj in six.iteritems(base.__dict__): ++ for name, obj in base.__dict__.items(): + self._cacheInterfaces(base, cache, name, obj) + + base._dbusIfaceCache = cache +@@ -449,7 +448,7 @@ class DBusObject (object): + if key in d: + return d[key] + else: +- for ic in six.itervalues(cache): ++ for ic in cache.values(): + d = getattr(ic, cacheAttr) + if key in d: + return d[key] +@@ -588,14 +587,14 @@ class DBusObject (object): + ifc = cache.get(interfaceName, None) + + if ifc: +- for p in six.itervalues(ifc.properties): ++ for p in ifc.properties.values(): + addp(p) + break + + else: + for cache in self._iterIFaceCaches(): +- for ifc in six.itervalues(cache): +- for p in six.itervalues(ifc.properties): ++ for ifc in cache.values(): ++ for p in ifc.properties.values(): + addp(p) + + return r +diff --git a/txdbus/protocol.py b/txdbus/protocol.py +index 7e6ed8a..1c05f11 100644 +--- a/txdbus/protocol.py ++++ b/txdbus/protocol.py +@@ -6,7 +6,6 @@ This module implements the wire-level DBus protocol. + import os.path + import struct + +-import six + from twisted.internet import interfaces, protocol + from twisted.python import log + from zope.interface import implementer, Interface +@@ -144,7 +143,7 @@ class BasicDBusProtocol(protocol.Protocol): + self.dataReceived(b'') + else: + if not self._client and self._firstByte: +- if six.byte2int(data) != 0: ++ if data[0] != 0: + self.transport.loseConnection() + return + self._firstByte = False +diff --git a/txdbus/router.py b/txdbus/router.py +index a5f8e44..2a7e732 100644 +--- a/txdbus/router.py ++++ b/txdbus/router.py +@@ -4,7 +4,6 @@ to interested connections. + + @author: Tom Cocagne + """ +-import six + from twisted.python import log + + # XXX Replace this simple, inefficient implementation with something a bit +@@ -124,5 +123,5 @@ class MessageRouter (object): + + def routeMessage(self, m): + # print 'ROUTING MSG', m.interface, m.member +- for r in six.itervalues(self._rules): ++ for r in self._rules.values(): + r.match(m) diff --git a/meta-python/recipes-devtools/python/python3-txdbus_1.1.2.bb b/meta-python/recipes-devtools/python/python3-txdbus_1.1.2.bb index ef6c248e80..c90f513a1f 100644 --- a/meta-python/recipes-devtools/python/python3-txdbus_1.1.2.bb +++ b/meta-python/recipes-devtools/python/python3-txdbus_1.1.2.bb @@ -4,8 +4,9 @@ SECTION = "devel/python" LICENSE = "MIT" LIC_FILES_CHKSUM = "file://README.rst;beginline=32;endline=32;md5=2141358b0bce85fc45216ba91735ad50" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "8375a5fb68a12054f0def91af800c821fb2232949337756ed975f88d8ea2bc97" inherit pypi setuptools3 -RDEPENDS:${PN} += "python3-twisted-core python3-six" +RDEPENDS:${PN} += "python3-twisted-core" From patchwork Mon Sep 21 11:54:58 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98818 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5CC88C98301 for ; Mon, 21 Sep 2026 11:56:12 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47402.1789991769404963068 for ; Mon, 21 Sep 2026 04:56:09 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=BttvI8lO; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id 5A9C01C456 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccB-04X1zJ0; Mon, 21 Sep 2026 13:55:19 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 22/24] python3-txws: drop the six dependency Date: Mon, 21 Sep 2026 13:54:58 +0200 Message-ID: <20260921115500.53770-22-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991719-8F7FDA93-F056B4E6/0/0 CLEAN NORMAL X-TOI-MSGID: 3fd4569d-c9f3-4571-a3fe-285229758f0a DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=e3nfsst7ddKXmGzgOvM5rLX+8xRuglwxgGPcweXEurU=; h=From:To:Subject:Date:In-Reply-To:References; b=BttvI8lOqI+PAMpl0AUHSx2yRGXQgbkEu6QcGUa77mMpNAxZKNpxYZBRWj4Zs1CKR j6RgDKYXWOe8XXWxuDMhcq0aad3kwH2bFhOgm8TGh13ePh7u0iuCqMrI7l5SfoULuQ D0KREUmNa7YGVbfc3LR6q3/Fdzymyk4ci1bhKoPWB8nTEa2jZhB+4TlQU6ElDCI8ZW TFctvcho7MjVZd5u84rsju+re0CK9/bVfM8GY2kH0svgINLaUHcnu5nTvlDQgkD4qF qz6vwLZyzBjXPl5Zl8h8TcXU/3zon6s23PsKVc5jXR3i9WSZZpImbtEzx9ma5suyfq Cl00FLtrpqQwA== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:12 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130153 Patch txWS to use bytes literals, str and bytes instead of six.b and the six type aliases, and remove the six.PY2 ord() fixups since indexing a bytes object already yields an int. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../0001-drop-the-six-dependency.patch | 191 ++++++++++++++++++ .../python-txws/python3-txws_0.9.1.bb | 4 +- 2 files changed, 193 insertions(+), 2 deletions(-) create mode 100644 meta-python/recipes-connectivity/python-txws/python3-txws/0001-drop-the-six-dependency.patch diff --git a/meta-python/recipes-connectivity/python-txws/python3-txws/0001-drop-the-six-dependency.patch b/meta-python/recipes-connectivity/python-txws/python3-txws/0001-drop-the-six-dependency.patch new file mode 100644 index 0000000000..8718d28b02 --- /dev/null +++ b/meta-python/recipes-connectivity/python-txws/python3-txws/0001-drop-the-six-dependency.patch @@ -0,0 +1,191 @@ +From 9f33d0d87503cd6215e92b204f7d89d7caac82c2 Mon Sep 17 00:00:00 2001 +From: Markus Volk +Date: Mon, 21 Sep 2026 13:25:17 +0200 +Subject: [PATCH] drop the six dependency + +six is a Python 2 compatibility shim and txWS does not need it on +Python 3: six.b is a bytes literal or a latin-1 encode, text_type, +binary_type and string_types are str and bytes, and indexing a bytes +object already yields an int so the six.PY2 ord() fixups can go. + +Upstream-Status: Pending + +AI-Generated: Uses Claude Code (Claude Opus 5) +--- + setup.py | 2 +- + txws.py | 40 ++++++++++++++++------------------------ + 2 files changed, 17 insertions(+), 25 deletions(-) + +diff --git a/setup.py b/setup.py +index e4b3372..1564f1f 100755 +--- a/setup.py ++++ b/setup.py +@@ -5,7 +5,7 @@ from setuptools import setup + setup( + name="txWS", + py_modules=["txws"], +- setup_requires=["vcversioner", "six"], ++ setup_requires=["vcversioner"], + vcversioner={}, + author="Corbin Simpson", + author_email="simpsoco@osuosl.org", +diff --git a/txws.py b/txws.py +index 7de92a4..1da7cba 100644 +--- a/txws.py ++++ b/txws.py +@@ -27,8 +27,6 @@ from __future__ import division + + __version__ = "0.7.1" + +-import six +- + import array + + from base64 import b64encode, b64decode +@@ -139,7 +137,7 @@ def complete_hybi00(headers, challenge): + first = int("".join(i for i in key1 if i in digits)) // key1.count(" ") + second = int("".join(i for i in key2 if i in digits)) // key2.count(" ") + +- nonce = pack(">II8s", first, second, six.b(challenge)) ++ nonce = pack(">II8s", first, second, challenge.encode("latin-1")) + + return md5(nonce).digest() + +@@ -169,10 +167,10 @@ def make_hybi00_frame(buf): + and valid text without any 0xff bytes. + """ + +- if isinstance(buf, six.text_type): ++ if isinstance(buf, str): + buf = buf.encode('utf-8') + +- return six.b("\x00") + buf + six.b("\xff") ++ return b"\x00" + buf + b"\xff" + + def parse_hybi00_frames(buf): + """ +@@ -182,12 +180,12 @@ def parse_hybi00_frames(buf): + and will actively ignore it. + """ + +- start = buf.find(six.b("\x00")) ++ start = buf.find(b"\x00") + tail = 0 + frames = [] + + while start != -1: +- end = buf.find(six.b("\xff"), start + 1) ++ end = buf.find(b"\xff", start + 1) + if end == -1: + # Incomplete frame, try again later. + break +@@ -196,7 +194,7 @@ def parse_hybi00_frames(buf): + frame = buf[start + 1:end] + frames.append((NORMAL, frame)) + tail = end + 1 +- start = buf.find(six.b("\x00"), end + 1) ++ start = buf.find(b"\x00", end + 1) + + # Adjust the buffer and return. + buf = buf[tail:] +@@ -231,12 +229,12 @@ def make_hybi07_frame(buf, opcode=0x1): + else: + length = chr(len(buf)) + +- if isinstance(buf, six.text_type): ++ if isinstance(buf, str): + buf = buf.encode('utf-8') + + # Always make a normal packet. + header = chr(0x80 | opcode) +- return six.b(header + length) + buf ++ return (header + length).encode("latin-1") + buf + + def make_hybi07_frame_dwim(buf): + """ +@@ -244,9 +242,9 @@ def make_hybi07_frame_dwim(buf): + """ + + # TODO: eliminate magic numbers. +- if isinstance(buf, six.binary_type): ++ if isinstance(buf, bytes): + return make_hybi07_frame(buf, opcode=0x2) +- elif isinstance(buf, six.text_type): ++ elif isinstance(buf, str): + return make_hybi07_frame(buf.encode("utf-8"), opcode=0x1) + else: + raise TypeError("In binary support mode, frame data must be either str or unicode") +@@ -268,9 +266,6 @@ def parse_hybi07_frames(buf): + # about, and an opcode which nobody cares about. + header = buf[start] + +- if six.PY2: +- header = ord(header) +- + if header & 0x70: + # At least one of the reserved flags is set. Pork chop sandwiches! + raise WSException("Reserved flag in HyBi-07 frame (%d)" % header) +@@ -289,9 +284,6 @@ def parse_hybi07_frames(buf): + # extra length. + length = buf[start + 1] + +- if six.PY2: +- length = ord(length) +- + masked = length & 0x80 + length &= 0x7f + +@@ -342,7 +334,7 @@ def parse_hybi07_frames(buf): + data = unpack(">H", data[:2])[0], data[2:] + else: + # No reason given; use generic data. +- data = 1000, six.b("No reason given") ++ data = 1000, b"No reason given" + + frames.append((opcode, data)) + start += offset + length +@@ -355,7 +347,7 @@ class WebSocketProtocol(ProtocolWrapper): + layer. + """ + +- buf = six.b("") ++ buf = b"" + codec = None + location = "/" + host = "example.com" +@@ -385,7 +377,7 @@ class WebSocketProtocol(ProtocolWrapper): + return ISSLTransport(self.transport, None) is not None + + def writeEncoded(self, data): +- if isinstance(data, six.text_type): ++ if isinstance(data, str): + data = data.encode('utf-8') + self.transport.write(data) + +@@ -528,7 +520,7 @@ class WebSocketProtocol(ProtocolWrapper): + elif "Sec-WebSocket-Protocol" in self.headers: + protocols = self.headers["Sec-WebSocket-Protocol"] + +- if isinstance(protocols, six.string_types): ++ if isinstance(protocols, str): + protocols = [p.strip() for p in protocols.split(',')] + + for protocol in protocols: +@@ -587,7 +579,7 @@ class WebSocketProtocol(ProtocolWrapper): + # These lines look like: + # GET /some/path/to/a/websocket/resource HTTP/1.1 + if self.state == REQUEST: +- separator = six.b("\r\n") ++ separator = b"\r\n" + if separator in self.buf: + request, chaff, self.buf = self.buf.partition(separator) + request = request.decode('utf-8') +@@ -601,7 +593,7 @@ class WebSocketProtocol(ProtocolWrapper): + + elif self.state == NEGOTIATING: + # Check to see if we've got a complete set of headers yet. +- separator = six.b("\r\n\r\n") ++ separator = b"\r\n\r\n" + if separator in self.buf: + head, chaff, self.buf = self.buf.partition(separator) + head = head.decode('utf-8') diff --git a/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb b/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb index 9299539cef..11ce8610fd 100644 --- a/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb +++ b/meta-python/recipes-connectivity/python-txws/python3-txws_0.9.1.bb @@ -4,10 +4,9 @@ HOMEPAGE = "https://github.com/MostAwesomeDude/txWS" LICENSE = "Apache-2.0" LIC_FILES_CHKSUM = "file://LICENSE;md5=76699830db7fa9e897f6a1ad05f98ec8" -DEPENDS = "python3-twisted python3-six python3-vcversioner python3-six-native python3-vcversioner-native" +DEPENDS = "python3-twisted python3-vcversioner python3-vcversioner-native" RDEPENDS:${PN} += " \ - python3-six \ python3-twisted \ " @@ -15,4 +14,5 @@ inherit setuptools3 pypi PYPI_PACKAGE = "txWS" +SRC_URI += "file://0001-drop-the-six-dependency.patch" SRC_URI[sha256sum] = "cb93086095d04a5d70f53a75053f7df478ff37e972c3637fb55ca4a9e6b94679" From patchwork Mon Sep 21 11:54:59 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98799 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id D83D2C982FA for ; Mon, 21 Sep 2026 11:55:28 +0000 (UTC) Received: from mailout05.t-online.de (mailout05.t-online.de [194.25.134.82]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47381.1789991726794818460 for ; Mon, 21 Sep 2026 04:55:27 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=PQFPaUQQ; spf=pass (domain: t-online.de, ip: 194.25.134.82, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout05.t-online.de (Postfix) with SMTP id 645948AC for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccB-04X1zK0; Mon, 21 Sep 2026 13:55:19 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 23/24] python3-wxgtk4: drop the six and attrdict3 dependencies Date: Mon, 21 Sep 2026 13:54:59 +0200 Message-ID: <20260921115500.53770-23-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991719-83FFCA93-43778356/0/0 CLEAN NORMAL X-TOI-MSGID: d6de3698-998f-4a13-8dc1-2c1dc771e203 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=cCoJ+Sv4sdwsFBq/H11RLfDnKqmHgkCrexkFhgx3w7U=; h=From:To:Subject:Date:In-Reply-To:References; b=PQFPaUQQPxiMbt+NJyCBb4TeUuHSHQk85tbZC6q498I5S93h7Jp4dFf1Mv9JjWUe5 aBxZzP9gnMre2U6f/K8hzIzPNkDQ26D2IiyXst43w5TyyuCyAR3d7ytWRZTjeBFPx4 uzLZn2Csn59R7LAN+mgc6BnKcPv0L26u/hyexxjzac+LyxM+pKq4n3KP1ZwlZToykE LUFZxZ0tZttwcAeqRPJmzJJPVDFYECNqKzuk769Z6mx11wqyeVFbKMZc6XqQzBv0Nn 4cad32rnM+4J7cb2fRPbAbcnuHNYadOzqyQM/Ml3qzuZO/HLEp5OK+028JfNRCRsxe dQHRpKVT68pbA== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:55:28 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130136 wxPython's build no longer imports six or attrdict; both native dependencies are stale. Built for intel-corei7-64. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../recipes-devtools/python3-wxgtk4/python3-wxgtk4_4.2.5.bb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/meta-python/recipes-devtools/python3-wxgtk4/python3-wxgtk4_4.2.5.bb b/meta-python/recipes-devtools/python3-wxgtk4/python3-wxgtk4_4.2.5.bb index a1ed78685e..d2f910c4da 100644 --- a/meta-python/recipes-devtools/python3-wxgtk4/python3-wxgtk4_4.2.5.bb +++ b/meta-python/recipes-devtools/python3-wxgtk4/python3-wxgtk4_4.2.5.bb @@ -4,7 +4,7 @@ HOMEPAGE = "https://www.wxpython.org" LICENSE = "BSD-2-Clause AND LGPL-2.0-only AND LGPL-2.0-or-later WITH WxWindows-exception-3.1" LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=102f37a0d23aa258e59e4cc8b5380b35" -DEPENDS = "python3-attrdict3-native python3-six-native wxwidgets-native \ +DEPENDS = "wxwidgets-native \ python3-requests-native wxwidgets \ " From patchwork Mon Sep 21 11:55:00 2026 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Markus Volk X-Patchwork-Id: 98816 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 82C9EC98304 for ; Mon, 21 Sep 2026 11:56:12 +0000 (UTC) Received: from mailout01.t-online.de (mailout01.t-online.de [194.25.134.80]) by mx.groups.io with SMTP id smtpd.msgproc02-g2.47403.1789991769452952304 for ; Mon, 21 Sep 2026 04:56:09 -0700 Authentication-Results: mx.groups.io; dkim=fail reason="dkim: body hash did not verify" header.i=f_l_k@t-online.de header.s=20260216 header.b=n90cfIhm; spf=pass (domain: t-online.de, ip: 194.25.134.80, mailfrom: f_l_k@t-online.de) Received: from fwd91.aul.t-online.de (fwd91.aul.t-online.de [10.223.144.117]) by mailout01.t-online.de (Postfix) with SMTP id 686521C462 for ; Mon, 21 Sep 2026 13:55:22 +0200 (CEST) Received: from intel-corei7-64.fritz.box ([84.163.35.133]) by fwd91.t-online.de with (TLSv1.3:TLS_AES_256_GCM_SHA384 encrypted) esmtp id 1x8ccB-04X1zL0; Mon, 21 Sep 2026 13:55:19 +0200 From: Markus Volk To: openembedded-devel@lists.openembedded.org Subject: [meta-python][PATCH 24/24] python3-attrdict3: remove the recipe Date: Mon, 21 Sep 2026 13:55:00 +0200 Message-ID: <20260921115500.53770-24-f_l_k@t-online.de> X-Mailer: git-send-email 2.55.0 In-Reply-To: <20260921115500.53770-1-f_l_k@t-online.de> References: <20260921115500.53770-1-f_l_k@t-online.de> MIME-Version: 1.0 X-TOI-EXPURGATEID: 150726::1789991719-E8FEEA93-34761AA6/0/0 CLEAN NORMAL X-TOI-MSGID: f6345a0f-ed72-4ce6-b68e-5e9a7d464980 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=t-online.de; s=20260216; t=1789991722; i=f_l_k@t-online.de; bh=+xd15gOAKIwu1X2KYxXBvjOasfTOzIKnvYVkzFCwpMM=; h=From:To:Subject:Date:In-Reply-To:References; b=n90cfIhm2WvgePijDxqefCFS0HB4MKqTYf0Zg8Pl6y91Yvd5+z5yuZkAobZimDC6H c00UsGfcfKmBIKbwJz1UpuBTEGCilPemr7WBOZuNbZ91D4FJLM1ItRXiNPwl+UPWvX 1vMGe38l4rSsgaxHk+W+3+V+jMTz1+lk4TNmajrDUCAE7SmIZpRBYbPxEuV+zH37cj yh1wq6tZMFgpvvgDMsrAJ4DIHAsgfyTf/RyvfmaKWg9yuLX5wbTFofizA9KpgxRWLs 3QF94UsL4z7eWFUY7G+bgC3r2f807A04Sj837BLQLB9qexrPt4/rY9GLgwYPw4BHzh P6RY2kByhSH6w== List-Id: X-Webhook-Received: from 45-33-107-173.ip.linodeusercontent.com [45.33.107.173] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Mon, 21 Sep 2026 11:56:12 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-devel/message/130154 attrdict3 is a fork of the unmaintained attrdict package; its last release is from 2022 and it still relies on six. With the native dependency gone from python3-wxgtk4 nothing in the layers requires it any more, and it is not part of any packagegroup. Remove it instead of carrying a dead Python 2 compatibility package. Verified that no recipe references python3-attrdict3. AI-Generated: Uses Claude Code (Claude Opus 5) Signed-off-by: Markus Volk --- .../python3-attrdict3/python3-attrdict3_2.0.2.bb | 14 -------------- 1 file changed, 14 deletions(-) delete mode 100644 meta-python/recipes-devtools/python3-attrdict3/python3-attrdict3_2.0.2.bb diff --git a/meta-python/recipes-devtools/python3-attrdict3/python3-attrdict3_2.0.2.bb b/meta-python/recipes-devtools/python3-attrdict3/python3-attrdict3_2.0.2.bb deleted file mode 100644 index ee099c7ac9..0000000000 --- a/meta-python/recipes-devtools/python3-attrdict3/python3-attrdict3_2.0.2.bb +++ /dev/null @@ -1,14 +0,0 @@ -SUMMARY = "AttrDict is an MIT-licensed library that provides mapping objects that allow their elements to be accessed both as keys and as attributes" -HOMEPAGE = "https://pypi.org/project/attrdict3/" -LICENSE = "MIT" -LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2b37be7e71ebfc92a94bfacf6b20a1cc" - -DEPENDS = "" - -SRC_URI[sha256sum] = "004c171ca1120cc1755701db99d7fa4944afb1e68950434efdaa542513335fe8" - -inherit pypi setuptools3 - -BBCLASSEXTEND = "native" - -RDEPENDS:${PN} += "python3-six"