subtree updates

meta-openembedded: 7d8115d550..098dc606f9:
  Alex Kiernan (2):
        c-ares: Filter out "Live" tests
        ptest-packagelists-meta-oe.inc Add c-ares to PTESTS_SLOW_META_OE

  Alexander Kanavin (25):
        fontforge: add a readline PACKAGECONFIG
        volume-key: disable python bindings
        audit: disable python bindings as incompatible with python 3.12
        cmpi-bindings: update 1.0.1 -> 1.0.4
        libpwquality: backport a python 3.12 compatibility patch
        mycroft: do not depend on python3-xmlrunner
        python3-xmlrunner: remove the recipe
        system-config-printer: rely on setuptools to obtain distutils copy
        python3-gmpy2: fix python 3.12 issues
        python3-custom-inherit: fix python 3.12 builds
        python3-jsonrpcserver: remove
        python3-oslash: remove
        nmap: disable ndiff
        wireshark: update 4.0.10 -> 4.2.0
        openipmi: update 2.0.32 -> 2.0.34
        libsigrokdecode: add python 3.12 support
        cockpit: add setuptools dependency to bring in distutils copy
        mongodb: skip until python 3.12 fixes are available.
        mercurial: ensure setuptools is present as distutils is no longer (mercurial tries both)
        rwmem: fix python modules packaging
        upm: get disutils copy via setuptools
        python3-kmod: remove the recipe
        hplip: provide setuptools for the distutils copy
        audit: reenable python bindings and bring in distutils via setuptools (needed with python 3.12)
        python3-h5py: backport a cython 3.x compatibility patch

  Christophe Vu-Brugier (1):
        nvme-cli: upgrade 2.6 -> 2.7.1

  Enrico Scholz (1):
        krb5: use PACKAGE_BEFORE_PN

  Fabio Estevam (2):
        i2cdev_git: Remove AUTHOR field
        picocom: Update to 2023-04

  Ilya A. Kriveshko (1):
        srecord: fix install prefix

  Jordan Crouse (2):
        collectd: Remove rrdtool from DEPENDS
        keepalived: Move the sample configuration files to a separate package

  Jose Quaresma (1):
        layer.conf: Add libdevmapper-native PREFERRED_RPROVIDER

  Khem Raj (8):
        mraa: Update to latest tip of trunk
        libcppkafka: Update to tip of trunk
        python3-pydantic-core: Rename the cpython module on musl
        libtinyxml2: Package needed resources to run ptests
        python3-pylint: Ignore failing ptests
        libconfig-general-perl: Enable on musl targets
        tgt: Fix build with musl
        kernel-selftest: remove Wno-alloc-size-larger-than from scripts/Makefile.extrawarn

  Leon Anavi (5):
        ssd1306_git.bb: Add ssd1306_linux
        ssd1306: Update and remove patch
        python3-webargs: Upgrade 8.3.0 -> 8.4.0
        python3-wtforms: Upgrade 3.1.1 -> 3.1.2
        python3-kivy: Upgrade 2.2.1 -> 2.3.0

  Markus Volk (9):
        luajit: upgrade 2.1beta -> 2.1
        gnome-terminal: fix search_provider build
        libplist: make sure rm doesn't fail on nonexistent file
        imagemagick: upgrade 7.1.1-8 -> 7.1.1.26
        mutter: update 45.1 -> 45.3
        gnome-shell: update 45.1 -> 45.3
        gnome-control-center: update 45.1 -> 45.2
        gnome-software: update 45.1 -> 45.3
        gnome-shell-extensions: update 45.1 -> 45.2

  Martin Jansa (1):
        libpwquality: respect PYTHONSITEDIR

  Michael Haener (1):
        mdio-tools: upgrade 1.3.0 -> 1.3.1

  Mingli Yu (2):
        usleep: Make the version consistent
        ipmitool: Make the version consistent

  Peter Marko (1):
        protobuf-c: upgrade 1.4.1 -> 1.5.0

  Richard Leitner (1):
        python3-pytest-cov: add missing python3-coverage dependency

  Robert Yang (1):
        v4l-utils: Add PACKAGECONFIG for v4l2-tracer to fix determinstic build

  Wang Mingyu (52):
        cglm: upgrade 0.9.1 -> 0.9.2
        ctags: upgrade 6.0.20231224.0 -> 6.1.20231231.0
        exiftool: upgrade 12.71 -> 12.72
        feh: upgrade 3.10.1 -> 3.10.2
        libssh: upgrade 0.10.5 -> 0.10.6
        squid: upgrade 6.5 -> 6.6
        imapfilter: upgrade 2.8.1 -> 2.8.2
        redis-plus-plus: upgrade 1.3.10 -> 1.3.11
        python3-netaddr: upgrade 0.9.0 -> 0.10.0
        plocate: upgrade 1.1.19 -> 1.1.20
        python3-cantools: upgrade 39.4.1 -> 39.4.2
        python3-coverage: upgrade 7.3.4 -> 7.4.0
        python3-flask: upgrade 2.3.3 -> 3.0.0
        python3-gspread: upgrade 5.12.3 -> 5.12.4
        python3-pydot: upgrade 1.4.2 -> 2.0.0
        qpdf: upgrade 11.6.4 -> 11.7.0
        thingsboard-gateway: upgrade 3.4.3.1 -> 3.4.4
        python3-pydantic-core: upgrade 2.14.5 -> 2.14.6
        libtinyxml2: upgrade 9.0.0 -> 10.0.0
        adw-gtk3: upgrade 5.1 -> 5.2
        dialog: upgrade 1.3-20231002 -> 1.3-20240101
        ghex: upgrade 45.0 -> 45.1
        jwt-cpp: upgrade 0.6.0 -> 0.7.0
        libcloudproviders: upgrade 0.3.4 -> 0.3.5
        libgedit-gtksourceview: upgrade 299.0.4 -> 299.0.5
        libjcat: upgrade 0.1.14 -> 0.2.0
        libraw: upgrade 0.21.1 -> 0.21.2
        libsass: upgrade 3.6.5 -> 3.6.6
        chrony: upgrade 4.4 -> 4.5
        tgt: upgrade 1.0.83 -> 1.0.90
        lapack: upgrade 3.10.1 -> 3.12.0
        libio-pty-perl: upgrade 1.17 -> 1.20
        webkitgtk3: upgrade 2.42.3 -> 2.42.4
        xmlsec1: upgrade 1.3.2 -> 1.3.3
        python3-argh: upgrade 0.30.5 -> 0.31.0
        python3-cvxopt: upgrade 1.2.7 -> 1.3.2
        python3-sqlalchemy: upgrade 2.0.24 -> 2.0.25
        python3-aiohttp-jinja2: upgrade 1.5.1 -> 1.6
        python3-bitarray: upgrade 2.9.1 -> 2.9.2
        python3-google-api-python-client: upgrade 2.111.0 -> 2.112.0
        python3-google-auth: upgrade 2.25.2 -> 2.26.1
        python3-lz4: upgrade 4.3.2 -> 4.3.3
        python3-pdm: upgrade 2.11.1 -> 2.11.2
        python3-pyflakes: upgrade 3.1.0 -> 3.2.0
        python3-pymisp: upgrade 2.4.182 -> 2.4.183
        python3-pytest-asyncio: upgrade 0.23.2 -> 0.23.3
        python3-traitlets: upgrade 5.14.0 -> 5.14.1
        traceroute: upgrade 2.1.3 -> 2.1.5
        wolfssl: upgrade 5.6.4 -> 5.6.6
        xerces-c: upgrade 3.2.4 -> 3.2.5
        zenity: upgrade 4.0.0 -> 4.0.1
        daq: Fix install conflict when enable multilib.

  Yi Zhao (6):
        vsomeip: upgrade 3.3.8 -> 3.4.10
        libtdb: upgrade 1.4.8 -> 1.4.9
        libtalloc: upgrade 2.4.0 -> 2.4.1
        libtevent: upgrade 0.14.1 -> 0.16.0
        libldb: upgrade 2.7.2 -> 2.8.0
        samba: upgrade 4.18.9 -> 4.19.3

  alperak (10):
        libnvme: upgrade 1.6 -> 1.7.1
        libpaper: upgrade 2.1.0 -> 2.1.2
        onig: upgrade 6.9.8 -> 6.9.9
        clinfo: upgrade 3.0.21.02.21 -> 3.0.23.01.25
        opensc: upgrade 0.23.0 -> 0.24.0
        pcsc-lite: upgrade 2.0.0 -> 2.0.1
        pcsc-tools: upgrade 1.6.2 -> 1.7.1
        wavpack: upgrade 5.1.0 -> 5.6.0
        nginx: fix CVE-2023-44487
        grpc: upgrade 1.59.2 -> 1.60.0

meta-arm: 4d22f982bc..5712422011:
  Emekcan Aras (1):
        arm-bsp/linux-yocto: corstone1000: bump to v6.6%

  Jon Mason (8):
        arm-bsp/trusted-firmware-m: update libmetal and open-amp to a release
        arm-bsp/trusted-firmware-m: update libmetal and open-amp to 2023.04.0
        arm: modify patches to have email headers and correct date fields
        arm-bsp/optee-os: remove unused 3.18 files
        arm/optee-os: use sysroot in CFLAGS
        arm/optee-os: remove unneeded clang patches
        arm/scp-firmware: update git repository to new location
        arm-bsp/u-boot: rebase patches for v2024.01

  Ross Burton (1):
        arm-bsp/linux-yocto: add linux-yocto 6.5 temporarily

meta-raspberrypi: 4c033eb074..b859bc3eca:
  Leon Anavi (1):
        bcm2835: update 1.71 -> 1.73

