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
+ 
