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
 