poky: 4675bbb757..61182659c2:
  Adrian Freihofer (1):
        ref-manual: document cmake-qemu class

  Alassane Yattara (7):
        bitbake: toaster/tests: Bug-fix on TestProjectConfigTab::test_image_recipe_show_rows
        bitbake: toaster/tests: Bug-fix element click intercepted
        bitbake: toaster/tests: Delay driver first action on create new project page
        bitbake: toaster/tests: Setup delay after driver action self.get(url)
        bitbake: toaster/tests: bug-fix "#hint-error-project-name" should be visible
        bitbake: toaster/tests: Bug-fix "element not interactable" in TestLayerDetailsPage::test_edit_layerdetails
        bitbake: toaster/tests: Bug-fix ToasterTable show_rows testcases

  Alexander Kanavin (16):
        speexdsp: enable native variant
        devtool/standard: correctly escape \
        bitbake: fetch/checkstatus(): do not print the URI twice in FetchError exception
        bitbake: fetch/wget/checkstatus(): include the URL in debugging output about status check failure
        bitbake: bitbake/runqueue: rework 'bitbake -S printdiff' logic
        selftest/sstatetests: fix up printdiff test to match rework of printdiff logic
        selftest/sstatetest: re-enable gcc printdiff test
        python3-pyyaml: make compatible with cython 3.x
        python3-cython: update 0.29.36 -> 3.0.7
        taglib: fix upstream version check
        libpcre2: fix upstream version check
        icon-naming-utils: take tarball from debian
        selftest/sstatetests: include fetcher diagnostics into CDN test failure message
        selftest/SStatePrintdiff: ensure all base signatures are present in sstate in test_image_minimal_vs_base_do_configure
        shadow: update 4.13 -> 4.14.2
        shadow: link executables statically for -native variant

  Chen Qi (5):
        gawk: upgrade from 5.2.2 to 5.3.0
        systemd-bootchart: upgrade from 234 to 235
        dbus-wait: bump srcrev
        sudo: upgrade from 1.9.15p2 to 1.9.15p5
        util-linux/util-linux-libuuid: ugprade from 2.39.2 to 2.39.3

  Corentin Guillevic (1):
        systemd: add udev-bash-completion package

  Enguerrand de Ribaucourt (1):
        manuals: document VSCode extension

  Fabio Estevam (5):
        libusb1: Do not match on -rc versions
        usbutils: Update to version 017
        u-boot: Upgrade to 2024.01
        kmscube: Change header file to <GLES3/gl3.h>
        kmscube: Add package version

  Ilya A. Kriveshko (1):
        dev-manual: update license manifest path

  Jamin Lin (1):
        devtool: modify: fix exception

  Joshua Watt (1):
        syslinux: Allow mtools to be optional

  Jörg Sommer (1):
        documentation: Add UBOOT_BINARY, extend UBOOT_CONFIG

  Khem Raj (6):
        connman: Fix build with musl
        rpm: Fix build with musl
        gawk: Add coreutils to rdeps for ptests package
        tcl: Fix prepending to run-ptest script
        coreutils: Ignore line-bytes.sh and no-allocate tests on musl
        opkg-utils: Backport fix to drop --numeric-owner parameter

  Lee Chee Yang (1):
        migration-guide: add release notes for 4.3.2

  Mark Asselstine (2):
        bitbake: server/process: catch and expand multiprocessing connection exceptions
        bitbake: ui/knotty: properly handle exceptions when calling runCommand()

  Maxin B. John (1):
        ref-manual: classes: remove insserv bbclass

  Michael Opdenacker (2):
        contributor-guide: use "apt" instead of "aptitude"
        ref-manual: update tested and supported distros

  Mikko Rapeli (1):
        oeqa systemd.py: settle() using "running" or "degraded" state

  Ming Liu (1):
        qemu.bbclass: fix a python TypeError

  Mingli Yu (2):
        openssh: Add PACKAGECONFIG option to customize sshd mode
        gptfdisk: Make the version consistent

  Richard Purdie (2):
        bitbake: ast: Fix EXPORT_FUNCTIONS bug
        bitbake: runqueue: Fix runall all bug

  Robert Yang (2):
        bitbake: bitbake: event: Inject empty lines to make code match lineno in filename
        bitbake: bitbake: tests/event: Add test_lineno_in_eventhandler

  Rodrigo M. Duarte (1):
        linux-firmware: Fix the linux-firmware-bcm4373 FILES variable

  Ross Burton (12):
        glib-2.0: no need to depend on target gtk-doc
        autotools: append to EXTRA_AUTORECONF
        autotools: don't exclude gtkdocize
        gtk-doc: fix DEPENDS
        gtk-doc: remove obsolete logic
        gtk-doc: don't use docdir set in environment in gtkdocize
        gtk-doc: don't manually call gtkdocize
        kmod: fix configure with autopoint calling gtkdocize
        util-linux: enable gtk-doc
        meson: use pkg-config in the cross files
        cairo: upgrade to 1.18.0
        xmlcatalog: limit to native recipes only

  Simone Weiß (2):
        dev-manual: start.rst: update use of Download page
        glibc: Set status for CVE-2023-5156 & CVE-2023-0687

  Tim Orling (2):
        python3-bcrypt: upgrade 4.1.1 -> 4.1.2
        python3-attrs: enable ptest

  Wang Mingyu (13):
        ffmpeg: upgrade 6.1 -> 6.1.1
        meson: upgrade 1.3.0 -> 1.3.1
        ccache: upgrade 4.8.3 -> 4.9
        mesa: upgrade 23.3.1 -> 23.3.2
        subversion: upgrade 1.14.2 -> 1.14.3
        python3-dbusmock: upgrade 0.30.1 -> 0.30.2
        python3-hatch-fancy-pypi-readme: upgrade 23.1.0 -> 24.1.0
        python3-hypothesis: upgrade 6.92.1 -> 6.92.2
        python3-pycryptodome: upgrade 3.19.0 -> 3.19.1
        python3-pycryptodomex: upgrade 3.19.0 -> 3.19.1
        python3-pytest: upgrade 7.4.3 -> 7.4.4
        python3-attrs: upgrade 22.1.0 -> 23.2.0
        python3-lxml: upgrade 4.9.4 -> 45.0.0

  William Lyu (1):
        elfutils: Update license information

  Yang Xu (1):
        rootfs.py: check depmodwrapper execution result

  Yi Zhao (2):
        libcap-ng: upgrade 0.8.3 -> 0.8.4
        libcap-ng-python: upgrade 0.8.3 -> 0.8.4

  david d zuhn (1):
        rng-tools: remove obsolete build time dependency on sysfsutils

Change-Id: I43eda44bb889eedb45fae65caf2e5ed8d2c9de39
Signed-off-by: Patrick Williams <patrick@stwcx.xyz>
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/files/0001-versioneer.py-do-not-use-SafeConfigParser.patch b/meta-openembedded/meta-python/recipes-devtools/python/files/0001-versioneer.py-do-not-use-SafeConfigParser.patch
new file mode 100644
index 0000000..34caaca
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/files/0001-versioneer.py-do-not-use-SafeConfigParser.patch
@@ -0,0 +1,29 @@
+From 0920bd21ceab75bc4b655c571a37835526dd2468 Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Wed, 27 Dec 2023 15:12:19 +0100
+Subject: [PATCH] versioneer.py: do not use SafeConfigParser
+
+This has been deprecated for a long time, and finally removed in python 3.12
+
+Upstream-Status: Submitted [https://github.com/rsokl/custom_inherit/pull/49]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ versioneer.py | 4 ++--
+ 1 file changed, 2 insertions(+), 2 deletions(-)
+
+diff --git a/versioneer.py b/versioneer.py
+index 64fea1c..3aa5da3 100644
+--- a/versioneer.py
++++ b/versioneer.py
+@@ -339,9 +339,9 @@ def get_config_from_root(root):
+     # configparser.NoOptionError (if it lacks "VCS="). See the docstring at
+     # the top of versioneer.py for instructions on writing your setup.cfg .
+     setup_cfg = os.path.join(root, "setup.cfg")
+-    parser = configparser.SafeConfigParser()
++    parser = configparser.ConfigParser()
+     with open(setup_cfg, "r") as f:
+-        parser.readfp(f)
++        parser.read_file(f)
+     VCS = parser.get("versioneer", "VCS")  # mandatory
+ 
+     def get(parser, name):
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp-jinja2_1.5.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp-jinja2_1.6.bb
similarity index 75%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp-jinja2_1.5.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp-jinja2_1.6.bb
index 4c4ed3f..694f577 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp-jinja2_1.5.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-aiohttp-jinja2_1.6.bb
@@ -3,7 +3,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=29dca541e03964615590ca7b50392d97"
 
-SRC_URI[sha256sum] = "8d149b2a57d91f794b33a394ea5bc66b567f38c74a5a6a9477afc2450f105c01"
+SRC_URI[sha256sum] = "a3a7ff5264e5bca52e8ae547bbfd0761b72495230d438d05b6c0915be619b0e2"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.31.0.bb
similarity index 85%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.31.0.bb
index 78e6149..24a579f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.30.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-argh_0.31.0.bb
@@ -12,10 +12,10 @@
 
 LICENSE = "LGPL-3.0-or-later"
 LIC_FILES_CHKSUM = "file://COPYING.LESSER;md5=3000208d539ec061b899bce1d9ce9404 \
-                    file://README.rst;beginline=261;endline=275;md5=39ec83a704aed9f33618c5d04e478a08 \
+                    file://README.rst;beginline=261;endline=275;md5=ba124578a6853962d5038eabef535d12 \
                     "
 
-SRC_URI[sha256sum] = "b37dfd617a09d19a4a7bcaed0e060b288bc7ac8dfdc0facf886a49a25ff33728"
+SRC_URI[sha256sum] = "b93093544309ddbfe6c73dc9bfd60dbc4acecef39f3f464774b3084a1ec5d7b0"
 
 inherit pypi python_flit_core
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.2.bb
similarity index 80%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.2.bb
index 0d7107a..7d7be0b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-bitarray_2.9.2.bb
@@ -4,7 +4,7 @@
 LICENSE = "PSF-2.0"
 LIC_FILES_CHKSUM = "file://PKG-INFO;beginline=8;endline=8;md5=2ad702cdcd49e8d2ac01d7e7d0810d2d"
 
-SRC_URI[sha256sum] = "912efbeed6d8b155c8e8c37464f79d75b1de58936c0f29ffb599ce95af5563f2"
+SRC_URI[sha256sum] = "a8f286a51a32323715d77755ed959f94bef13972e9a2fe71b609e40e6d27957e"
 
 inherit setuptools3 pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.2.bb
similarity index 85%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.2.bb
index e26405d..ad2025e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cantools_39.4.2.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=d9aa4ec07de78abae21c490c9ffe61bd"
 
-SRC_URI[sha256sum] = "98c4d007a6d9803c6433c743c0240e73de930530f8255e1e21d2e20e8991a30b"
+SRC_URI[sha256sum] = "8069a8f473bb1679990bea0903f3a22d58df5495aebbf09f58d49f627511b619"
 
 PYPI_PACKAGE = "cantools"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.4.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.4.0.bb
similarity index 82%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.4.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.4.0.bb
index 42bc9fc..cb1041c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.3.4.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-coverage_7.4.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE.txt;md5=2ee41112a44fe7014dce33e26468ba93"
 
-SRC_URI[sha256sum] = "020d56d2da5bc22a0e00a5b0d54597ee91ad72446fa4cf1b97c35022f6b6dbf0"
+SRC_URI[sha256sum] = "707c0f58cb1712b8809ece32b68996ee1e609f71bd14615bd8f87a1293cb610e"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-custom-inherit_2.4.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-custom-inherit_2.4.1.bb
index 478abbf..e7409f7 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-custom-inherit_2.4.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-custom-inherit_2.4.1.bb
@@ -5,6 +5,7 @@
 
 PYPI_PACKAGE = "custom_inherit"
 
+SRC_URI += "file://0001-versioneer.py-do-not-use-SafeConfigParser.patch"
 SRC_URI[sha256sum] = "7052eb337bcce83551815264391cc4efc2bf70b295a3c52aba64f1ab57c3a8a2"
 
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.3.2.bb
similarity index 78%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.3.2.bb
index 70e9831..d7d4b22 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.2.7.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-cvxopt_1.3.2.bb
@@ -1,11 +1,11 @@
 SUMMARY = "Convex optimization package"
 HOMEPAGE = "http://cvxopt.org"
 LICENSE = "GPL-3.0-only"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ba1a8a73d8ebea5c47a1173aaf476ddd"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=66ec4f8e53d3e733a8c26d5ca3830fba"
 
 SRC_URI = "git://github.com/cvxopt/cvxopt;protocol=https;branch=master"
 
-SRCREV = "d5a21cf1da62e4269176384b1ff62edac5579f94"
+SRCREV = "3b718ee560b3b97d6255c55f0ed7f64cb4b72082"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.3.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_3.0.0.bb
similarity index 89%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.3.3.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-flask_3.0.0.bb
index 99a61f1..e0afd37 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_2.3.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-flask_3.0.0.bb
@@ -6,7 +6,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=ffeffa59c90c9c4a033c7574f8f3fb75"
 
-SRC_URI[sha256sum] = "09c347a92aa7ff4a8e7f3206795f30d826654baf38b873d0744cd571ca609efc"
+SRC_URI[sha256sum] = "cfadcdb638b609361d29ec22360d6070a77d7463dcb3ab08d2c2f2f168845f58"
 
 UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/Flask"
 UPSTREAM_CHECK_REGEX = "/Flask/(?P<pver>(\d+[\.\-_]*)+)"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2/0001-src-fix-python-3.12-builds.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2/0001-src-fix-python-3.12-builds.patch
new file mode 100644
index 0000000..1171322
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2/0001-src-fix-python-3.12-builds.patch
@@ -0,0 +1,263 @@
+From 43f132103cedfd92b85173bcdacfbabd5916d9fc Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Wed, 27 Dec 2023 14:52:16 +0100
+Subject: [PATCH] src: fix python 3.12 builds
+
+This is a backport for 3.1.x versions provided separately in https://github.com/aleaxit/gmpy/issues/446
+
+Upstream-Status: Inappropriate [can be dropped when 2.2.x is released]
+
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ src/gmpy2_convert.h       |  21 +++++++
+ src/gmpy2_convert_gmp.c   | 129 +++++++++++++-------------------------
+ src/gmpy2_convert_utils.c |   2 +-
+ 3 files changed, 65 insertions(+), 87 deletions(-)
+
+diff --git a/src/gmpy2_convert.h b/src/gmpy2_convert.h
+index f887d47..3e8cb2b 100644
+--- a/src/gmpy2_convert.h
++++ b/src/gmpy2_convert.h
+@@ -142,6 +142,27 @@ extern "C" {
+ #define IS_TYPE_COMPLEX_ONLY(x)     ((x > OBJ_TYPE_REAL) && \
+                                      (x < OBJ_TYPE_COMPLEX))
+ 
++/* Compatibility macros (to work with PyLongObject internals).
++ */
++
++#if PY_VERSION_HEX >= 0x030C0000
++#  define TAG_FROM_SIGN_AND_SIZE(is_neg, size) ((is_neg?2:(size==0)) | (((size_t)size) << 3))
++#  define _PyLong_SetSignAndDigitCount(obj, is_neg, size) (obj->long_value.lv_tag = TAG_FROM_SIGN_AND_SIZE(is_neg, size))
++#elif PY_VERSION_HEX >= 0x030900A4
++#  define _PyLong_SetSignAndDigitCount(obj, is_neg, size) (Py_SET_SIZE(obj, (is_neg?-1:1)*size))
++#else
++#  define _PyLong_SetSignAndDigitCount(obj, is_neg, size) (Py_SIZE(obj) = (is_neg?-1:1)*size)
++#endif
++
++#if PY_VERSION_HEX >= 0x030C0000
++#  define GET_OB_DIGIT(obj) obj->long_value.ob_digit
++#  define _PyLong_IsNegative(obj) ((obj->long_value.lv_tag & 3) == 2)
++#  define _PyLong_DigitCount(obj) (obj->long_value.lv_tag >> 3)
++#else
++#  define GET_OB_DIGIT(obj) obj->ob_digit
++#  define _PyLong_IsNegative(obj) (Py_SIZE(obj) < 0)
++#  define _PyLong_DigitCount(obj) (_PyLong_IsNegative(obj)? -Py_SIZE(obj):Py_SIZE(obj))
++#endif
+ 
+ /* Since the macros are used in gmpy2's codebase, these functions are skipped
+  * until they are needed for the C API in the future.
+diff --git a/src/gmpy2_convert_gmp.c b/src/gmpy2_convert_gmp.c
+index cf0891e..8b8df81 100644
+--- a/src/gmpy2_convert_gmp.c
++++ b/src/gmpy2_convert_gmp.c
+@@ -59,33 +59,24 @@ GMPy_MPZ_From_PyIntOrLong(PyObject *obj, CTXT_Object *context)
+     }
+ #endif
+ 
+-    switch (Py_SIZE(templong)) {
+-    case -1:
+-        mpz_set_si(result->z, -(sdigit)templong->ob_digit[0]);
++    len = _PyLong_DigitCount(templong);
++    negative = _PyLong_IsNegative(templong);
++
++    switch (len) {
++    case 1:
++        mpz_set_si(result->z, (sdigit)GET_OB_DIGIT(templong)[0]);
+         break;
+     case 0:
+         mpz_set_si(result->z, 0);
+         break;
+-    case 1:
+-        mpz_set_si(result->z, templong->ob_digit[0]);
+-        break;
+     default:
+-        mpz_set_si(result->z, 0);
+-
+-        if (Py_SIZE(templong) < 0) {
+-            len = - Py_SIZE(templong);
+-            negative = 1;
+-        } else {
+-            len = Py_SIZE(templong);
+-            negative = 0;
+-        }
+-
+-        mpz_import(result->z, len, -1, sizeof(templong->ob_digit[0]), 0,
+-                   sizeof(templong->ob_digit[0])*8 - PyLong_SHIFT, templong->ob_digit);
++        mpz_import(result->z, len, -1, sizeof(GET_OB_DIGIT(templong)[0]), 0,
++                   sizeof(GET_OB_DIGIT(templong)[0])*8 - PyLong_SHIFT,
++                   GET_OB_DIGIT(templong));
++    }
+ 
+-        if (negative) {
+-            mpz_neg(result->z, result->z);
+-        }
++    if (negative) {
++        mpz_neg(result->z, result->z);
+     }
+     return result;
+ }
+@@ -105,33 +96,24 @@ mpz_set_PyIntOrLong(mpz_t z, PyObject *obj)
+     }
+ #endif
+ 
+-    switch (Py_SIZE(templong)) {
+-    case -1:
+-        mpz_set_si(z, -(sdigit)templong->ob_digit[0]);
++    len = _PyLong_DigitCount(templong);
++    negative = _PyLong_IsNegative(templong);
++
++    switch (len) {
++    case 1:
++        mpz_set_si(z, (sdigit)GET_OB_DIGIT(templong)[0]);
+         break;
+     case 0:
+         mpz_set_si(z, 0);
+         break;
+-    case 1:
+-        mpz_set_si(z, templong->ob_digit[0]);
+-        break;
+     default:
+-        mpz_set_si(z, 0);
+-
+-        if (Py_SIZE(templong) < 0) {
+-            len = - Py_SIZE(templong);
+-            negative = 1;
+-        } else {
+-            len = Py_SIZE(templong);
+-            negative = 0;
+-        }
+-
+-        mpz_import(z, len, -1, sizeof(templong->ob_digit[0]), 0,
+-                   sizeof(templong->ob_digit[0])*8 - PyLong_SHIFT, templong->ob_digit);
++        mpz_import(z, len, -1, sizeof(GET_OB_DIGIT(templong)[0]), 0,
++                   sizeof(GET_OB_DIGIT(templong)[0])*8 - PyLong_SHIFT,
++                   GET_OB_DIGIT(templong));
++    }
+ 
+-        if (negative) {
+-            mpz_neg(z, z);
+-        }
++    if (negative) {
++        mpz_neg(z, z);
+     }
+     return;
+ }
+@@ -186,12 +168,7 @@ GMPy_PyLong_From_MPZ(MPZ_Object *obj, CTXT_Object *context)
+ 
+     /* Assume gmp uses limbs as least as large as the builtin longs do */
+ 
+-    if (mpz_sgn(obj->z) < 0) {
+-        negative = 1;
+-    } else {
+-        negative = 0;
+-    }
+-
++    negative = mpz_sgn(obj->z) < 0;
+     size = (mpz_sizeinbase(obj->z, 2) + PyLong_SHIFT - 1) / PyLong_SHIFT;
+ 
+     if (!(result = _PyLong_New(size))) {
+@@ -200,31 +177,20 @@ GMPy_PyLong_From_MPZ(MPZ_Object *obj, CTXT_Object *context)
+         /* LCOV_EXCL_STOP */
+     }
+ 
+-    mpz_export(result->ob_digit, &count, -1, sizeof(result->ob_digit[0]), 0,
+-               sizeof(result->ob_digit[0])*8 - PyLong_SHIFT, obj->z);
++    mpz_export(GET_OB_DIGIT(result), &count, -1, sizeof(GET_OB_DIGIT(result)[0]), 0,
++               sizeof(GET_OB_DIGIT(result)[0])*8 - PyLong_SHIFT, obj->z);
+ 
+     if (count == 0) {
+-        result->ob_digit[0] = 0;
++        GET_OB_DIGIT(result)[0] = 0;
+     }
+ 
+     /* long_normalize() is file-static so we must reimplement it */
+     /* longobjp = long_normalize(longobjp); */
+-    while ((size>0) && (result->ob_digit[size-1] == 0)) {
++    while ((size>0) && (GET_OB_DIGIT(result)[size-1] == 0)) {
+         size--;
+     }
+-#if PY_VERSION_HEX >= 0x030900A4
+-    Py_SET_SIZE(result, size);
+-#else
+-    Py_SIZE(result) = size;
+-#endif
+ 
+-    if (negative) {
+-#if PY_VERSION_HEX >= 0x030900A4
+-        Py_SET_SIZE(result, - Py_SIZE(result));
+-#else
+-        Py_SIZE(result) = - Py_SIZE(result);
+-#endif
+-    }
++    _PyLong_SetSignAndDigitCount(result, negative, size);
+     return (PyObject*)result;
+ }
+ 
+@@ -476,33 +442,24 @@ GMPy_XMPZ_From_PyIntOrLong(PyObject *obj, CTXT_Object *context)
+     }
+ #endif
+ 
+-    switch (Py_SIZE(templong)) {
+-    case -1:
+-        mpz_set_si(result->z, -(sdigit)templong->ob_digit[0]);
++    len = _PyLong_DigitCount(templong);
++    negative = _PyLong_IsNegative(templong);
++
++    switch (len) {
++    case 1:
++        mpz_set_si(result->z, (sdigit)GET_OB_DIGIT(templong)[0]);
+         break;
+     case 0:
+         mpz_set_si(result->z, 0);
+         break;
+-    case 1:
+-        mpz_set_si(result->z, templong->ob_digit[0]);
+-        break;
+     default:
+-        mpz_set_si(result->z, 0);
+-
+-        if (Py_SIZE(templong) < 0) {
+-            len = - Py_SIZE(templong);
+-            negative = 1;
+-        } else {
+-            len = Py_SIZE(templong);
+-            negative = 0;
+-        }
+-
+-        mpz_import(result->z, len, -1, sizeof(templong->ob_digit[0]), 0,
+-                   sizeof(templong->ob_digit[0])*8 - PyLong_SHIFT, templong->ob_digit);
++        mpz_import(result->z, len, -1, sizeof(GET_OB_DIGIT(templong)[0]), 0,
++                   sizeof(GET_OB_DIGIT(templong)[0])*8 - PyLong_SHIFT,
++                   GET_OB_DIGIT(templong));
++    }
+ 
+-        if (negative) {
+-            mpz_neg(result->z, result->z);
+-        }
++    if (negative) {
++        mpz_neg(result->z, result->z);
+     }
+     return result;
+ }
+@@ -639,7 +596,7 @@ GMPy_MPQ_From_PyStr(PyObject *s, int base, CTXT_Object *context)
+     }
+ 
+     cp = PyBytes_AsString(ascii_str);
+-    
++
+     {
+         char *whereslash = strchr((char*)cp, '/');
+         char *wheredot = strchr((char*)cp, '.');
+diff --git a/src/gmpy2_convert_utils.c b/src/gmpy2_convert_utils.c
+index d676eaf..8908d17 100644
+--- a/src/gmpy2_convert_utils.c
++++ b/src/gmpy2_convert_utils.c
+@@ -123,7 +123,7 @@ static unsigned long
+ GMPy_Integer_AsUnsignedLongWithType_v2(PyObject *x, int xtype)
+ {
+     if IS_TYPE_PyInteger(xtype) {
+-        if (Py_SIZE(x) < 0) {
++        if (_PyLong_IsNegative(((PyLongObject*)x))) {
+             VALUE_ERROR("n must be > 0");
+             return (unsigned long)-1;
+         }
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.5.bb
index 9a66af9..d9e9bd5 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-gmpy2_2.1.5.bb
@@ -10,5 +10,6 @@
 SRC_URI[sha256sum] = "bc297f1fd8c377ae67a4f493fc0f926e5d1b157e5c342e30a4d84dc7b9f95d96"
 
 inherit pypi setuptools3 python3native
+SRC_URI += "file://0001-src-fix-python-3.12-builds.patch"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.111.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.112.0.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.111.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.112.0.bb
index 8961351..b1614b8 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.111.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-api-python-client_2.112.0.bb
@@ -4,7 +4,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=86d3f3a95c324c9479bd8986968f4327"
 
-SRC_URI[sha256sum] = "3a45a53c031478d1c82c7162dd25c9a965247bca6bd438af0838a9d9b8219405"
+SRC_URI[sha256sum] = "c3bcb5fd70d57f4c94b30c0dbeade53c216febfbf1d771eeb1a2fa74bd0d6756"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.25.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.26.1.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.25.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.26.1.bb
index 2f52761..1a4913b 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.25.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-google-auth_2.26.1.bb
@@ -5,7 +5,7 @@
 
 inherit pypi setuptools3
 
-SRC_URI[sha256sum] = "42f707937feb4f5e5a39e6c4f343a17300a459aaf03141457ba505812841cc40"
+SRC_URI[sha256sum] = "54385acca5c0fbdda510cd8585ba6f3fcb06eeecf8a6ecca39d3ee148b092590"
 
 RDEPENDS:${PN} += "\
     ${PYTHON_PN}-asyncio \
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py/0001-Fix-Cython-3-compatibility.patch b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py/0001-Fix-Cython-3-compatibility.patch
new file mode 100644
index 0000000..aba62dd
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py/0001-Fix-Cython-3-compatibility.patch
@@ -0,0 +1,796 @@
+From 1e02dbe5533d679b9ef064078a303607a7d0542a Mon Sep 17 00:00:00 2001
+From: Alexander Kanavin <alex@linutronix.de>
+Date: Fri, 29 Dec 2023 14:33:38 +0100
+Subject: [PATCH] Fix Cython 3 compatibility
+
+Upstream-Status: Backport [https://github.com/h5py/h5py/pull/2345/commits]
+Signed-off-by: Alexander Kanavin <alex@linutronix.de>
+---
+ benchmarks/benchmark_slicing.py    | 12 ++++----
+ docs/conf.py                       |  2 +-
+ docs/high/dataset.rst              |  4 +--
+ docs/high/file.rst                 |  6 ++--
+ docs/requirements-rtd.txt          |  5 ++--
+ docs/vds.rst                       |  2 +-
+ docs/whatsnew/3.0.rst              |  2 +-
+ docs/whatsnew/3.7.rst              |  4 +--
+ h5py/_errors.pxd                   | 10 +++----
+ h5py/_errors.pyx                   |  4 +--
+ h5py/_hl/base.py                   |  4 +--
+ h5py/_hl/dataset.py                |  8 ++---
+ h5py/_hl/dims.py                   |  3 +-
+ h5py/_hl/files.py                  |  2 +-
+ h5py/_locks.pxi                    |  6 ++--
+ h5py/_proxy.pyx                    |  4 +--
+ h5py/_selector.pyx                 |  2 +-
+ h5py/api_compat.h                  | 13 ++++----
+ h5py/api_types_hdf5.pxd            | 48 +++++++++++++++---------------
+ h5py/h5fd.pyx                      | 38 ++++++++++++++++-------
+ h5py/h5p.pyx                       |  4 +--
+ h5py/h5t.pyx                       |  2 +-
+ h5py/tests/test_attrs_data.py      |  2 +-
+ h5py/tests/test_big_endian_file.py |  4 +--
+ h5py/tests/test_dataset.py         |  4 +--
+ h5py/tests/test_file.py            |  6 ++--
+ h5py/tests/test_file_alignment.py  |  4 +--
+ h5py/tests/test_group.py           |  4 +--
+ h5py/tests/test_selections.py      |  2 +-
+ pylintrc                           |  2 +-
+ pyproject.toml                     |  2 +-
+ setup_configure.py                 |  2 +-
+ tox.ini                            |  2 +-
+ 33 files changed, 116 insertions(+), 103 deletions(-)
+
+diff --git a/benchmarks/benchmark_slicing.py b/benchmarks/benchmark_slicing.py
+index e9a34dad..b833f012 100644
+--- a/benchmarks/benchmark_slicing.py
++++ b/benchmarks/benchmark_slicing.py
+@@ -7,7 +7,7 @@ import logging
+ logger = logging.getLogger(__name__)
+ import h5py
+ 
+-#Needed for mutithreading:
++#Needed for multithreading:
+ from queue import Queue
+ from threading import Thread, Event
+ import multiprocessing
+@@ -173,8 +173,8 @@ class SlicingBenchmark:
+ 
+ if __name__ == "__main__":
+     logging.basicConfig(level=logging.INFO)
+-    benckmark = SlicingBenchmark()
+-    benckmark.setup()
+-    benckmark.time_sequential_reads()
+-    benckmark.time_threaded_reads()
+-    benckmark.teardown()
++    benchmark = SlicingBenchmark()
++    benchmark.setup()
++    benchmark.time_sequential_reads()
++    benchmark.time_threaded_reads()
++    benchmark.teardown()
+diff --git a/docs/conf.py b/docs/conf.py
+index 93b23939..a0f6c1ac 100644
+--- a/docs/conf.py
++++ b/docs/conf.py
+@@ -109,7 +109,7 @@ pygments_style = 'sphinx'
+ 
+ # The theme to use for HTML and HTML Help pages.  See the documentation for
+ # a list of builtin themes.
+-html_theme = 'default'
++html_theme = 'sphinx_rtd_theme'
+ 
+ # Theme options are theme-specific and customize the look and feel of a theme
+ # further.  For a list of options available for each theme, see the
+diff --git a/docs/high/dataset.rst b/docs/high/dataset.rst
+index 0f27284f..cb75fffe 100644
+--- a/docs/high/dataset.rst
++++ b/docs/high/dataset.rst
+@@ -58,7 +58,7 @@ the requested ``dtype``.
+ Reading & writing data
+ ----------------------
+ 
+-HDF5 datasets re-use the NumPy slicing syntax to read and write to the file.
++HDF5 datasets reuse the NumPy slicing syntax to read and write to the file.
+ Slice specifications are translated directly to HDF5 "hyperslab"
+ selections, and are a fast and efficient way to access data in the file. The
+ following slicing arguments are recognized:
+@@ -464,7 +464,7 @@ Reference
+         >>> dset = f["MyDS"]
+         >>> f.close()
+         >>> if dset:
+-        ...     print("datset accessible")
++        ...     print("dataset accessible")
+         ... else:
+         ...     print("dataset inaccessible")
+         dataset inaccessible
+diff --git a/docs/high/file.rst b/docs/high/file.rst
+index 484498ce..e757fe1a 100644
+--- a/docs/high/file.rst
++++ b/docs/high/file.rst
+@@ -392,7 +392,7 @@ Data alignment
+ When creating datasets within files, it may be advantageous to align the offset
+ within the file itself. This can help optimize read and write times if the data
+ become aligned with the underlying hardware, or may help with parallelism with
+-MPI. Unfortunately, aligning small variables to large blocks can leave alot of
++MPI. Unfortunately, aligning small variables to large blocks can leave a lot of
+ empty space in a file. To this effect, application developers are left with two
+ options to tune the alignment of data within their file.  The two variables
+ ``alignment_threshold`` and ``alignment_interval``  in the :class:`File`
+@@ -415,7 +415,7 @@ number of regions. Setting a small value can reduce the overall file size,
+ especially in combination with the ``libver`` option. This controls how the
+ overall data and metadata are laid out within the file.
+ 
+-For more information, see the offical HDF5 documentation `H5P_SET_META_BLOCK_SIZE
++For more information, see the official HDF5 documentation `H5P_SET_META_BLOCK_SIZE
+ <https://portal.hdfgroup.org/display/HDF5/H5P_SET_META_BLOCK_SIZE>`_.
+ 
+ Reference
+@@ -497,7 +497,7 @@ Reference
+             Only available with HDF5 >= 1.12.1 or 1.10.x >= 1.10.7.
+     :param alignment_threshold: Together with ``alignment_interval``, this
+             property ensures that any file object greater than or equal
+-            in size to the alignement threshold (in bytes) will be
++            in size to the alignment threshold (in bytes) will be
+             aligned on an address which is a multiple of alignment interval.
+     :param alignment_interval: This property should be used in conjunction with
+             ``alignment_threshold``. See the description above. For more
+diff --git a/docs/requirements-rtd.txt b/docs/requirements-rtd.txt
+index e67a3eee..52096927 100644
+--- a/docs/requirements-rtd.txt
++++ b/docs/requirements-rtd.txt
+@@ -1,3 +1,2 @@
+-sphinx==4.3.0
+-sphinx_rtd_theme==1.0.0
+-readthedocs-sphinx-search==0.1.1
++sphinx==7.2.6
++sphinx_rtd_theme==1.3.0
+diff --git a/docs/vds.rst b/docs/vds.rst
+index a9a7c7f6..bd47ad1c 100644
+--- a/docs/vds.rst
++++ b/docs/vds.rst
+@@ -124,7 +124,7 @@ Reference
+    slice it to indicate which regions should be used in the virtual dataset.
+ 
+    When `creating a virtual dataset <creating_vds_>`_, paths to sources present
+-   in the same file are changed to a ".", refering to the current file (see
++   in the same file are changed to a ".", referring to the current file (see
+    `H5Pset_virtual <https://portal.hdfgroup.org/display/HDF5/H5P_SET_VIRTUAL>`_).
+    This will keep such sources valid in case the file is renamed.
+ 
+diff --git a/docs/whatsnew/3.0.rst b/docs/whatsnew/3.0.rst
+index db30ad66..ff3c2bef 100644
+--- a/docs/whatsnew/3.0.rst
++++ b/docs/whatsnew/3.0.rst
+@@ -44,7 +44,7 @@ New features
+   See also the deprecation related to the ``external`` argument.
+ * Support for setting file space strategy at file creation. Includes option to
+   persist empty space tracking between sessions. See :class:`.File` for details.
+-* More efficient writing when assiging a scalar to a chunked dataset, when the
++* More efficient writing when assigning a scalar to a chunked dataset, when the
+   number of elements to write is no more than the size of one chunk.
+ * Introduced support for the split :ref:`file driver <file_driver>`
+   (:pr:`1468`).
+diff --git a/docs/whatsnew/3.7.rst b/docs/whatsnew/3.7.rst
+index 27790254..2e822d68 100644
+--- a/docs/whatsnew/3.7.rst
++++ b/docs/whatsnew/3.7.rst
+@@ -19,7 +19,7 @@ New features
+   include it. Alternatively, you can :ref:`build h5py from source <source_install>`
+   against an HDF5 build with the direct driver enabled.
+ * The :class:`.File` constructor contains two new parameters ``alignment_threshold``,
+-  and ``alignment_interval`` controling the data alignment within the HDF5
++  and ``alignment_interval`` controlling the data alignment within the HDF5
+   file (:pr:`2040`).
+ * :meth:`~.Group.create_dataset` and :meth:`~.Group.require_dataset` now accept
+   parameters ``efile_prefix`` and ``virtual_prefix`` to set a filesystem path
+@@ -40,7 +40,7 @@ Bug fixes
+   attributes with ``track_order=True``.
+ * Fix for building with mpi4py on Python 3.10 (:pr:`2101`).
+ * Fixed fancy indexing with a boolean array for a single dimension (:pr:`2079`).
+-* Avoid returning unitialised memory when reading from a chunked dataset with
++* Avoid returning uninitialised memory when reading from a chunked dataset with
+   missing chunks and no fill value (:pr:`2076`).
+ * Enable setting of fillvalue for datasets with variable length string dtype
+   (:pr:`2044`).
+diff --git a/h5py/_errors.pxd b/h5py/_errors.pxd
+index df9c1bbe..3cba6307 100644
+--- a/h5py/_errors.pxd
++++ b/h5py/_errors.pxd
+@@ -23,7 +23,7 @@ cdef extern from "hdf5.h":
+             H5E_ARGS,                   # invalid arguments to routine
+             H5E_RESOURCE,               # resource unavailable
+             H5E_INTERNAL,               # Internal error (too specific to document)
+-            H5E_FILE,                   # file Accessability
++            H5E_FILE,                   # file Accessibility
+             H5E_IO,                     # Low-level I/O
+             H5E_FUNC,                   # function Entry/Exit
+             H5E_ATOM,                   # object Atom
+@@ -121,7 +121,7 @@ cdef extern from "hdf5.h":
+             # No error
+             H5E_NONE_MINOR     # No error
+ 
+-            # File accessability errors
++            # File accessibility errors
+             H5E_FILEEXISTS     # File already exists
+             H5E_FILEOPEN       # File already open
+             H5E_CANTCREATE     # Unable to create file
+@@ -207,7 +207,7 @@ cdef extern from "hdf5.h":
+             H5E_ARGS,                   # invalid arguments to routine
+             H5E_RESOURCE,               # resource unavailable
+             H5E_INTERNAL,               # Internal error (too specific to document)
+-            H5E_FILE,                   # file Accessability
++            H5E_FILE,                   # file Accessibility
+             H5E_IO,                     # Low-level I/O
+             H5E_FUNC,                   # function Entry/Exit
+             H5E_ID,                     # object ID
+@@ -305,7 +305,7 @@ cdef extern from "hdf5.h":
+             # No error
+             H5E_NONE_MINOR     # No error
+ 
+-            # File accessability errors
++            # File accessibility errors
+             H5E_FILEEXISTS     # File already exists
+             H5E_FILEOPEN       # File already open
+             H5E_CANTCREATE     # Unable to create file
+@@ -425,4 +425,4 @@ ctypedef struct err_cookie:
+ cdef err_cookie set_error_handler(err_cookie handler)
+ 
+ # Set the default error handler set by silence_errors/unsilence_errors
+-cdef void set_default_error_handler() nogil
++cdef void set_default_error_handler() noexcept nogil
+diff --git a/h5py/_errors.pyx b/h5py/_errors.pyx
+index c3bd184e..2a7524b2 100644
+--- a/h5py/_errors.pyx
++++ b/h5py/_errors.pyx
+@@ -94,7 +94,7 @@ cdef struct err_data_t:
+     H5E_error_t err
+     int n
+ 
+-cdef herr_t walk_cb(unsigned int n, const H5E_error_t *desc, void *e) nogil noexcept:
++cdef herr_t walk_cb(unsigned int n, const H5E_error_t *desc, void *e) noexcept nogil:
+ 
+     cdef err_data_t *ee = <err_data_t*>e
+ 
+@@ -168,7 +168,7 @@ cdef err_cookie _error_handler  # Store error handler used by h5py
+ _error_handler.func = NULL
+ _error_handler.data = NULL
+ 
+-cdef void set_default_error_handler() nogil:
++cdef void set_default_error_handler() noexcept nogil:
+     """Set h5py's current default error handler"""
+     H5Eset_auto(<hid_t>H5E_DEFAULT, _error_handler.func, _error_handler.data)
+ 
+diff --git a/h5py/_hl/base.py b/h5py/_hl/base.py
+index cad37053..9d261c90 100644
+--- a/h5py/_hl/base.py
++++ b/h5py/_hl/base.py
+@@ -20,7 +20,7 @@ import posixpath
+ import numpy as np
+ 
+ # The high-level interface is serialized; every public API function & method
+-# is wrapped in a lock.  We re-use the low-level lock because (1) it's fast,
++# is wrapped in a lock.  We reuse the low-level lock because (1) it's fast,
+ # and (2) it eliminates the possibility of deadlocks due to out-of-order
+ # lock acquisition.
+ from .._objects import phil, with_phil
+@@ -524,7 +524,7 @@ def product(nums):
+ # Daniel Greenfeld, BSD license), where it is attributed to bottle (Copyright
+ # (c) 2009-2022, Marcel Hellkamp, MIT license).
+ 
+-class cached_property(object):
++class cached_property:
+     def __init__(self, func):
+         self.__doc__ = getattr(func, "__doc__")
+         self.func = func
+diff --git a/h5py/_hl/dataset.py b/h5py/_hl/dataset.py
+index b69aba48..77b202d2 100644
+--- a/h5py/_hl/dataset.py
++++ b/h5py/_hl/dataset.py
+@@ -334,10 +334,10 @@ class ChunkIterator:
+         self._layout = dset.chunks
+         if source_sel is None:
+             # select over entire dataset
+-            slices = []
+-            for dim in range(rank):
+-                slices.append(slice(0, self._shape[dim]))
+-            self._sel = tuple(slices)
++            self._sel = tuple(
++                slice(0, self._shape[dim])
++                for dim in range(rank)
++            )
+         else:
+             if isinstance(source_sel, slice):
+                 self._sel = (source_sel,)
+diff --git a/h5py/_hl/dims.py b/h5py/_hl/dims.py
+index d3c9206b..0cf4c9f3 100644
+--- a/h5py/_hl/dims.py
++++ b/h5py/_hl/dims.py
+@@ -53,8 +53,7 @@ class DimensionProxy(base.CommonStateObject):
+ 
+     @with_phil
+     def __iter__(self):
+-        for k in self.keys():
+-            yield k
++        yield from self.keys()
+ 
+     @with_phil
+     def __len__(self):
+diff --git a/h5py/_hl/files.py b/h5py/_hl/files.py
+index aa4fb78d..bfcf3098 100644
+--- a/h5py/_hl/files.py
++++ b/h5py/_hl/files.py
+@@ -480,7 +480,7 @@ class File(Group):
+ 
+         alignment_threshold
+             Together with ``alignment_interval``, this property ensures that
+-            any file object greater than or equal in size to the alignement
++            any file object greater than or equal in size to the alignment
+             threshold (in bytes) will be aligned on an address which is a
+             multiple of alignment interval.
+ 
+diff --git a/h5py/_locks.pxi b/h5py/_locks.pxi
+index bc8b2dd9..1ec4e2fc 100644
+--- a/h5py/_locks.pxi
++++ b/h5py/_locks.pxi
+@@ -63,7 +63,7 @@ cdef class FastRLock:
+         return self._owner == pythread.PyThread_get_thread_ident()
+ 
+ 
+-cdef inline bint lock_lock(FastRLock lock, long current_thread, bint blocking) nogil:
++cdef inline bint lock_lock(FastRLock lock, long current_thread, bint blocking) noexcept nogil:
+     # Note that this function *must* hold the GIL when being called.
+     # We just use 'nogil' in the signature to make sure that no Python
+     # code execution slips in that might free the GIL
+@@ -83,7 +83,7 @@ cdef inline bint lock_lock(FastRLock lock, long current_thread, bint blocking) n
+         lock, current_thread,
+         pythread.WAIT_LOCK if blocking else pythread.NOWAIT_LOCK)
+ 
+-cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) nogil:
++cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) noexcept nogil:
+     # Note that this function *must* hold the GIL when being called.
+     # We just use 'nogil' in the signature to make sure that no Python
+     # code execution slips in that might free the GIL
+@@ -111,7 +111,7 @@ cdef bint _acquire_lock(FastRLock lock, long current_thread, int wait) nogil:
+     lock._count = 1
+     return 1
+ 
+-cdef inline void unlock_lock(FastRLock lock) nogil:
++cdef inline void unlock_lock(FastRLock lock) noexcept nogil:
+     # Note that this function *must* hold the GIL when being called.
+     # We just use 'nogil' in the signature to make sure that no Python
+     # code execution slips in that might free the GIL
+diff --git a/h5py/_proxy.pyx b/h5py/_proxy.pyx
+index 46b4fe0d..e40504f5 100644
+--- a/h5py/_proxy.pyx
++++ b/h5py/_proxy.pyx
+@@ -241,7 +241,7 @@ ctypedef struct h5py_scatter_t:
+     void* buf
+ 
+ cdef herr_t h5py_scatter_cb(void* elem, hid_t type_id, unsigned ndim,
+-                const hsize_t *point, void *operator_data) nogil except -1:
++                const hsize_t *point, void *operator_data) except -1 nogil:
+     cdef h5py_scatter_t* info = <h5py_scatter_t*>operator_data
+ 
+     memcpy(elem, (<char*>info[0].buf)+((info[0].i)*(info[0].elsize)),
+@@ -252,7 +252,7 @@ cdef herr_t h5py_scatter_cb(void* elem, hid_t type_id, unsigned ndim,
+     return 0
+ 
+ cdef herr_t h5py_gather_cb(void* elem, hid_t type_id, unsigned ndim,
+-                const hsize_t *point, void *operator_data) nogil except -1:
++                const hsize_t *point, void *operator_data) except -1 nogil:
+     cdef h5py_scatter_t* info = <h5py_scatter_t*>operator_data
+ 
+     memcpy((<char*>info[0].buf)+((info[0].i)*(info[0].elsize)), elem,
+diff --git a/h5py/_selector.pyx b/h5py/_selector.pyx
+index 8b858c82..69970176 100644
+--- a/h5py/_selector.pyx
++++ b/h5py/_selector.pyx
+@@ -341,7 +341,7 @@ cdef class Reader:
+ 
+             arr = PyArray_ZEROS(arr_rank, arr_shape, self.np_typenum, 0)
+             if not self.native_byteorder:
+-                arr = arr.newbyteorder()
++                arr = arr.view(arr.dtype.newbyteorder())
+         finally:
+             efree(arr_shape)
+ 
+diff --git a/h5py/api_compat.h b/h5py/api_compat.h
+index 52917f4d..a359e827 100644
+--- a/h5py/api_compat.h
++++ b/h5py/api_compat.h
+@@ -24,7 +24,6 @@ typedef void *PyMPI_MPI_Message;
+ #include <stddef.h>
+ #include "Python.h"
+ #include "numpy/arrayobject.h"
+-#include "hdf5.h"
+ 
+ /* The HOFFSET macro can't be used from Cython. */
+ 
+@@ -35,14 +34,14 @@ typedef void *PyMPI_MPI_Message;
+ #define h5py_size_n256 (sizeof(npy_complex256))
+ #endif
+ 
+-#define h5py_offset_n64_real (HOFFSET(npy_complex64, real))
+-#define h5py_offset_n64_imag (HOFFSET(npy_complex64, imag))
+-#define h5py_offset_n128_real (HOFFSET(npy_complex128, real))
+-#define h5py_offset_n128_imag (HOFFSET(npy_complex128, imag))
++#define h5py_offset_n64_real (0)
++#define h5py_offset_n64_imag (sizeof(float))
++#define h5py_offset_n128_real (0)
++#define h5py_offset_n128_imag (sizeof(double))
+ 
+ #ifdef NPY_COMPLEX256
+-#define h5py_offset_n256_real (HOFFSET(npy_complex256, real))
+-#define h5py_offset_n256_imag (HOFFSET(npy_complex256, imag))
++#define h5py_offset_n256_real (0)
++#define h5py_offset_n256_imag (sizeof(long double))
+ #endif
+ 
+ #endif
+diff --git a/h5py/api_types_hdf5.pxd b/h5py/api_types_hdf5.pxd
+index a198f105..099e0f58 100644
+--- a/h5py/api_types_hdf5.pxd
++++ b/h5py/api_types_hdf5.pxd
+@@ -257,27 +257,27 @@ cdef extern from "hdf5.h":
+       herr_t  (*sb_encode)(H5FD_t *file, char *name, unsigned char *p)
+       herr_t  (*sb_decode)(H5FD_t *f, const char *name, const unsigned char *p)
+       size_t  fapl_size
+-      void *  (*fapl_get)(H5FD_t *file)
+-      void *  (*fapl_copy)(const void *fapl)
+-      herr_t  (*fapl_free)(void *fapl)
++      void *  (*fapl_get)(H5FD_t *file) except *
++      void *  (*fapl_copy)(const void *fapl) except *
++      herr_t  (*fapl_free)(void *fapl) except -1
+       size_t  dxpl_size
+       void *  (*dxpl_copy)(const void *dxpl)
+       herr_t  (*dxpl_free)(void *dxpl)
+-      H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr)
+-      herr_t  (*close)(H5FD_t *file)
++      H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr) except *
++      herr_t  (*close)(H5FD_t *file) except -1
+       int     (*cmp)(const H5FD_t *f1, const H5FD_t *f2)
+       herr_t  (*query)(const H5FD_t *f1, unsigned long *flags)
+       herr_t  (*get_type_map)(const H5FD_t *file, H5FD_mem_t *type_map)
+       haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size)
+       herr_t  (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size)
+-      haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type)
+-      herr_t  (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr)
+-      haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type)
++      haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type) noexcept
++      herr_t  (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr) noexcept
++      haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) except -1
+       herr_t  (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle)
+-      herr_t  (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer)
+-      herr_t  (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer)
+-      herr_t  (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
+-      herr_t  (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
++      herr_t  (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer) except *
++      herr_t  (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer) except *
++      herr_t  (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except -1
++      herr_t  (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except -1
+       herr_t  (*lock)(H5FD_t *file, hbool_t rw)
+       herr_t  (*unlock)(H5FD_t *file)
+       H5FD_mem_t fl_map[<int>H5FD_MEM_NTYPES]
+@@ -295,27 +295,27 @@ cdef extern from "hdf5.h":
+       herr_t  (*sb_encode)(H5FD_t *file, char *name, unsigned char *p)
+       herr_t  (*sb_decode)(H5FD_t *f, const char *name, const unsigned char *p)
+       size_t  fapl_size
+-      void *  (*fapl_get)(H5FD_t *file)
+-      void *  (*fapl_copy)(const void *fapl)
+-      herr_t  (*fapl_free)(void *fapl)
++      void *  (*fapl_get)(H5FD_t *file) except *
++      void *  (*fapl_copy)(const void *fapl) except *
++      herr_t  (*fapl_free)(void *fapl) except -1
+       size_t  dxpl_size
+       void *  (*dxpl_copy)(const void *dxpl)
+       herr_t  (*dxpl_free)(void *dxpl)
+-      H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr)
+-      herr_t  (*close)(H5FD_t *file)
++      H5FD_t *(*open)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr) except *
++      herr_t  (*close)(H5FD_t *file) except -1
+       int     (*cmp)(const H5FD_t *f1, const H5FD_t *f2)
+       herr_t  (*query)(const H5FD_t *f1, unsigned long *flags)
+       herr_t  (*get_type_map)(const H5FD_t *file, H5FD_mem_t *type_map)
+       haddr_t (*alloc)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, hsize_t size)
+       herr_t  (*free)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl_id, haddr_t addr, hsize_t size)
+-      haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type)
+-      herr_t  (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr)
+-      haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type)
++      haddr_t (*get_eoa)(const H5FD_t *file, H5FD_mem_t type) noexcept
++      herr_t  (*set_eoa)(H5FD_t *file, H5FD_mem_t type, haddr_t addr) noexcept
++      haddr_t (*get_eof)(const H5FD_t *file, H5FD_mem_t type) except -1
+       herr_t  (*get_handle)(H5FD_t *file, hid_t fapl, void**file_handle)
+-      herr_t  (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer)
+-      herr_t  (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer)
+-      herr_t  (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
+-      herr_t  (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing)
++      herr_t  (*read)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, void *buffer) except *
++      herr_t  (*write)(H5FD_t *file, H5FD_mem_t type, hid_t dxpl, haddr_t addr, size_t size, const void *buffer) except *
++      herr_t  (*flush)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except -1
++      herr_t  (*truncate)(H5FD_t *file, hid_t dxpl_id, hbool_t closing) except -1
+       herr_t  (*lock)(H5FD_t *file, hbool_t rw)
+       herr_t  (*unlock)(H5FD_t *file)
+       H5FD_mem_t fl_map[<int>H5FD_MEM_NTYPES]
+diff --git a/h5py/h5fd.pyx b/h5py/h5fd.pyx
+index e9746057..d39cf68f 100644
+--- a/h5py/h5fd.pyx
++++ b/h5py/h5fd.pyx
+@@ -144,10 +144,10 @@ cdef herr_t H5FD_fileobj_close(H5FD_fileobj_t *f) except -1 with gil:
+     stdlib_free(f)
+     return 0
+ 
+-cdef haddr_t H5FD_fileobj_get_eoa(const H5FD_fileobj_t *f, H5FD_mem_t type):
++cdef haddr_t H5FD_fileobj_get_eoa(const H5FD_fileobj_t *f, H5FD_mem_t type) noexcept nogil:
+     return f.eoa
+ 
+-cdef herr_t H5FD_fileobj_set_eoa(H5FD_fileobj_t *f, H5FD_mem_t type, haddr_t addr):
++cdef herr_t H5FD_fileobj_set_eoa(H5FD_fileobj_t *f, H5FD_mem_t type, haddr_t addr) noexcept nogil:
+     f.eoa = addr
+     return 0
+ 
+@@ -191,22 +191,38 @@ cdef herr_t H5FD_fileobj_flush(H5FD_fileobj_t *f, hid_t dxpl, hbool_t closing) e
+ cdef H5FD_class_t info
+ memset(&info, 0, sizeof(info))
+ 
++# Cython doesn't support "except X" in casting definition currently
++ctypedef herr_t (*file_free_func_ptr)(void *) except -1
++
++ctypedef herr_t (*file_close_func_ptr)(H5FD_t *) except -1
++ctypedef haddr_t (*file_get_eoa_func_ptr)(const H5FD_t *, H5FD_mem_t) noexcept
++ctypedef herr_t (*file_set_eof_func_ptr)(H5FD_t *, H5FD_mem_t, haddr_t) noexcept
++ctypedef haddr_t (*file_get_eof_func_ptr)(const H5FD_t *, H5FD_mem_t) except -1
++ctypedef herr_t (*file_read_func_ptr)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, void*) except -1
++ctypedef herr_t (*file_write_func_ptr)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, const void*) except -1
++ctypedef herr_t (*file_truncate_func_ptr)(H5FD_t *, hid_t, hbool_t) except -1
++ctypedef herr_t (*file_flush_func_ptr)(H5FD_t *, hid_t, hbool_t) except -1
++
++
+ info.name = 'fileobj'
+ info.maxaddr = libc.stdint.SIZE_MAX - 1
+ info.fc_degree = H5F_CLOSE_WEAK
+ info.fapl_size = sizeof(PyObject *)
+ info.fapl_get = <void *(*)(H5FD_t *)>H5FD_fileobj_fapl_get
+ info.fapl_copy = <void *(*)(const void *)>H5FD_fileobj_fapl_copy
+-info.fapl_free = <herr_t (*)(void *)>H5FD_fileobj_fapl_free
++
++info.fapl_free = <file_free_func_ptr>H5FD_fileobj_fapl_free
++
+ info.open = <H5FD_t *(*)(const char *name, unsigned flags, hid_t fapl, haddr_t maxaddr)>H5FD_fileobj_open
+-info.close = <herr_t (*)(H5FD_t *)>H5FD_fileobj_close
+-info.get_eoa = <haddr_t (*)(const H5FD_t *, H5FD_mem_t)>H5FD_fileobj_get_eoa
+-info.set_eoa = <herr_t (*)(H5FD_t *, H5FD_mem_t, haddr_t)>H5FD_fileobj_set_eoa
+-info.get_eof = <haddr_t (*)(const H5FD_t *, H5FD_mem_t)>H5FD_fileobj_get_eof
+-info.read = <herr_t (*)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, void *)>H5FD_fileobj_read
+-info.write = <herr_t (*)(H5FD_t *, H5FD_mem_t, hid_t, haddr_t, size_t, const void *)>H5FD_fileobj_write
+-info.truncate = <herr_t (*)(H5FD_t *, hid_t, hbool_t)>H5FD_fileobj_truncate
+-info.flush = <herr_t (*)(H5FD_t *, hid_t, hbool_t)>H5FD_fileobj_flush
++
++info.close = <file_close_func_ptr>H5FD_fileobj_close
++info.get_eoa = <file_get_eoa_func_ptr>H5FD_fileobj_get_eoa
++info.set_eoa = <file_set_eof_func_ptr>H5FD_fileobj_set_eoa
++info.get_eof = <file_get_eof_func_ptr>H5FD_fileobj_get_eof
++info.read = <file_read_func_ptr>H5FD_fileobj_read
++info.write = <file_write_func_ptr>H5FD_fileobj_write
++info.truncate = <file_truncate_func_ptr>H5FD_fileobj_truncate
++info.flush = <file_flush_func_ptr>H5FD_fileobj_flush
+ # H5FD_FLMAP_DICHOTOMY
+ info.fl_map = [H5FD_MEM_SUPER,  # default
+                H5FD_MEM_SUPER,  # super
+diff --git a/h5py/h5p.pyx b/h5py/h5p.pyx
+index 779ea1b5..dc8bf65a 100644
+--- a/h5py/h5p.pyx
++++ b/h5py/h5p.pyx
+@@ -1177,7 +1177,7 @@ cdef class PropFAID(PropInstanceID):
+                 size_t block_size   IN: File system block size
+                 size_t cbuf_size    IN: Copy buffer size
+ 
+-            Properites with value of 0 indicate that the HDF5 library should
++            Properties with value of 0 indicate that the HDF5 library should
+             choose the value.
+             """
+             H5Pset_fapl_direct(self.id, alignment, block_size, cbuf_size)
+@@ -1761,7 +1761,7 @@ cdef class PropOCID(PropCreateID):
+ 
+         max_compact -- maximum number of attributes to be stored in compact storage(default:8)
+         must be greater than or equal to min_dense
+-        min_dense  -- minmum number of attributes to be stored in dense storage(default:6)
++        min_dense  -- minimum number of attributes to be stored in dense storage(default:6)
+ 
+         """
+         H5Pset_attr_phase_change(self.id, max_compact, min_dense)
+diff --git a/h5py/h5t.pyx b/h5py/h5t.pyx
+index e7aae14f..b9d7e74d 100644
+--- a/h5py/h5t.pyx
++++ b/h5py/h5t.pyx
+@@ -1938,7 +1938,7 @@ def check_dtype(**kwds):
+ 
+     vlen = dtype
+         If the dtype represents an HDF5 vlen, returns the Python base class.
+-        Currently only builting string vlens (str) are supported.  Returns
++        Currently only built-in string vlens (str) are supported.  Returns
+         None if the dtype does not represent an HDF5 vlen.
+ 
+     enum = dtype
+diff --git a/h5py/tests/test_attrs_data.py b/h5py/tests/test_attrs_data.py
+index 56481ca0..5083a1aa 100644
+--- a/h5py/tests/test_attrs_data.py
++++ b/h5py/tests/test_attrs_data.py
+@@ -262,7 +262,7 @@ class TestEmpty(BaseAttrs):
+         self.assertTrue(is_empty_dataspace(h5a.open(self.f.id, b'y')))
+ 
+     def test_modify(self):
+-        with self.assertRaises(IOError):
++        with self.assertRaises(OSError):
+             self.f.attrs.modify('x', 1)
+ 
+     def test_values(self):
+diff --git a/h5py/tests/test_big_endian_file.py b/h5py/tests/test_big_endian_file.py
+index 4d81de01..170b5bcc 100644
+--- a/h5py/tests/test_big_endian_file.py
++++ b/h5py/tests/test_big_endian_file.py
+@@ -24,14 +24,14 @@ def test_vlen_big_endian():
+         assert dset[4] == 1.2
+         assert dset.dtype == "<f8"
+ 
+-        # Same float values with big endianess
++        # Same float values with big endianness
+         assert f["DSBEfloat"][0] == 3.14
+         assert f["DSBEfloat"].dtype == ">f8"
+ 
+         assert f["DSLEint"][0] == 1
+         assert f["DSLEint"].dtype == "<u8"
+ 
+-        # Same int values with big endianess
++        # Same int values with big endianness
+         assert f["DSBEint"][0] == 1
+         assert f["DSBEint"].dtype == ">i8"
+ 
+diff --git a/h5py/tests/test_dataset.py b/h5py/tests/test_dataset.py
+index e104dd53..0ffa5c80 100644
+--- a/h5py/tests/test_dataset.py
++++ b/h5py/tests/test_dataset.py
+@@ -1939,9 +1939,9 @@ class TestCommutative(BaseDataset):
+         dset = self.f.create_dataset("test", shape, dtype=float,
+                                      data=np.random.rand(*shape))
+ 
+-        # grab a value from the elements, ie dset[0]
++        # grab a value from the elements, ie dset[0, 0]
+         # check that mask arrays are commutative wrt ==, !=
+-        val = np.float64(dset[0])
++        val = np.float64(dset[0, 0])
+ 
+         assert np.all((val == dset) == (dset == val))
+         assert np.all((val != dset) == (dset != val))
+diff --git a/h5py/tests/test_file.py b/h5py/tests/test_file.py
+index b47d408e..1aa38731 100644
+--- a/h5py/tests/test_file.py
++++ b/h5py/tests/test_file.py
+@@ -326,7 +326,7 @@ class TestDrivers(TestCase):
+         # could be an integer multiple of 512
+         #
+         # To allow HDF5 to do the heavy lifting for different platform,
+-        # We didn't provide any argumnets to the first call
++        # We didn't provide any arguments to the first call
+         # and obtained HDF5's default values there.
+ 
+         # Testing creation with a few different property lists
+@@ -639,9 +639,9 @@ class TestUnicode(TestCase):
+         Modes 'r' and 'r+' do not create files even when given unicode names
+         """
+         fname = self.mktemp(prefix=chr(0x201a))
+-        with self.assertRaises(IOError):
++        with self.assertRaises(OSError):
+             File(fname, 'r')
+-        with self.assertRaises(IOError):
++        with self.assertRaises(OSError):
+             File(fname, 'r+')
+ 
+ 
+diff --git a/h5py/tests/test_file_alignment.py b/h5py/tests/test_file_alignment.py
+index c280bb76..da13ee04 100644
+--- a/h5py/tests/test_file_alignment.py
++++ b/h5py/tests/test_file_alignment.py
+@@ -50,7 +50,7 @@ class TestFileAlignment(TestCase):
+         alignment_interval = 4096
+ 
+         for shape in [
+-            (1033,),  # A prime number above the thresold
++            (1033,),  # A prime number above the threshold
+             (1000,),  # Exactly equal to the threshold
+             (1001,),  # one above the threshold
+         ]:
+@@ -75,7 +75,7 @@ class TestFileAlignment(TestCase):
+         alignment_interval = 1024
+ 
+         for shape in [
+-            (881,),  # A prime number below the thresold
++            (881,),  # A prime number below the threshold
+             (999,),  # Exactly one below the threshold
+         ]:
+             fname = self.mktemp()
+diff --git a/h5py/tests/test_group.py b/h5py/tests/test_group.py
+index 328c352a..4af1fb1f 100644
+--- a/h5py/tests/test_group.py
++++ b/h5py/tests/test_group.py
+@@ -771,7 +771,7 @@ class TestExternalLinks(TestCase):
+         with self.assertRaises(KeyError):
+             self.f['ext']
+ 
+-    # I would prefer IOError but there's no way to fix this as the exception
++    # I would prefer OSError but there's no way to fix this as the exception
+     # class is determined by HDF5.
+     def test_exc_missingfile(self):
+         """ KeyError raised when attempting to open missing file """
+@@ -844,7 +844,7 @@ class TestExtLinkBugs(TestCase):
+                 try:
+                     if x:
+                         x.close()
+-                except IOError:
++                except OSError:
+                     pass
+             return w
+         orig_name = self.mktemp()
+diff --git a/h5py/tests/test_selections.py b/h5py/tests/test_selections.py
+index 0b1722d7..01f6dcb7 100644
+--- a/h5py/tests/test_selections.py
++++ b/h5py/tests/test_selections.py
+@@ -65,7 +65,7 @@ class TestTypeGeneration(BaseSelection):
+         self.assertEqual(out, np.dtype('i'))
+         self.assertEqual(format, np.dtype( [('a','i')] ))
+ 
+-        # Field does not apear in named typed
++        # Field does not appear in named typed
+         with self.assertRaises(ValueError):
+             out, format = sel2.read_dtypes(dt, ('j', 'k'))
+ 
+diff --git a/pylintrc b/pylintrc
+index 045df2f7..2401d3b0 100644
+--- a/pylintrc
++++ b/pylintrc
+@@ -44,7 +44,7 @@ confidence=
+ # can either give multiple identifiers separated by comma (,) or put this
+ # option multiple times (only on the command line, not in the configuration
+ # file where it should appear only once).You can also use "--disable=all" to
+-# disable everything first and then reenable specific checks. For example, if
++# disable everything first and then re-enable specific checks. For example, if
+ # you want to run only the similarities checker, you can use "--disable=all
+ # --enable=similarities". If you want to run only the classes checker, but have
+ # no Warning level messages displayed, use"--disable=all --enable=classes
+diff --git a/pyproject.toml b/pyproject.toml
+index ee573d2f..717200ef 100644
+--- a/pyproject.toml
++++ b/pyproject.toml
+@@ -1,6 +1,6 @@
+ [build-system]
+ requires = [
+-    "Cython >=0.29.31,<1",
++    "Cython >=0.29.31,<4",
+     "oldest-supported-numpy",
+     "pkgconfig",
+     "setuptools >=61",
+diff --git a/setup_configure.py b/setup_configure.py
+index 0fba53ba..c3b86a64 100644
+--- a/setup_configure.py
++++ b/setup_configure.py
+@@ -165,7 +165,7 @@ class BuildConfig:
+         try:
+             if pkgconfig.exists(pc_name):
+                 pc = pkgconfig.parse(pc_name)
+-        except EnvironmentError:
++        except OSError:
+             if os.name != 'nt':
+                 print(
+                     "Building h5py requires pkg-config unless the HDF5 path "
+diff --git a/tox.ini b/tox.ini
+index 0efb88a6..86a176dd 100644
+--- a/tox.ini
++++ b/tox.ini
+@@ -65,7 +65,7 @@ skip_install=True
+ package_env = DUMMY NON-EXISTENT ENV NAME
+ changedir=docs
+ deps=
+-    sphinx
++    -r docs/requirements-rtd.txt
+ commands=
+     sphinx-build -W -b html -d {envtmpdir}/doctrees .  {envtmpdir}/html
+ 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.10.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.10.0.bb
index e772106..8a91585 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.10.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-h5py_3.10.0.bb
@@ -6,7 +6,8 @@
 
 SRC_URI[sha256sum] = "d93adc48ceeb33347eb24a634fb787efc7ae4644e6ea4ba733d099605045c049"
 
-SRC_URI += "file://0001-setup_build.py-avoid-absolute-path.patch"
+SRC_URI += "file://0001-setup_build.py-avoid-absolute-path.patch \
+            file://0001-Fix-Cython-3-compatibility.patch"
 
 inherit pkgconfig pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.9.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.9.bb
deleted file mode 100644
index 7e058a7..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-jsonrpcserver_5.0.9.bb
+++ /dev/null
@@ -1,23 +0,0 @@
-SUMMARY = "Library to process JSON-RPC requests"
-HOMEPAGE = "https://github.com/explodinglabs/jsonrpcserver"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=61b63ea9d36f6fb63ddaaaac8265304f"
-
-SRC_URI[sha256sum] = "a71fb2cfa18541c80935f60987f92755d94d74141248c7438847b96eee5c4482"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "\
-    python3-apply-defaults \
-    python3-asyncio \
-    python3-core \
-    python3-json \
-    python3-jsonschema \
-    python3-logging \
-    python3-netclient \
-    python3-pkgutil \
-    python3-oslash \
-    python3-typing-extensions \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.2.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.3.0.bb
similarity index 93%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.2.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.3.0.bb
index a72ee14..9e791c6 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.2.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-kivy_2.3.0.bb
@@ -2,7 +2,7 @@
     that make use of innovative user interfaces, such as multi-touch apps."
 HOMEPAGE = "https://kivy.org/"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=ed5cd0f2cfda42852c332e3b88c85fea"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=6d3bc49400e35d5a2279d14c40dcfb09"
 
 inherit setuptools3 pkgconfig features_check
 PIP_INSTALL_PACKAGE = "Kivy"
@@ -15,7 +15,7 @@
            file://0001-add-support-for-glesv2.patch \
            "
 
-SRCREV = "344768bfefd2e8f5302cc9dfb8ca41991ce6f7e7"
+SRCREV = "9ef218027178115a66b417ae34b21f488bdd3617"
 
 S = "${WORKDIR}/git"
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-kmod_0.9.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-kmod_0.9.1.bb
deleted file mode 100644
index 52e1cf6..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-kmod_0.9.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-SUMMARY = "Python bindings for kmod/libkmod."
-HOMEPAGE = "https://github.com/agrover/python-kmod"
-SECTION = "devel/python"
-LICENSE = "LGPL-2.1-only"
-LIC_FILES_CHKSUM = "file://COPYING;md5=6d62c2454850386a2ffe44f72db83d74"
-
-inherit pypi setuptools3
-
-RECIPE_NO_UPDATE_REASON = "Version 0.9.2 is broken when using latest build machinery for C extensions"
-SRC_URI[sha256sum] = "f3bf829059bf88eca22f4f549e17aa316cdaa14302bf2ba49ddeee60cea109ff"
-
-DEPENDS += " \
-    kmod \
-    python3-cython-native \
-"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.3.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.3.3.bb
similarity index 89%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.3.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.3.3.bb
index f0c8684..746926d 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.3.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-lz4_4.3.3.bb
@@ -11,7 +11,7 @@
 
 SRC_URI += "file://run-ptest"
 
-SRC_URI[sha256sum] = "e1431d84a9cfb23e6773e72078ce8e65cad6745816d4cbf9ae67da5ea419acda"
+SRC_URI[sha256sum] = "01fe674ef2889dbb9899d8a67361e0c4a2c833af5aeb37dd505727cf5d2a131e"
 
 inherit pkgconfig pypi python_setuptools_build_meta ptest
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.9.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.10.0.bb
similarity index 75%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.9.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.10.0.bb
index 471d939..15350e9 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.9.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-netaddr_0.10.0.bb
@@ -2,7 +2,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=e6345d695ffe3776f68a56fe7962db44"
 
-SRC_URI[sha256sum] = "7b46fa9b1a2d71fd5de9e4a3784ef339700a53a08c8040f08baf5f1194da0128"
+SRC_URI[sha256sum] = "4c30c54adf4ea4318b3c055ea3d8c7f6554a50aa2cd8aea4605a23caa0b0229e"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-oslash_0.6.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-oslash_0.6.3.bb
deleted file mode 100644
index b926484..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-oslash_0.6.3.bb
+++ /dev/null
@@ -1,22 +0,0 @@
-SUMMARY = "Functors, Applicatives, And Monads in Python"
-HOMEPAGE = "https://github.com/dbrattli/oslash"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://README.md;md5=ed79d2637878dfe97de89e357b5c02dd"
-
-DEPENDS += "\
-    ${PYTHON_PN}-pip-native \
-    ${PYTHON_PN}-pytest-runner-native\
-"
-
-SRC_URI[sha256sum] = "868aeb58a656f2ed3b73d9dd6abe387b20b74fc9413d3e8653b615b15bf728f3"
-
-PYPI_PACKAGE = "OSlash"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += " \
-    python3-json \
-    python3-typing-extensions \
-"
-
-BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.2.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.2.bb
index 5ff6ffc..f8a593c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pdm_2.11.2.bb
@@ -4,7 +4,7 @@
 SECTION = "devel/python"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=2eb31a2cc1a758c34b499f287dd04ef2"
 
-SRC_URI[sha256sum] = "b10bc4e5394856f1639ddc9bc754d9c26323ec5b828a135c6ed35f935b054b83"
+SRC_URI[sha256sum] = "5b31255c48d4aca596c73fb872a82848cbe8ff92f008712a9a264455247063ee"
 
 inherit pypi python_setuptools_build_meta
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.5.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.6.bb
similarity index 70%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.5.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.6.bb
index 01f180c..e58ee7f 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.5.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pydantic-core_2.14.6.bb
@@ -8,7 +8,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=ab599c188b4a314d2856b3a55030c75c"
 
-SRC_URI[sha256sum] = "6d30226dfc816dd0fdf120cae611dd2215117e4f9b124af8c60ab9093b6e8e71"
+SRC_URI[sha256sum] = "1fd0c1d395372843fba13a51c28e3bb9d59bd7aebfeb17358ffaaa1e4dbbe948"
 
 DEPENDS = "python3-maturin-native python3-typing-extensions"
 
@@ -34,6 +34,17 @@
     python3-unittest-automake-output \
 "
 
+do_install:append() {
+    for f in ${D}/${libdir}/${PYTHON_DIR}/site-packages/pydantic_core/_pydantic_core.*.so
+    do
+        fname=`basename $f`
+        lname=`echo $fname | sed 's/musl/gnu/'`
+        if [ "$fname" != "$lname" ]; then
+            mv $f ${D}/${libdir}/${PYTHON_DIR}/site-packages/pydantic_core/$lname
+        fi
+    done
+}
+
 do_install_ptest() {
     cp -rf ${S}/tests/ ${D}${PTEST_PATH}/
     rm -rf ${D}${PTEST_PATH}/tests/benchmarks
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_3.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_3.2.0.bb
similarity index 73%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_3.1.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_3.2.0.bb
index 11f11b7..b7ee20e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_3.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pyflakes_3.2.0.bb
@@ -3,7 +3,7 @@
 LICENSE = "MIT"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=690c2d09203dc9e07c4083fc45ea981f"
 
-SRC_URI[sha256sum] = "a0aae034c444db0071aa077972ba4768d40c830d9539fd45bf4cd3f8f6992efc"
+SRC_URI[sha256sum] = "1c61603ff154621fb2a9172037d84dca3500def8c8b630657d1701f026f8af3f"
 
 inherit pypi setuptools3
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint/run-ptest b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint/run-ptest
index 7a5ceed..2a4e87e 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint/run-ptest
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint/run-ptest
@@ -1,3 +1,3 @@
 #!/bin/sh
 
-pytest --benchmark-disable -o log_cli=true -o log_cli_level=INFO | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
+pytest --benchmark-disable -vv --minimal-messages-config tests/test_functional.py | sed -e 's/\[...%\]//g'| sed -e 's/PASSED/PASS/g'| sed -e 's/FAILED/FAIL/g'|sed -e 's/SKIPPED/SKIP/g'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS"){printf "%s: %s\n", $NF, $0}else{print}}'| awk '{if ($NF=="PASS" || $NF=="FAIL" || $NF=="SKIP" || $NF=="XFAIL" || $NF=="XPASS") {$NF="";print $0}else{print}}'
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb
index 09ab1f2..cc33edd 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pylint_3.0.3.bb
@@ -46,6 +46,9 @@
     cp -rf ${S}/tests/* ${D}${PTEST_PATH}/tests/
     install -Dm 0644 ${S}/tests/.pylint_primer_tests/.gitkeep ${D}${PTEST_PATH}/tests/.pylint_primer_tests/.gitkeep
     sed -i 's#/usr/bin/python$#/usr/bin/python3#g' ${D}${PTEST_PATH}/tests/data/ascript
+    # regression_distutil_import_error_73.py fails to run see 
+    # https://lists.openembedded.org/g/openembedded-devel/topic/103181847
+    rm ${D}${PTEST_PATH}/tests/functional/r/regression_02/regression_distutil_import_error_73.py
 }
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.182.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.183.bb
similarity index 86%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.182.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.183.bb
index 12bf624..dec8186 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.182.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pymisp_2.4.183.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-2-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=a3639cf5780f71b125d3e9d1dc127c20"
 
-SRC_URI[sha256sum] = "888e848494e04148c8ff5887f04154a2b40f3065c53d93f9cec65f7ca7171362"
+SRC_URI[sha256sum] = "00abe5592f07bb1cd41ca803f9b0b8b2b70474004a779be53cd215280fd625b3"
 
 inherit python_poetry_core pypi
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.2.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.3.bb
similarity index 81%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.2.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.3.bb
index a00778c..85f69ac 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.2.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-asyncio_0.23.3.bb
@@ -3,7 +3,7 @@
 LICENSE = "Apache-2.0"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=136e4f49dbf29942c572a3a8f6e88a77"
 
-SRC_URI[sha256sum] = "c16052382554c7b22d48782ab3438d5b10f8cf7a4bdcae7f0f67f097d95beecc"
+SRC_URI[sha256sum] = "af313ce900a62fbe2b1aed18e37ad757f1ef9940c6b6a88e2954de38d6b1fb9f"
 
 inherit pypi python_setuptools_build_meta
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_4.1.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_4.1.0.bb
index 1ff3e75..3a68011 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_4.1.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-pytest-cov_4.1.0.bb
@@ -10,5 +10,6 @@
 inherit pypi setuptools3
 
 DEPENDS += "${PYTHON_PN}-setuptools-scm-native"
+RDEPENDS:${PN} += "python3-coverage"
 
 BBCLASSEXTEND = "native nativesdk"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.24.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.25.bb
similarity index 76%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.24.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.25.bb
index 91ab762..3501155 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.24.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-sqlalchemy_2.0.25.bb
@@ -2,9 +2,9 @@
 application developers the full power and flexibility of SQL"
 HOMEPAGE = "http://www.sqlalchemy.org/"
 LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=b707d50badb798e1d897f2c8f649382d"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=c78b979ae6c20775a28a287d32092cbb"
 
-SRC_URI[sha256sum] = "6db97656fd3fe3f7e5b077f12fa6adb5feb6e0b567a3e99f47ecf5f7ea0a09e3"
+SRC_URI[sha256sum] = "a2c69a7664fb2d54b8682dd774c3b54f67f84fa123cf84dda2a5f40dcaa04e08"
 
 PYPI_PACKAGE = "SQLAlchemy"
 inherit pypi setuptools3
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.1.bb
similarity index 76%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.0.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.1.bb
index 19ea011..0089d6c 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.0.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-traitlets_5.14.1.bb
@@ -3,7 +3,7 @@
 LICENSE = "BSD-3-Clause"
 LIC_FILES_CHKSUM = "file://LICENSE;md5=13bed0ee6f46a6f6dbf1f9f9572f250a"
 
-SRC_URI[sha256sum] = "fcdaa8ac49c04dfa0ed3ee3384ef6dfdb5d6f3741502be247279407679296772"
+SRC_URI[sha256sum] = "8585105b371a04b8316a43d5ce29c098575c2e477850b62b848b964f1444527e"
 
 inherit pypi python_hatchling
 
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-webargs_8.3.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-webargs_8.3.0.bb
deleted file mode 100644
index d8ce4ab..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-webargs_8.3.0.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-SUMMARY = "Declarative parsing and validation of HTTP request objects, with built-in support for popular web frameworks."
-HOMEPAGE = "https://github.com/marshmallow-code/webargs"
-LICENSE = "MIT"
-LIC_FILES_CHKSUM = "file://LICENSE;md5=c3ff8567ef1f2a8cf223f30ac5a6f094"
-
-inherit pypi setuptools3
-
-SRC_URI[sha256sum] = "cab207941b0686c4d086c823632ddcd4343151644341a32fcf50b8eaa71e31c7"
-
-RDEPENDS:${PN} += "\
-    python3-marshmallow \
-    python3-packaging \
-    "
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-webargs_8.4.0.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-webargs_8.4.0.bb
new file mode 100644
index 0000000..ea83080
--- /dev/null
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-webargs_8.4.0.bb
@@ -0,0 +1,17 @@
+SUMMARY = "Declarative parsing and validation of HTTP request objects, with built-in support for popular web frameworks."
+HOMEPAGE = "https://github.com/marshmallow-code/webargs"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=dfbd4ae0074716275fc229c775723e8f"
+
+inherit pypi setuptools3
+
+SRC_URI[sha256sum] = "ea99368214a4ce613924be99d71db58c269631e95eff4fa09b7354e52dc006a5"
+
+RDEPENDS:${PN} += "\
+    ${PYTHON_PN}-marshmallow \
+    ${PYTHON_PN}-packaging \
+    ${PYTHON_PN}-core \
+    ${PYTHON_PN}-json \
+    ${PYTHON_PN}-asyncio \
+    ${PYTHON_PN}-logging \
+"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.1.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.2.bb
similarity index 87%
rename from meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.1.bb
rename to meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.2.bb
index b57c311..1459538 100644
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.1.bb
+++ b/meta-openembedded/meta-python/recipes-devtools/python/python3-wtforms_3.1.2.bb
@@ -5,7 +5,7 @@
 
 LIC_FILES_CHKSUM = "file://LICENSE.rst;md5=17ed54aa95f4a6cd0d7a4747d14b64d0"
 
-SRC_URI[sha256sum] = "5e51df8af9a60f6beead75efa10975e97768825a82146a65c7cbf5b915990620"
+SRC_URI[sha256sum] = "f8d76180d7239c94c6322f7990ae1216dae3659b7aa1cee94b6318bdffb474b9"
 
 UPSTREAM_CHECK_URI = "https://pypi.python.org/pypi/WTForms"
 UPSTREAM_CHECK_REGEX = "/WTForms/(?P<pver>(\d+[\.\-_]*)+)"
diff --git a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb b/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb
deleted file mode 100644
index 7259c3f..0000000
--- a/meta-openembedded/meta-python/recipes-devtools/python/python3-xmlrunner_1.7.7.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-SUMMARY = "unittest-based test runner with Ant/JUnit like XML reporting"
-HOMEPAGE = "https://github.com/pycontribs/xmlrunner"
-LICENSE = "LGPL-3.0-only"
-LIC_FILES_CHKSUM = "file://PKG-INFO;md5=fa964f202b6ae067ed5828fe43c77c1a"
-
-SRC_URI[md5sum] = "7b0b152ed2d278516aedbc0cac22dfb3"
-SRC_URI[sha256sum] = "5a6113d049eca7646111ee657266966e5bbfb0b5ceb2e83ee0772e16d7110f39"
-
-inherit pypi setuptools3
-
-RDEPENDS:${PN} += "python3-unittest"